许可证:CC BY 4.0
arXiv:2311.00176v5 [cs.CL] 2024 年 4 月 4 日

ChipNeMo:芯片设计领域适应大语言模型

Mingjie Liu    Teodor-Dumitru Ene    Robert Kirby    Chris Cheng    Nathaniel Pinckney    Rongjian Liang    Jonah Alben    Himyanshu Anand    Sanmitra Banerjee    Ismet Bayraktaroglu    Bonita Bhaskaran    Bryan Catanzaro    Arjun Chaudhuri    Sharon Clay    Bill Dally    Laura Dang    Parikshit Deshpande    Siddhanth Dhodhi    Sameer Halepete    Eric Hill    Jiashang Hu    Sumit Jain    Ankit Jindal    Brucek Khailany    George Kokai    Kishor Kunal    Xiaowei Li    Charley Lind    Hao Liu    Stuart Oberman    Sujeet Omar    Ghasem Pasandi    Sreedhar Pratty    Jonathan Raiman    Ambar Sarkar    Zhengjiang Shao    Hanfei Sun    Pratik P Suthar    Varun Tej    Walker Turner    Kaizhe Xu    Haoxing Ren

ChipNeMo:芯片设计领域适应大语言模型

Mingjie Liu    Teodor-Dumitru Ene    Robert Kirby    Chris Cheng    Nathaniel Pinckney    Rongjian Liang    Jonah Alben    Himyanshu Anand    Sanmitra Banerjee    Ismet Bayraktaroglu    Bonita Bhaskaran    Bryan Catanzaro    Arjun Chaudhuri    Sharon Clay    Bill Dally    Laura Dang    Parikshit Deshpande    Siddhanth Dhodhi    Sameer Halepete    Eric Hill    Jiashang Hu    Sumit Jain    Ankit Jindal    Brucek Khailany    George Kokai    Kishor Kunal    Xiaowei Li    Charley Lind    Hao Liu    Stuart Oberman    Sujeet Omar    Ghasem Pasandi    Sreedhar Pratty    Jonathan Raiman    Ambar Sarkar    Zhengjiang Shao    Hanfei Sun    Pratik P Suthar    Varun Tej    Walker Turner    Kaizhe Xu    Haoxing Ren
摘要

ChipNeMo旨在探索大语言模型在工业芯片设计中的应用。 我们没有直接部署现成的商业或开源大语言模型,而是采用以下领域适应技术:领域自适应标记化、领域自适应持续预训练、与特定领域指令的模型对齐以及领域-适应的检索模型。 我们在三个选定的芯片设计大语言模型应用程序上评估这些方法:工程助理聊天机器人、EDA 脚本生成以及错误总结和分析。 我们的评估表明,与基础 LLaMA2 对应项相比,语言模型的领域自适应预训练可以在领域相关的下游任务中带来卓越的性能,而不会降低通用能力。 特别是,我们最大的模型 ChipNeMo-70B 在我们的两个用例(即工程助理聊天机器人和 EDA 脚本生成)上优于功能强大的 GPT-4,同时在错误总结和分析方面表现出有竞争力的性能。 这些结果强调了特定领域定制在增强专业应用程序中大型语言模型有效性方面的潜力。

大语言模型、领域适应、芯片设计、ICML

1简介

在过去的几十年里,电子设计自动化 (EDA) 算法和工具极大地提高了芯片设计效率。 再加上摩尔定律带来的晶体管密度呈指数级增长,EDA 使得能够开发具有数十亿个晶体管的功能丰富的复杂 SoC 设计。 最近,研究人员一直在探索如何将人工智能应用于 EDA 算法和芯片设计流程,以进一步提高芯片设计生产力(Khailany 等人,2020;Ren & Fojtik,2021;Roy 等人,2021) 然而,许多涉及与自然语言或编程语言交互的耗时芯片设计任务仍然没有实现自动化。 商业(ChatGPT、Bard 等)和开源(Vicuna (Chiang 等人, 2023)、LLaMA2 (Touvron 等人, 2023) 的最新进展,等)大型语言模型(大语言模型)提供了前所未有的机会来帮助自动化这些与语言相关的芯片设计任务。 事实上,早期的学术研究(Thakur 等人,2023;Blocklove 等人,2023;He 等人,2023)已经探索了大语言模型的应用,用于生成可以执行的寄存器传输级(RTL)代码小型设计模块中的简单任务以及为 EDA 工具生成脚本。

我们相信,大语言模型有潜力通过使用生成式人工智能来自动化许多与语言相关的芯片设计任务,例如代码生成、通过自然语言界面响应工程问题、分析和报告生成以及错误分类,从而提高芯片设计效率。 在本研究中,我们重点关注三个具体的大语言模型应用:一个面向 GPU ASIC 和架构设计工程师的工程助理聊天机器人,它了解内部硬件设计并能够解释复杂的设计主题; EDA 脚本生成,用于两个基于 Python 和 Tcl 的特定领域工具,用于英文指定的 VLSI 时序分析任务; 错误总结和分析作为内部错误和问题跟踪系统的一部分。

尽管经过大量互联网数据训练的通用大语言模型在跨不同领域的生成人工智能任务中表现出卓越的能力(如 (Bubeck 等人,2023) 所示),但最近的工作,例如 BloombergGPT (Wu 等人, 2023) 和 BioMedLLM (Venigalla 等人, 2022) 证明特定领域的大语言模型模型在特定领域的任务上可以优于通用模型。 在硬件设计领域,(Thakur 等人, 2023; Liu 等人, 2023)展示了开源大语言模型(CodeGen (Nijkamp 等人, 2023) )在额外的 Verilog 数据上进行微调可以超越最先进的 OpenAI GPT-3.5 模型。 以这种方式定制大语言模型还可以避免通过API向第三方大语言模型发送专有芯片设计数据相关的安全风险。 然而,从头开始为每个领域训练特定领域的模型将非常昂贵,因为这通常需要数百万个小时的 GPU 训练。 为了经济高效地训练特定领域的模型,我们建议结合以下技术:基础模型的领域自适应预训练(DAPT)(Gururangan 等人,2020) 与领域自适应分词器、使用通用和特定领域指令的模型对齐,以及使用训练有素的领域适应检索模型的检索增强生成 (RAG)(Lewis 等人,2021b)

Refer to caption
图1 ChipNeMo 训练流程

如图1所示,我们的方法是从基础模型开始,应用 DAPT,然后进行模型对齐。 DAPT,也称为使用域内数据进行持续预训练,已被证明在生物医学和计算机科学出版物、新闻和评论等领域有效。 在我们的例子中,我们从一系列专有的硬件相关代码(例如软件、RTL、验证测试平台等)和自然语言数据集(例如硬件规格、文档等)构建特定领域的预训练数据集。 我们清理并预处理原始数据集,然后使用特定领域的数据继续预训练基础模型。 我们将生成的模型称为 ChipNeMo 基础模型。 DAPT 是在预训练中使用的 Token 的一小部分上完成的,并且便宜得多,只需要大约 1.5% 的预训练计算。

大语言模型分词器将文本转换为用于训练和推理的标记序列。 适应域的分词器通过为特定于域的术语(例如 RTL 中常见的关键字)定制规则和模式来提高分词效率。 对于 DAPT,我们无法从头开始重新训练新的特定于域的分词器,因为这会使基础模型无效。 我们没有将 ChipNeMo 限制为基础模型使用的预先训练的通用分词器,而是将预先训练的分词器适应我们的芯片设计数据集,只为特定领域的术语添加新的分词器。

ChipNeMo 基础模型是完成模型,需要模型对齐才能适应聊天等任务。 我们使用大量公开的通用聊天指令数据集进行多轮聊天,并结合少量特定领域的指令数据集对 ChipNeMo 基础模型进行对齐,从而生成 ChipNeMo 聊天模型。 我们观察到,与通用聊天指令数据集的对齐足以将 ChipNeMo 基础模型与芯片设计领域中的查询对齐。 我们还添加了少量特定于任务的指令数据,这进一步改进了对齐。 我们基于用作基础模型的 LLaMA2 模型变体训练了多个 ChipNeMo 基础和聊天模型。

为了提高工程助理聊天机器人应用程序的性能,我们还利用检索增强生成 (RAG)。 RAG 是一种开放式书籍方法,为大语言模型提供用户查询的精确上下文。 它从其数据存储中检索相关的领域内知识,以增强给定用户查询的响应生成。 该方法在将模型扎根于特定问题的上下文方面显示出显着的改进。 至关重要的是,当使用领域数据微调预训练的检索模型时,我们观察到检索命中率显着提高。 这进一步提高了模型质量。

我们的结果表明,领域自适应预训练是提高特定领域任务性能的主要技术。 我们重点介绍以下将大语言模型应用于芯片设计领域的贡献和发现:

  • 我们在三个用例上展示了适应领域的大语言模型的有效性:工程助理聊天机器人、EDA 工具脚本生成以及错误总结和分析。 根据专家评估,我们的工程助理聊天机器人在 7 分李克特量表上获得了 6.0 分,在生成简单 EDA 脚本方面的正确性超过 70%,在总结和作业识别方面,专家评估评级在 7 分量表上超过 5 分任务。

  • 领域适应的 ChipNeMo 模型显着优于在多项选择特定领域 AutoEval 基准和应用程序人工评估上评估的所有普通大语言模型。

  • 与传统 SFT 相比,使用 SteerLM 对齐方法(Dong 等人,2023) 将工程助理聊天机器人的人类评估分数在 7 分 Likert 量表上提高了 0.62 分。

  • 额外的 1.4K 特定于域的指令上的 SFT 通过 18% 显着提高了模型生成正确 EDA 工具脚本的能力。

  • 域自适应标记化可将域数据词符计数减少多达 3.3%,而不会损害应用程序的有效性。

  • 使用特定领域的数据微调我们的 ChipNeMo 检索模型,与预先训练的最先进检索器相比,检索器命中率提高了 30%,从而提高了 RAG 响应的整体质量。

本文的结构如下。 2 节概述了所使用的领域适应和训练方法,包括适应的分词器、DAPT、模型对齐和 RAG。 3 部分描述了实验结果,包括对每个应用程序的人工评估。 4节描述了相关的大语言模型方法以及针对芯片设计的大语言模型的其他工作。 最后,附录中说明了详细结果以及其他模型训练详细信息和应用程序用例生成的文本示例。

2 ChipNeMo域适应方法

ChipNeMo实现了多种领域适应技术,使大语言模型适应芯片设计领域。 这些技术包括芯片设计数据的领域自适应标记化、利用大量领域数据进行领域自适应预训练、与领域特定任务的模型对齐,以及利用微调检索模型进行检索增强生成。 我们将在本节中详细说明每种技术。

2.1 域自适应标记化

当采用预训练的分词器时,主要目标是提高特定领域数据的分词效率,保持通用数据集上的语言模型性能,并最大限度地减少重新训练/微调的工作量。 为了实现这一目标,我们开发了以下方法:

  1. 1.

    使用特定于域的数据从头开始训练分词器。

  2. 2.

    从新分词器的词汇表中,识别通用分词器中不存在且在通用数据集中很少找到的标记。

  3. 3.

    使用步骤 2 中新识别的标记扩展通用标记生成器。

  4. 4.

    利用通用标记生成器初始化新标记的模型嵌入。

具体来说,对于步骤 4,当遇到新的词符时,首先使用原始预训练的通用分词器对其进行重新分词。 大语言模型新词符的词符嵌入是通过对通用分词器生成的标记的嵌入进行平均来确定的(Koto等人,2021) 大语言模型的新标记的最终输出层权重被初始化为零。

步骤 2 通过有选择地引入通用数据集中不经常遇到的新标记,有助于维持预训练的大语言模型在通用数据集上的性能。 步骤 4 通过通用分词器引导的新分词嵌入的初始化,减少了重新训练或微调大语言模型所需的工作量。

2.2 领域自适应预训练

在我们的研究中,我们将 DAPT 应用于预训练的基础模型:LLaMA2 7B/13B/70B。 每个 DAPT 模型均使用其相应的预训练基础模型的权重进行初始化。 我们将域适应模型命名为 ChipNeMo 我们采用 2.1 节中所述的分词器增强,并相应地初始化嵌入权重(Koto 等人, 2021) 我们通过采用标准自回归语言建模目标对特定领域的数据进行进一步的预训练。 所有模型训练过程均使用 NVIDIA NeMo 框架(Kuchaiev 等人,2019) 进行,结合张量并行性(Shoeybi 等人,2019) 和 Flash Attention 等技术(Dao 等人, 2022) 以提高效率。

我们的模型采用相似的配置进行一致的训练方案。 采用 5106 的小学习率,并且使用 Adam 优化器促进训练,而不使用学习率调度程序。 全局批量大小设置为 256,并应用 4096 个 Token 的上下文窗口,从而产生 1M Token 的有效批量大小。 训练步骤总数设置为 23,200,大约相当于数据混合的 1 个时期。

Refer to caption
图2 通过 Tokenizer 增强平滑了 ChipNeMo 的训练损失。

2说明了ChipNeMo在指定超参数下的训练损失。 我们确实观察到训练损失的峰值。 (Chowdhery 等人, 2022) 中的假设相反,我们假设在我们的场景中,这些峰值可以归因于“坏数据”,因为这些不规则性似乎始终出现在类似的训练步骤中同一型号,甚至不同型号尺寸。 我们选择不解决这个问题,因为这些异常似乎并没有显着阻碍后续的训练步骤(验证损失没有明显下降),这可能是由于我们应用了低学习率。

我们建议读者参阅附录,了解有关训练数据收集过程A.2、数据混合A.3的详细信息,以及领域自适应预训练的实施细节和消融研究A.6

2.3模型对齐

DAPT之后,我们进行模型对齐。 我们特别利用两种对齐技术:监督微调(SFT)和 SteerLM (Dong 等人,2023) 我们对所有模型采用与 DAPT 相同的超参数训练配置,但使用缩小的全局批量大小 128 除外。 我们采用自回归优化目标,实施一种策略,其中与源自系统和用户提示的 Token 相关的损失被屏蔽(Touvron等人,2023) 这种方法确保在反向传播期间,我们的注意力完全集中在答案标记的优化上。

我们将包含大约 1.4k 个样本的域对齐数据集与更大的通用聊天数据集相结合。 对于 SFT,我们将领域指导数据与 128k 商业可行的聊天数据混合,然后在随机洗牌后对单个 epoch 进行微调。 我们进行了涉及多个时期的特定领域 SFT 数据集扩充的实验。 然而,很明显,当提出域内问题时,模型很快就表现出过度拟合的迹象,经常重复域 SFT 数据集中的不相关答案。 对于 SteerLM,我们严格遵循(Wang 等人,2023)中概述的步骤。 我们首先在 HelpSteer 和 OASST 数据集上训练用 LLaMA2-13B 模型实例化的属性模型。 然后,我们使用属性模型来标记 OASST 数据和领域教学数据的所有属性。 最后,我们进行了属性条件微调,并屏蔽了属性标签,并在 ChipNeMo 模型上进行了 2 个 epoch 的训练。 我们建议读者参阅附录A.4以了解对齐数据集的详细信息,并参考A.7了解实现的详细信息。

我们还直接在聊天对齐模型(例如 LLaMA2-Chat 模型)上尝试了 DAPT。 我们发现 DAPT 显着降低了模型的对齐度,使得生成的模型对下游任务毫无用处。

2.4适应领域的检索模型

众所周知,大语言模型会生成不准确的文本,即所谓的幻觉(Ji等人,2023) 尽管这种现象尚未完全被理解,但我们仍然必须减轻幻觉,因为它们在工程助理聊天机器人环境中尤其成问题,而准确性至关重要。 我们的建议是利用检索增强生成(RAG)方法。 RAG尝试从数据库中检索相关段落并与问题一起包含在提示中,这为大语言模型提供更准确的答案奠定了基础。 我们发现,使用 RAG 的领域适应语言模型可以显着提高特定领域问题的答案质量。 此外,我们发现使用适量的领域特定训练数据对现成的无监督预训练密集检索模型进行微调可以显着提高检索准确性。 我们的域自适应 RAG 实现图如图 3 所示。

Refer to caption
图3 RAG 实施变体

我们通过使用 Tevatron 框架使用 3000 个特定领域自动生成的样本对 e5_small_unsupervised 模型(Wang 等人,2022) 进行微调,创建了适应领域的检索模型 (高等人,2022) 我们建议读者参阅附录A.8中有关样本生成和训练过程的详细信息。

即使微调检索模型带来了显着收益,事实仍然是,检索仍然难以处理那些不直接映射到文档语料库中的段落或需要段落中不存在的更多上下文的查询。 不幸的是,这些查询也更能代表工程师在实际情况下提出的查询。 将检索与适应领域的语言模型相结合是解决此问题的一种方法。

3 评估

我们在本节中评估我们的训练方法和应用程序性能。 我们在训练方法评估中研究了 7B、13B 和 70B 模型,在应用程序性能评估中仅研究了使用 SteerLM 进行模型对齐的 ChipNeMo-70B 模型。 为了进行比较,我们还评估了两个基线聊天模型:LLaMA2-70B-Chat 和 GPT-4。 LLaMA2-70B-Chat 是公开发布的使用 RLHF 训练的 LLaMA2-Chat 模型,被认为是最先进的开源聊天模型,而 GPT-4 被认为是最先进的-艺术专有聊天模型。

Refer to caption
图4 领域适应的 ChipNeMo 分词器改进。

3.1 域自适应标记化

我们使用前面概述的四步过程将 LLaMA2 标记器(包含 32K 标记)调整为芯片设计数据集。 LLaMA2 标记生成器中添加了大约 9K 个新标记。 经过调整的分词器可以在各种芯片设计数据集中将分词效率提高 1.6% 至 3.3%,如图 4 所示。 我们观察到公共数据的分词器效率没有明显变化。 重要的是,即使在 DAPT 之前,我们也没有观察到在使用域自适应分词器时大语言模型在公共基准上的准确性显着下降。

3.2 领域自适应预训练

Refer to caption
图5 ChipNeMo 的芯片域基准测试结果。

5展示了ChipNeMo模型在芯片设计领域AutoEval基准上的结果(详见附录A.5)。 开放域学术基准测试结果见附录A.6 我们的研究结果可概括如下:

  • DAPT 对域本身内的任务产生了巨大的积极影响。 这种效果体现在内部设计知识以及一般电路设计知识的显着提高。

  • DAPT 模型在开放域学术基准上表现出轻微的性能下降。

  • 使用更大、性能更强的基础模型可以在特定领域的任务上产生更好的零样本结果。 此外,高级基础模型的使用可以增强 DAPT 后的领域模型,从而提高域内任务的性能。

  • 领域内任务的 DAPT 带来的改进与模型大小呈正相关,较大的模型在特定领域的任务性能方面表现出更明显的增强。

3.3 训练消融研究

对于我们的消融研究,我们进行了多轮领域自适应预训练。 我们提供了简短的总结,详细信息请参阅附录A.6

使用增强标记器和原始标记器进行训练之间的差异似乎可以忽略不计。 因此,我们主要将开放领域学术基准的准确性下降归因于领域数据。 此外,删除公共数据集在包括学术基准在内的大多数任务上仅略有倒退。

在我们的探索中,我们尝试采用更大的学习率,如 CodeLLaMA (Rozière 等人,2023) 我们观察到在最初的训练步骤中训练损失出现了很大的峰值。 尽管这种方法最终改善了训练和验证损失,但我们注意到除编码外,所有特定领域和学术基准的大幅退化。 我们假设较小的学习率发挥双重作用,通过 DAPT 促进领域知识的提炼,同时保持不偏离基本模型太远的平衡,从而保留一般的自然语言能力。

我们还探索了参数高效微调(PEFT)在域自适应预训练(DAPT)背景下的应用。 为此,我们进行了两项涉及 LoRA 适配器合并的实验(胡等人,2021),分别引入了 2640 万(小)和 2.112 亿(大)的额外参数。 在这两种情况下,我们的研究结果都表明,与全参数 DAPT 方法相比,域内任务的准确性存在显着差距。 此外,在对比小型和大型 PEFT 模型之间的结果时,我们观察到域内任务准确性略有提高,而大型适配器则表现出轻微的改善。

3.4培训成本

所有模型均使用 128 个 A100 GPU 进行训练。 我们估计了与 ChipNeMo 的域自适应预训练相关的成本,如表 1 所示。 值得注意的是,DAPT 占从头开始预训练基础模型总成本的不到 1.5%。

Model Size Pretraining DAPT SFT
7B 184,320 2,620 90
13B 368,640 4,940 160
70B 1,720,320 20,500 840
表格1: A100 GPU 小时内 LLaMA2 模型的训练成本。 预训练费用来自 (Touvron 等人, 2023)

3.5 RAG 和工程助理聊天机器人

我们创建了一个基准来评估设计聊天辅助的性能,该基准使用 RAG 方法。 该基准测试包括三类 88 个问题:架构/设计/验证规范 (Specs)、测试平台回归文档 (Testbench) 和构建基础设施文档 (Build)。 对于每个问题,我们指定黄金答案以及设计文档中包含答案相关知识的段落。 这些问题是由设计人员根据一组设计文档手动创建的,作为检索的数据存储。 它包括约 1.8K 文档,被分为 67K 段落,每段约 512 个字符。

首先,我们将我们的领域适应检索模型与 Sentence Transformer (Reimers & Gurevych, 2019)e5_small_unsupervised (Wang 等人,2022) 进行比较每个类别。 每个模型从数据存储中获取前 8 个段落。

如图6所示,我们的领域适应模型的性能比原始e5_small_unsupervised模型好2倍,比sentence Transformer好30%。

Refer to caption
图6 检索模型准确率比较

规格类别中的查询直接源自文档中的段落,因此它们的答案通常很好地包含在简洁的段落中,并清楚地解决了查询。 另一方面,测试平台和构建类别的查询并不是直接从段落中派生的,因此它们的答案通常在获取的段落中不那么明显,并且需要更多上下文(请参阅附录A.8了解详细示例)。 这极大地导致了类别之间检索质量的差异。

Refer to caption
图7 对不同模型的人类评估。 模型仅代表不带 RAG 的结果。 RAG(命中)/(未命中)仅包括检索到的段落命中/未命中其理想上下文的问题,RAG(平均)包括所有问题。 7 点李克特量表。

我们对使用和不使用 RAG 的多个 ChipNeMo 模型和 LLaMA2 模型进行了评估。 然后由人类评估者按照 7 点李克特量表对结果进行评分,如图 7 所示。 我们强调以下几点:

  • ChipNeMo-70B-Steer 在所有类别中都优于 GPT-4,包括 RAG 未命中和命中。

  • 在仅模型和 RAG 评估中,ChipNeMo-70B-Steer 的性能分别优于类似大小的 LLaMA2-70b-Chat 3.31 和 1.81。

我们的结果表明,RAG 显着提高了人类得分。 RAG 分别将 ChipNeMo-70B-Steer、GPT-4 和 LLaMA2-70b-Chat 提高了 0.56、1.68 和 2.05。 即使 RAG 未命中,分数通常也比不使用检索时要高。 包含相关的域内上下文仍然可以提高性能,因为检索不是严格的二元结果。 此外,虽然 ChipNeMo-70B-SFT 通过传统的监督微调大大优于 GPT4,但应用 SteerLM 方法(Wang 等人,2023) 可以进一步提高聊天机器人评级。 我们建议读者参阅附录17中的完整评估结果。

3.6 EDA脚本生成

为了在 EDA 脚本生成任务上评估我们的模型,我们创建了两种不同类型的基准。 第一个是一组“简单”和“中等”难度任务(1-4 行解决方案),可以通过与黄金响应进行比较或比较代码执行后生成的输出来进行评估,无需人工干预。 第二组“困难”任务来自我们的工程师选择的真实用例场景。 这些任务要困难得多,需要多次 API 调用并了解不同 VLSI 对象之间的关系。 由于这些很难以自动化方式评估(以当前模型性能),因此我们让人类工程师在 0-10 之间判断正确性。 我们使用两种工具评估模型,一种是完全基于 Python 的内部工具,另一种是基于 Tcl 的 EDA 工具,公共数据有限。 2中描述了这些基准的大小。 我们正在努力扩大这些基准的规模和范围,以便我们能够进一步评估和改进这些模型。

Evaluation Benchmark Name Size
Python Tool - Automatic (Easy) 146
Python Tool - Automatic (Medium) 28
Python Tool - Human (Hard) 25
Tcl Tool - Automatic (Easy) 708
Tcl Tool - Automatic (Medium) 27
Tcl Tool - Human (Hard) 25
表2: EDA 脚本生成评估基准

我们的模型在这些评估中的比较性能如图89所示。 8 显示了自动化“简单”和“中等”基准测试的结果,我们在其中检查代码是否完全准确。 对于图 9 中的“硬”基准测试,我们检查代码的部分正确性,由人类用户按 0-10 等级进行评估。 ChipNeMo-70B-Steer 的性能明显优于现成的 GPT-4 和 LLaMA2-70B-Chat 模型。

Refer to caption
图8 EDA 脚本生成评估结果,通过@5
Refer to caption
图9 EDA 脚本生成评估结果,单生成(温度 = 0),人工评估 0-10 分制。

如图8所示,GPT-4和LLaMA2-70B-Chat等模型对于Python工具的精度接近于零,其中需要与工具的API相关的领域知识。 由此可见DAPT的重要性。 如果没有 DAPT,该模型对底层 API 几乎不了解,并且在自动和人工评估的基准测试中表现不佳。 我们的对齐模型进一步改进了 DAPT 的结果,因为我们的领域指导数据有助于指导模型以最有用的方式呈现最终脚本。 附录A.9提供了关于包含领域指导数据以进行模型对齐和检索应用的消融研究。

我们的非领域模型在 Tcl 工具上的表现比 Python 工具更好,但我们的领域训练模型的趋势却相反。 我们怀疑这是由于我们的 Python 工具的专有性质造成的。 如果不了解 API,一般的大语言模型很难在我们的 Python 工具基准测试中表现良好。 由于 ChipNeMo 是使用领域数据进行训练的,因此基础模型固有的 Python 编码能力使 ChipNeMo-70B-Steer 能够表现得更好。 这再次凸显了 DAPT 对于小批量或专有编程语言的重要性。

Refer to caption
图10 Bug 总结和分析评估结果,7 点李克特量表。

3.7Bug总结与分析

为了评估我们的错误总结和分析模型,我们保留了 30 个错误,它们是总结的理想候选者。 这包括拥有很长的评论历史记录或其他数据,这使得人们很难快速总结错误。 如附录A.10.3所述,每个bug的长度较长,需要大语言模型进行分层汇总。

我们研究三个独立的子任务:专注于技术细节的总结、专注于管理细节的总结以及任务分配的总结后建议。 参与者的任务是按照 7 点李克特量表对这三项任务中的每一项任务的模型表现进行评分。 结果如图10所示。 尽管 GPT-4 模型在所有三项任务中均表现出色,优于我们的 ChipNeMo-70B-Steer 模型和 LLaMA2-70B-Chat 模型,但与现成的同等产品的 LLaMA 模型相比,ChipNeMo-70B-Steer 确实表现出了增强功能尺寸。 与其他用例相比,我们将领域适应导致的摘要任务的改进相对较低归因于摘要中特定领域知识的必要性有限。

4相关作品

许多领域都有大量的专有数据,可用于训练特定领域的大语言模型。 一种方法是从头开始训练特定领域的基础模型,例如金融领域的 BloombergGPT(Wu 等人, 2023)、生物医学领域的 BioMedLLM(Venigalla 等人, 2022) ,以及科学领域的《卡拉狄加》(Taylor 等人,2022) 这些模型通常在超过 100B 个 Token 的原始域数据上进行训练。 第二种方法是领域自适应预训练 (DAPT) (Gururangan 等人, 2020),它继续在额外的原始域数据上训练预训练的基础模型。 它显示出生物医学、计算机科学出版物、新闻和评论等领域特定任务的性能略有提升。 在一个示例中,(Lewkowycz 等人,2022) 在技术内容数据集上继续预训练基础模型,并在许多定量推理任务上实现了最先进的性能。

检索增强生成(RAG)帮助大语言模型生成准确的信息并提取最新信息以改进知识密集型 NLP 任务(Lewis 等人,2021a) 据观察,具有 RAG 的较小模型可以优于不具有 RAG 的较大模型(Borgeaud 等人,2022) 检索方法包括TF-IDF或BM25(Robertson & Zaragoza, 2009)等稀疏检索方法,这些方法分析词统计信息并通过高维稀疏向量查找匹配文档。 诸如(Karpukhin 等人, 2020; Izacard 等人, 2022a) 之类的密集检索方法在由在大型语料库上预训练的检索模型生成的嵌入空间上查找匹配文档,无论是否经过微调检索数据集。 检索模型可以单独训练(Karpukhin 等人,2020;Izacard 等人,2022a;Shi 等人,2023),也可以与语言模型(Izacard 等人,2022b;Borgeaud 等)联合训练人,2022) 此外,事实证明,现成的通用检索器可以显着改进基线语言模型,而无需进一步微调(Ram等人,2023) RAG还建议通过从编码文档中检索来执行代码生成任务(Zhou等人,2023)

基础模型是完成模型,其聊天和指令跟踪功能有限。 因此,对基础模型应用模型对齐过程来训练相应的聊天模型。 指令微调(Wei等人,2022)和基于人类反馈的强化学习(RLHF)(Ouyang等人,2022)是两种常见的模型对齐技术。 指令微调使用指令数据集进一步训练基础模型。 RLHF 利用人类反馈来标记数据集以训练奖励模型,并应用强化学习来进一步改进给定训练奖励模型的模型。 RLHF 通常比指令微调更复杂且更需要资源。 因此,最近的研究也提出通过更简单的方法来减少这种开销,例如 DPO (Rafailov 等人, 2023) 和 SteerLM (Dong 等人, 2023)

研究人员已经开始将大语言模型应用于芯片设计问题。 早期的作品如 Dave (Pearce 等人, 2020) 首先探索了用语言模型(GPT-2)从英语生成 Verilog 的可能性。 继该工作之后,(Thakur 等人,2023) 表明,在从 GitHub 和 Verilog 教科书收集的 Verilog 数据集上进行微调的开源大语言模型 (CodeGen) 的性能优于最先进的 OpenAI模型,例如针对 17 个 Verilog 问题的 code-davinci-002 (刘等人,2023)提出了超过150个问题的基准,并证明预训练语言模型的Verilog代码生成能力可以通过大语言模型生成的综合引导引导进行监督微调来提高问题代码对。 Chip-Chat (Blocklove 等人,2023) 尝试使用对话流来设计和验证使用 GPT-4 和 GPT-3.5 的基于累加器的 8 位微处理器。 他们的研究结果表明,尽管 GPT-4 生成了相对高质量的代码,但它在理解和修复错误方面仍然表现得不够好。 ChipEDA(何等人, 2023)提出使用大语言模型来生成EDA工具脚本。 它还表明,经过微调的 LLaMA2 70B 模型在此任务上优于 GPT-4 模型。

5结论

我们探索了适应领域的方法来提高工业芯片设计任务的大语言模型性能。 我们的结果表明,领域自适应预训练模型(例如 ChipNeMo 的 7B、13B 和 70B 变体)比其基本 LLaMA2 模型取得了相似或更好的结果,而仅需要 1.5% 的额外预训练计算成本。 我们最大的训练模型 ChipNeMo-70B 在我们的两个用例(工程助理聊天机器人和 EDA 脚本生成)上也超越了功能更强大的 GPT-4,同时在错误总结和分析方面表现出具有竞争力的性能。 我们未来的工作将集中于进一步改进 ChipNeMo 模型和方法以供生产使用。

参考

  • Blocklove et al. (2023) Blocklove, J., Garg, S., Karri, R., and Pearce, H. Chip-chat: Challenges and opportunities in conversational hardware design, 2023.
  • Borgeaud et al. (2022) Borgeaud, S., Mensch, A., Hoffmann, J., Cai, T., Rutherford, E., Millican, K., van den Driessche, G., Lespiau, J.-B., Damoc, B., Clark, A., de Las Casas, D., Guy, A., Menick, J., Ring, R., Hennigan, T., Huang, S., Maggiore, L., Jones, C., Cassirer, A., Brock, A., Paganini, M., Irving, G., Vinyals, O., Osindero, S., Simonyan, K., Rae, J. W., Elsen, E., and Sifre, L. Improving language models by retrieving from trillions of tokens, 2022.
  • Bubeck et al. (2023) Bubeck, S., Chandrasekaran, V., Eldan, R., Gehrke, J., Horvitz, E., Kamar, E., Lee, P., Lee, Y. T., Li, Y., Lundberg, S., Nori, H., Palangi, H., Ribeiro, M. T., and Zhang, Y. Sparks of artificial general intelligence: Early experiments with gpt-4, 2023.
  • Chen et al. (2021) Chen, M., Tworek, J., Jun, H., Yuan, Q., de Oliveira Pinto, H. P., Kaplan, J., Edwards, H., Burda, Y., Joseph, N., Brockman, G., Ray, A., Puri, R., Krueger, G., Petrov, M., Khlaaf, H., Sastry, G., Mishkin, P., Chan, B., Gray, S., Ryder, N., Pavlov, M., Power, A., Kaiser, L., Bavarian, M., Winter, C., Tillet, P., Such, F. P., Cummings, D., Plappert, M., Chantzis, F., Barnes, E., Herbert-Voss, A., Guss, W. H., Nichol, A., Paino, A., Tezak, N., Tang, J., Babuschkin, I., Balaji, S., Jain, S., Saunders, W., Hesse, C., Carr, A. N., Leike, J., Achiam, J., Misra, V., Morikawa, E., Radford, A., Knight, M., Brundage, M., Murati, M., Mayer, K., Welinder, P., McGrew, B., Amodei, D., McCandlish, S., Sutskever, I., and Zaremba, W. Evaluating large language models trained on code, 2021.
  • Chiang et al. (2023) Chiang, W.-L., Li, Z., Lin, Z., Sheng, Y., Wu, Z., Zhang, H., Zheng, L., Zhuang, S., Zhuang, Y., Gonzalez, J. E., Stoica, I., and Xing, E. P. Vicuna: An open-source chatbot impressing gpt-4 with 90%* chatgpt quality, March 2023. URL https://lmsys.org/blog/2023-03-30-vicuna/.
  • Chowdhery et al. (2022) Chowdhery, A., Narang, S., Devlin, J., Bosma, M., Mishra, G., Roberts, A., Barham, P., Chung, H. W., Sutton, C., Gehrmann, S., Schuh, P., Shi, K., Tsvyashchenko, S., Maynez, J., Rao, A., Barnes, P., Tay, Y., Shazeer, N., Prabhakaran, V., Reif, E., Du, N., Hutchinson, B., Pope, R., Bradbury, J., Austin, J., Isard, M., Gur-Ari, G., Yin, P., Duke, T., Levskaya, A., Ghemawat, S., Dev, S., Michalewski, H., Garcia, X., Misra, V., Robinson, K., Fedus, L., Zhou, D., Ippolito, D., Luan, D., Lim, H., Zoph, B., Spiridonov, A., Sepassi, R., Dohan, D., Agrawal, S., Omernick, M., Dai, A. M., Pillai, T. S., Pellat, M., Lewkowycz, A., Moreira, E., Child, R., Polozov, O., Lee, K., Zhou, Z., Wang, X., Saeta, B., Diaz, M., Firat, O., Catasta, M., Wei, J., Meier-Hellstern, K., Eck, D., Dean, J., Petrov, S., and Fiedel, N. Palm: Scaling language modeling with pathways, 2022.
  • Clark et al. (2018) Clark, P., Cowhey, I., Etzioni, O., Khot, T., Sabharwal, A., Schoenick, C., and Tafjord, O. Think you have solved question answering? try arc, the ai2 reasoning challenge, 2018.
  • Dao et al. (2022) Dao, T., Fu, D. Y., Ermon, S., Rudra, A., and Ré, C. FlashAttention: Fast and memory-efficient exact attention with IO-awareness. In Advances in Neural Information Processing Systems, 2022.
  • Dong et al. (2023) Dong, Y., Wang, Z., Sreedhar, M. N., Wu, X., and Kuchaiev, O. Steerlm: Attribute conditioned sft as an (user-steerable) alternative to rlhf, 2023.
  • Gao et al. (2020) Gao, L., Biderman, S., Black, S., Golding, L., Hoppe, T., Foster, C., Phang, J., He, H., Thite, A., Nabeshima, N., Presser, S., and Leahy, C. The pile: An 800gb dataset of diverse text for language modeling, 2020.
  • Gao et al. (2022) Gao, L., Ma, X., Lin, J., and Callan, J. Tevatron: An efficient and flexible toolkit for dense retrieval, 2022.
  • Gao et al. (2024) Gao, Y., Xiong, Y., Gao, X., Jia, K., Pan, J., Bi, Y., Dai, Y., Sun, J., Guo, Q., Wang, M., and Wang, H. Retrieval-augmented generation for large language models: A survey, 2024.
  • Gururangan et al. (2020) Gururangan, S., Marasović, A., Swayamdipta, S., Lo, K., Beltagy, I., Downey, D., and Smith, N. A. Don’t stop pretraining: Adapt language models to domains and tasks, 2020.
  • He et al. (2023) He, Z., Wu, H., Zhang, X., Yao, X., Zheng, S., Zheng, H., and Yu, B. Chateda: A large language model powered autonomous agent for eda, 2023.
  • Hendrycks et al. (2021) Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D., and Steinhardt, J. Measuring massive multitask language understanding, 2021.
  • Hu et al. (2021) Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., and Chen, W. Lora: Low-rank adaptation of large language models. CoRR, abs/2106.09685, 2021. URL https://arxiv.org/abs/2106.09685.
  • Izacard et al. (2022a) Izacard, G., Caron, M., Hosseini, L., Riedel, S., Bojanowski, P., Joulin, A., and Grave, E. Unsupervised dense information retrieval with contrastive learning, 2022a.
  • Izacard et al. (2022b) Izacard, G., Lewis, P., Lomeli, M., Hosseini, L., Petroni, F., Schick, T., Dwivedi-Yu, J., Joulin, A., Riedel, S., and Grave, E. Atlas: Few-shot learning with retrieval augmented language models, 2022b.
  • Ji et al. (2023) Ji, Z., Lee, N., Frieske, R., Yu, T., Su, D., Xu, Y., Ishii, E., Bang, Y. J., Madotto, A., and Fung, P. Survey of hallucination in natural language generation. ACM Comput. Surv., 55(12), mar 2023. ISSN 0360-0300. doi: 10.1145/3571730. URL https://doi.org/10.1145/3571730.
  • Karpukhin et al. (2020) Karpukhin, V., Oğuz, B., Min, S., Lewis, P., Wu, L., Edunov, S., Chen, D., and tau Yih, W. Dense passage retrieval for open-domain question answering, 2020.
  • Khailany et al. (2020) Khailany, B., Ren, H., Dai, S., Godil, S., Keller, B., Kirby, R., Klinefelter, A., Venkatesan, R., Zhang, Y., Catanzaro, B., and Dally, W. J. Accelerating chip design with machine learning. IEEE Micro, 40(6):23–32, 2020. doi: 10.1109/MM.2020.3026231.
  • Kocetkov et al. (2022) Kocetkov, D., Li, R., Allal, L. B., Li, J., Mou, C., Ferrandis, C. M., Jernite, Y., Mitchell, M., Hughes, S., Wolf, T., Bahdanau, D., von Werra, L., and de Vries, H. The stack: 3 tb of permissively licensed source code, 2022.
  • Koto et al. (2021) Koto, F., Lau, J. H., and Baldwin, T. IndoBERTweet: A pretrained language model for Indonesian Twitter with effective domain-specific vocabulary initialization. In Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing, pp. 10660–10668, November 2021.
  • Kuchaiev et al. (2019) Kuchaiev, O., Li, J., Nguyen, H., Hrinchuk, O., Leary, R., Ginsburg, B., Kriman, S., Beliaev, S., Lavrukhin, V., Cook, J., Castonguay, P., Popova, M., Huang, J., and Cohen, J. M. Nemo: a toolkit for building ai applications using neural modules, 2019.
  • Köpf et al. (2023) Köpf, A., Kilcher, Y., von Rütte, D., Anagnostidis, S., Tam, Z.-R., Stevens, K., Barhoum, A., Duc, N. M., Stanley, O., Nagyfi, R., ES, S., Suri, S., Glushkov, D., Dantuluri, A., Maguire, A., Schuhmann, C., Nguyen, H., and Mattick, A. Openassistant conversations – democratizing large language model alignment, 2023.
  • Lai et al. (2017) Lai, G., Xie, Q., Liu, H., Yang, Y., and Hovy, E. Race: Large-scale reading comprehension dataset from examinations, 2017.
  • Lewis et al. (2021a) Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., Küttler, H., Lewis, M., tau Yih, W., Rocktäschel, T., Riedel, S., and Kiela, D. Retrieval-augmented generation for knowledge-intensive nlp tasks, 2021a.
  • Lewis et al. (2021b) Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., Küttler, H., Lewis, M., tau Yih, W., Rocktäschel, T., Riedel, S., and Kiela, D. Retrieval-augmented generation for knowledge-intensive nlp tasks, 2021b.
  • Lewkowycz et al. (2022) Lewkowycz, A., Andreassen, A., Dohan, D., Dyer, E., Michalewski, H., Ramasesh, V., Slone, A., Anil, C., Schlag, I., Gutman-Solo, T., Wu, Y., Neyshabur, B., Gur-Ari, G., and Misra, V. Solving quantitative reasoning problems with language models, 2022.
  • Liu et al. (2023) Liu, M., Pinckney, N., Khailany, B., and Ren, H. VerilogEval: evaluating large language models for verilog code generation. In 2023 IEEE/ACM International Conference on Computer-Aided Design (ICCAD), 2023.
  • Nijkamp et al. (2023) Nijkamp, E., Pang, B., Hayashi, H., Tu, L., Wang, H., Zhou, Y., Savarese, S., and Xiong, C. Codegen: An open large language model for code with multi-turn program synthesis. ICLR, 2023.
  • OpenAI et al. (2023) OpenAI, :, Achiam, J., Adler, S., Agarwal, S., Ahmad, L., Akkaya, I., Aleman, F. L., Almeida, D., Altenschmidt, J., Altman, S., Anadkat, S., Avila, R., Babuschkin, I., Balaji, S., Balcom, V., Baltescu, P., Bao, H., Bavarian, M., Belgum, J., Bello, I., Berdine, J., Bernadett-Shapiro, G., Berner, C., Bogdonoff, L., Boiko, O., Boyd, M., Brakman, A.-L., Brockman, G., Brooks, T., Brundage, M., Button, K., Cai, T., Campbell, R., Cann, A., Carey, B., Carlson, C., Carmichael, R., Chan, B., Chang, C., Chantzis, F., Chen, D., Chen, S., Chen, R., Chen, J., Chen, M., Chess, B., Cho, C., Chu, C., Chung, H. W., Cummings, D., Currier, J., Dai, Y., Decareaux, C., Degry, T., Deutsch, N., Deville, D., Dhar, A., Dohan, D., Dowling, S., Dunning, S., Ecoffet, A., Eleti, A., Eloundou, T., Farhi, D., Fedus, L., Felix, N., Fishman, S. P., Forte, J., Fulford, I., Gao, L., Georges, E., Gibson, C., Goel, V., Gogineni, T., Goh, G., Gontijo-Lopes, R., Gordon, J., Grafstein, M., Gray, S., Greene, R., Gross, J., Gu, S. S., Guo, Y., Hallacy, C., Han, J., Harris, J., He, Y., Heaton, M., Heidecke, J., Hesse, C., Hickey, A., Hickey, W., Hoeschele, P., Houghton, B., Hsu, K., Hu, S., Hu, X., Huizinga, J., Jain, S., Jain, S., Jang, J., Jiang, A., Jiang, R., Jin, H., Jin, D., Jomoto, S., Jonn, B., Jun, H., Kaftan, T., Łukasz Kaiser, Kamali, A., Kanitscheider, I., Keskar, N. S., Khan, T., Kilpatrick, L., Kim, J. W., Kim, C., Kim, Y., Kirchner, H., Kiros, J., Knight, M., Kokotajlo, D., Łukasz Kondraciuk, Kondrich, A., Konstantinidis, A., Kosic, K., Krueger, G., Kuo, V., Lampe, M., Lan, I., Lee, T., Leike, J., Leung, J., Levy, D., Li, C. M., Lim, R., Lin, M., Lin, S., Litwin, M., Lopez, T., Lowe, R., Lue, P., Makanju, A., Malfacini, K., Manning, S., Markov, T., Markovski, Y., Martin, B., Mayer, K., Mayne, A., McGrew, B., McKinney, S. M., McLeavey, C., McMillan, P., McNeil, J., Medina, D., Mehta, A., Menick, J., Metz, L., Mishchenko, A., Mishkin, P., Monaco, V., Morikawa, E., Mossing, D., Mu, T., Murati, M., Murk, O., Mély, D., Nair, A., Nakano, R., Nayak, R., Neelakantan, A., Ngo, R., Noh, H., Ouyang, L., O’Keefe, C., Pachocki, J., Paino, A., Palermo, J., Pantuliano, A., Parascandolo, G., Parish, J., Parparita, E., Passos, A., Pavlov, M., Peng, A., Perelman, A., de Avila Belbute Peres, F., Petrov, M., de Oliveira Pinto, H. P., Michael, Pokorny, Pokrass, M., Pong, V., Powell, T., Power, A., Power, B., Proehl, E., Puri, R., Radford, A., Rae, J., Ramesh, A., Raymond, C., Real, F., Rimbach, K., Ross, C., Rotsted, B., Roussez, H., Ryder, N., Saltarelli, M., Sanders, T., Santurkar, S., Sastry, G., Schmidt, H., Schnurr, D., Schulman, J., Selsam, D., Sheppard, K., Sherbakov, T., Shieh, J., Shoker, S., Shyam, P., Sidor, S., Sigler, E., Simens, M., Sitkin, J., Slama, K., Sohl, I., Sokolowsky, B., Song, Y., Staudacher, N., Such, F. P., Summers, N., Sutskever, I., Tang, J., Tezak, N., Thompson, M., Tillet, P., Tootoonchian, A., Tseng, E., Tuggle, P., Turley, N., Tworek, J., Uribe, J. F. C., Vallone, A., Vijayvergiya, A., Voss, C., Wainwright, C., Wang, J. J., Wang, A., Wang, B., Ward, J., Wei, J., Weinmann, C., Welihinda, A., Welinder, P., Weng, J., Weng, L., Wiethoff, M., Willner, D., Winter, C., Wolrich, S., Wong, H., Workman, L., Wu, S., Wu, J., Wu, M., Xiao, K., Xu, T., Yoo, S., Yu, K., Yuan, Q., Zaremba, W., Zellers, R., Zhang, C., Zhang, M., Zhao, S., Zheng, T., Zhuang, J., Zhuk, W., and Zoph, B. Gpt-4 technical report, 2023.
  • Ouyang et al. (2022) Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C. L., Mishkin, P., Zhang, C., Agarwal, S., Slama, K., Ray, A., Schulman, J., Hilton, J., Kelton, F., Miller, L., Simens, M., Askell, A., Welinder, P., Christiano, P., Leike, J., and Lowe, R. Training language models to follow instructions with human feedback, 2022.
  • Pearce et al. (2020) Pearce, H., Tan, B., and Karri, R. Dave: Deriving automatically verilog from english. In Proceedings of the 2020 ACM/IEEE Workshop on Machine Learning for CAD, MLCAD ’20, pp. 27–32, New York, NY, USA, 2020. Association for Computing Machinery. ISBN 9781450375191. doi: 10.1145/3380446.3430634. URL https://doi.org/10.1145/3380446.3430634.
  • Rafailov et al. (2023) Rafailov, R., Sharma, A., Mitchell, E., Ermon, S., Manning, C. D., and Finn, C. Direct preference optimization: Your language model is secretly a reward model, 2023.
  • Ram et al. (2023) Ram, O., Levine, Y., Dalmedigos, I., Muhlgay, D., Shashua, A., Leyton-Brown, K., and Shoham, Y. In-context retrieval-augmented language models, 2023.
  • Reimers & Gurevych (2019) Reimers, N. and Gurevych, I. Sentence-bert: Sentence embeddings using siamese bert-networks. In Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing. Association for Computational Linguistics, 11 2019. URL http://arxiv.org/abs/1908.10084.
  • Ren & Fojtik (2021) Ren, H. and Fojtik, M. Invited- nvcell: Standard cell layout in advanced technology nodes with reinforcement learning. In 2021 58th ACM/IEEE Design Automation Conference (DAC), 2021.
  • Richardson (2007) Richardson, L. Beautiful soup documentation. April, 2007.
  • Robertson & Zaragoza (2009) Robertson, S. and Zaragoza, H. The probabilistic relevance framework: Bm25 and beyond. Found. Trends Inf. Retr., 3(4):333–389, apr 2009. ISSN 1554-0669. doi: 10.1561/1500000019. URL https://doi.org/10.1561/1500000019.
  • Roy et al. (2021) Roy, R., Raiman, J., Kant, N., Elkin, I., Kirby, R., Siu, M., Oberman, S., Godil, S., and Catanzaro, B. PrefixRL: Optimization of parallel prefix circuits using deep reinforcement learning. In 2021 58th ACM/IEEE Design Automation Conference (DAC), 2021.
  • Rozière et al. (2023) Rozière, B., Gehring, J., Gloeckle, F., Sootla, S., Gat, I., Tan, X. E., Adi, Y., Liu, J., Remez, T., Rapin, J., Kozhevnikov, A., Evtimov, I., Bitton, J., Bhatt, M., Ferrer, C. C., Grattafiori, A., Xiong, W., Défossez, A., Copet, J., Azhar, F., Touvron, H., Martin, L., Usunier, N., Scialom, T., and Synnaeve, G. Code llama: Open foundation models for code, 2023.
  • Sakaguchi et al. (2019) Sakaguchi, K., Bras, R. L., Bhagavatula, C., and Choi, Y. Winogrande: An adversarial winograd schema challenge at scale. arXiv preprint arXiv:1907.10641, 2019.
  • Sanh et al. (2022) Sanh, V., Webson, A., Raffel, C., Bach, S. H., Sutawika, L., Alyafeai, Z., Chaffin, A., Stiegler, A., Scao, T. L., Raja, A., Dey, M., Bari, M. S., Xu, C., Thakker, U., Sharma, S. S., Szczechla, E., Kim, T., Chhablani, G., Nayak, N., Datta, D., Chang, J., Jiang, M. T.-J., Wang, H., Manica, M., Shen, S., Yong, Z. X., Pandey, H., Bawden, R., Wang, T., Neeraj, T., Rozen, J., Sharma, A., Santilli, A., Fevry, T., Fries, J. A., Teehan, R., Bers, T., Biderman, S., Gao, L., Wolf, T., and Rush, A. M. Multitask prompted training enables zero-shot task generalization, 2022.
  • Shi et al. (2023) Shi, W., Min, S., Yasunaga, M., Seo, M., James, R., Lewis, M., Zettlemoyer, L., and tau Yih, W. Replug: Retrieval-augmented black-box language models, 2023.
  • Shoeybi et al. (2019) Shoeybi, M., Patwary, M., Puri, R., LeGresley, P., Casper, J., and Catanzaro, B. Megatron-lm: Training multi-billion parameter language models using model parallelism. arXiv preprint arXiv:1909.08053, 2019.
  • Taylor et al. (2022) Taylor, R., Kardas, M., Cucurull, G., Scialom, T., Hartshorn, A., Saravia, E., Poulton, A., Kerkez, V., and Stojnic, R. Galactica: A large language model for science, 2022.
  • Thakur et al. (2023) Thakur, S., Ahmad, B., Fan, Z., Pearce, H., Tan, B., Karri, R., Dolan-Gavitt, B., and Garg, S. Benchmarking large language models for automated verilog rtl code generation. In 2023 Design, Automation & Test in Europe Conference & Exhibition (DATE), pp. 1–6, 2023. doi: 10.23919/DATE56975.2023.10137086.
  • Touvron et al. (2023) Touvron, H., Martin, L., Stone, K., Albert, P., Almahairi, A., Babaei, Y., Bashlykov, N., Batra, S., Bhargava, P., Bhosale, S., Bikel, D., Blecher, L., Ferrer, C. C., Chen, M., Cucurull, G., Esiobu, D., Fernandes, J., Fu, J., Fu, W., Fuller, B., Gao, C., Goswami, V., Goyal, N., Hartshorn, A., Hosseini, S., Hou, R., Inan, H., Kardas, M., Kerkez, V., Khabsa, M., Kloumann, I., Korenev, A., Koura, P. S., Lachaux, M.-A., Lavril, T., Lee, J., Liskovich, D., Lu, Y., Mao, Y., Martinet, X., Mihaylov, T., Mishra, P., Molybog, I., Nie, Y., Poulton, A., Reizenstein, J., Rungta, R., Saladi, K., Schelten, A., Silva, R., Smith, E. M., Subramanian, R., Tan, X. E., Tang, B., Taylor, R., Williams, A., Kuan, J. X., Xu, P., Yan, Z., Zarov, I., Zhang, Y., Fan, A., Kambadur, M., Narang, S., Rodriguez, A., Stojnic, R., Edunov, S., and Scialom, T. Llama 2: Open foundation and fine-tuned chat models, 2023.
  • Venigalla et al. (2022) Venigalla, A., Frankle, J., and Carbin, M. BioMedLM: a domain-specific large language model for biomedical text, 2022. URL https://www.mosaicml.com/blog/introducing-pubmed-gpt.
  • Wang et al. (2022) Wang, L., Yang, N., Huang, X., Jiao, B., Yang, L., Jiang, D., Majumder, R., and Wei, F. Text embeddings by weakly-supervised contrastive pre-training. arXiv preprint arXiv:2212.03533, 2022.
  • Wang et al. (2023) Wang, Z., Dong, Y., Zeng, J., Adams, V., Sreedhar, M. N., Egert, D., Delalleau, O., Scowcroft, J. P., Kant, N., Swope, A., and Kuchaiev, O. Helpsteer: Multi-attribute helpfulness dataset for steerlm, 2023.
  • Wei et al. (2022) Wei, J., Bosma, M., Zhao, V. Y., Guu, K., Yu, A. W., Lester, B., Du, N., Dai, A. M., and Le, Q. V. Finetuned language models are zero-shot learners, 2022.
  • Wu et al. (2023) Wu, S., Irsoy, O., Lu, S., Dabravolski, V., Dredze, M., Gehrmann, S., Kambadur, P., Rosenberg, D., and Mann, G. Bloomberggpt: A large language model for finance, 2023.
  • Zellers et al. (2019) Zellers, R., Holtzman, A., Bisk, Y., Farhadi, A., and Choi, Y. Hellaswag: Can a machine really finish your sentence? In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, 2019.
  • Zhou et al. (2023) Zhou, S., Alon, U., Xu, F. F., Wang, Z., Jiang, Z., and Neubig, G. Docprompting: Generating code by retrieving the docs, 2023.

附录A附录

A.1 贡献

刘明杰进行了DAPT和模型比对。

Teodor-Dumitru Ene、Robert Kirby 开发了推理和应用评估基础设施。

Chris Cheng​​t0>开发了RAG框架。

Nathaniel Pinckney 收集并准备训练数据集。

Rongjian Liang 开发了自定义分词器。

Walker Turner、Charley Lind、George Kokai 开发了通用电路设计知识基准。

Siddhanth Dhodhi、Ismet Bayraktaroglu、Himyanshu Anand、Eric Hill 设计了工程助理聊天机器人,提供了领域指令数据集、评估基准并进行了评估。

Parikshit Deshpande、Zhengjian Shao、Kaizhe Xu、Jiashang Hu、Laura Dang、Xiaowei Li、Hao Liu、Ambar Sarkar 开发了工程助理聊天机器人应用程序。

Sreedhar Pratty、Kishor Kunal、Ghasem Pasandi、Varun Tej、Sumit Jain、Sujeet Omar、Pratik P Suthar、Hanfei Sun开发了 EDA 脚本生成应用程序,提供了领域指令数据集和评估基准。

Bonita Bhaskaran、Arjun Chaudhuri、Sanmitra Banerjee、Ghasem Pasandi开发了错误总结和分析应用程序,提供了领域指令数据集和评估基准。

Brucek Khailany、Stuart Oberman、Sharon Clay、Sameer Halepete、Jonathan Raiman、Bryan Catanzaro、Jonah Alben、Bill Dally 从人工智能研究和硬件工程的角度提供建议。

任浩兴设计并领导了这项研究。

A.2数据收集流程

Collection 是通过一组 shell 和 Python 脚本实现的,旨在识别相关的设计数据和文档,将它们转换为纯文本(如果适用),使用基本质量指标对其进行过滤,计算精确文件重复数据删除的校验和,并将它们压缩以进行存储。 收集流程没有使用现成的 LLM 特定的抓取和收集脚本,因为我们的目标是通过内部数据源(网络文件系统和内部 Web 应用程序)的现场数据收集来最大限度地减少空间需求。 对于基于文件系统的收集,数据被保留在适当的位置,同时进行质量过滤,而不是在本地存储额外的原始数据集。

设计和验证数据收集涵盖各种源文件,包括 Verilog 和 VHDL(RTL 和网表)、C++、Spice、Tcl、各种脚本语言以及与构建相关的配置文件。 来自内部 Web 服务的数据是通过 REST API 调用和传统爬行收集的,并在这两种情况下使用开源 BeautifulSoup(Richardson,2007) Python 库删除了 HTML 格式,以最大程度地减少无意删除的代码例如,代价是引入更多样板导航栏和其他 HTML 页面元素。 我们的数据收集流程使用现成的 Python 转换库和开源工具,支持传统文档格式,包括 .docx、.pptx 和 .pdf。

由于大多数内部数据被认为是高质量的,因此应用了最小的过滤:使用行计数过滤来确保排除过大或过小的文件,并且将文件分为手动编写和工具生成的广泛类别。

A.3训练数据

在域自适应预训练 (DAPT) 期间,我们通过专有芯片设计特定数据源和公开可用数据集的组合来组装数据集。

芯片设计数据集: 我们的内部数据集包含与芯片设计、跨越设计、验证、基础设施和内部文档相关的各种文本源。 3 提供了过滤后收集的数据的详细信息,以及使用 LLaMA2 标记生成器的相应标记数量。 我们通过收集所有相关的内部数据来构建数据集,然后根据文件类型、文件扩展名进行过滤,并区分机器生成的内容和人工编写的内容。 尽管我们评估了三个特定用例,但我们没有特别将数据集限制为已知与这些用例相关的来源,因为我们相信合并额外的领域知识可以提高性能。 经过采集、清洗、过滤,内部训练语料库拥有231亿个token。 数据收集过程的更多细节参见附录A.2

Data Source Type Data Data Training Training
Percentage (%) Tokens (B) Percentage (%) Tokens (B)
Bug Summary 9.5% 2.4 10.0% 2.4
Design Source 47.0% 11.9 24.5% 5.9
Documentation 17.8% 4.5 34.0% 8.2
Verification 9.1% 2.3 10.4% 2.5
Other 7.9% 2.0 12.0% 2.9
Wikipedia 5.9% 1.5 6.2% 1.5
Github 2.8% 0.7 3.0% 0.7
Total 100.0% 25.3 100.0% 24.1
表3: 按来源划分的数据细分。 使用原始 LLaMA2 分词器测量的词符计数。

公共数据集: 我们使用来自各种来源的公开可用数据样本来扩充芯片设计特定数据,这是基础大型语言模型开发的常见做法。 我们的方法是重用其他语言模型的公共训练数据,并规定它必须可公开访问并与开源兼容。 这些数据集与 LLaMA2 (Touvron 等人, 2023) 中使用的预训练数据表现出高度相关性,旨在在 DAPT 期间保留常识和自然语言能力。 ChipNeMo 使用的公共数据集可以分为两类:自然语言和代码。 对于自然语言部分,我们借鉴了维基百科数据(高等人,2020),因为它因其高数据质量而受到广泛认可。 对于代码,我们利用 GitHub 数据(Kocetkov 等人,2022),重点关注我们内部数据芯片设计数据集中也存在的编程语言,例如 C++、Python 和 Verilog。 为了确保整个数据集能够代表预训练分布,我们执行了子采样操作,结果是从这些公共数据集中采样了大约 9.2% 的总训练标记,并平衡地表示了自然语言和代码。

数据混合: 我们收集的领域数据的很大一部分由来自不同来源的未注释代码组成。 为了增强模型对特定领域知识的理解,我们在 2 到 4 个训练周期内对代码数据进行下采样,同时对自然语言数据(特别是设计文档)进行上采样。 我们还增加了我们认为与下游应用程序更相关的数据表示,例如人工编写的 EDA 工具脚本。 此外,我们合并了 1 个时期的公开可用域数据。 训练的词符分布详情如表3所示。

A.4对齐数据

在监督微调 (SFT) 过程中,我们采用了可用于商业用途的通用聊天 SFT 指令数据集。 该数据集主要由公开可用的指令跟随数据集组成,包括 OASST (Köpf 等人, 2023)、FLAN (Wei 等人, 2022)、P3 (Sanh等人,2022)以及少量广泛领域的专有数据集,包括头脑风暴、开放式问答、重写、总结等各种主题。值得注意的是,我们在这里讨论的 SFT 指令数据是专注于一般自然语言任务,不包含与芯片设计中下游用例相关的任何信息或任务。 该数据集总共包含 128,000 个训练样本。

对于 SteerLM (Dong 等人, 2023),我们密切关注 (Wang 等人, 2023) 中的实现。 训练数据属性仅包含来自 HelpSteer (Wang 等人, 2023) 和 OASST (Köpf 等人, 2023) 的公开可用数据。 对于模型属性条件微调,我们仅使用由 56,000 个样本组成的 OASST 数据进行训练。

此外,我们精心组装了特定领域的指令数据集,以使模型与下游用例保持一致。 这些示例由主题专家精心制作,并采用单轮问题和答案的格式。 4描述了我们的特定领域指令数据集的数量。 值得注意的是,与大量的生成聊天指令数据相比,特定领域指令数据集中的训练样本总数相当小。

Domain Source Number of Samples
Design Knowledge 302
EDA Script Generation 480
Bug summarization and analysis 648
Total 1430
表 4: 域对齐数据的细分。

A.5域评估基准

为了快速定量地评估各种模型的准确性,我们为每个用例建立了以多项选择问答格式构建的评估标准,旨在与既定基准紧密结合,例如 MMLU (Hendrycks 等)人,2021) 在制定这些多项选择题的过程中,与领域专家的合作至关重要。 目标是确保每个问题至少包含一个复杂的答案选择,从而对领域专业知识有限的个人提出挑战。 我们还特别注意防止问题被我们特定领域的比对数据中的数据无意中污染。 除了每个用例的基准之外,还为一般电路设计知识创建了一个附加基准,涵盖模拟和数字设计主题。 评估基准选择题数量如表5所示。

Domain Source Number of Questions
Design Knowledge (Design) 94
EDA Script Generation (Scripting) 74
Bug Summarization and Analysis (Bugs) 70
Open Domain Circuit Design (Circuits) 227
表5 特定领域的评估基准。

当我们报告上述基准的结果时,我们取五次不同运行获得的平均结果,以减轻测试过程中方差和噪声的影响。 每次迭代都采用一组 5 个样本的示例,并在每次运行中引入变化。

除了这些特定领域的评估基准之外,我们还包括常用的公开大语言模型学术基准。 此外,我们通过评估 Python 的 HumanEval (Chen 等人,2021) 和 Verilog 的 VerilogEval (Liu 等人,2023) 来测量模型的代码生成能力。

A.6 领域自适应预训练 (DAPT)

在本节中,我们将介绍域自适应预训练模型的详细结果。 我们还详细介绍了域自适应预训练的消融实验。

DAPT 超参数: 详细信息如表6所示。

Hyperparameters Value
Context Window 4096
Global Batch Size 256 (128)
Optimizer distributed_fused_adam
Weight Decay 0.01
Betas 0.9, 0.95 (0.9, 0.98)
Learning Rate 5106
Scheduler None
表 6: DAPT 和 SteerLM/SFT 超参数,括号中显示 SteerLM/SFT 值(如果与 DAPT 不同)。

自动评估结果: 我们在表 7 和表 8 中提供了汽车评估基准的详细结果。 为简单起见,在本节的其余部分中,我们提供了消融研究的汇总基准结果:

  • 芯片:我们报告表5(5 个样本)中域内设计、脚本、错误和电路基准的平均结果。

  • MMLU:我们报告了 MMLU(5-shot)(Hendrycks 等人,2021) 的总体结果,MMLU 是针对各种主题的流行聚合基准。

  • 推理:我们报告了常见常识推理公共基准的平均结果(0-shot),包括 Winogrande (Sakaguchi 等人, 2019)、 hellaswag (Zellers等人,2019)、ARC-easy (Clark 等人,2018)、RACE-High (Lai 等人,2017)

  • 代码:我们报告了贪婪解码的编码基准的平均通过率,包括HumanEval (Chen 等人, 2021)、VerilogEval-Machine (Liu 等人, 2023),以及 VerilogEval-Human (刘等人,2023)

Model

Design

Scripting

Bugs

Circuits

MMLU

Winogrande

hellaswag

ARC-e

RACE-H

LLaMA2-7B

41.1

42.0

42.2

47.9

45.7

68.9

75.6

73.5

46.2

ChipNeMo-7B

57.5

49.3

42.8

49.5

44.6

67.4

76.3

73.7

46.2

LLaMA2-13B

43.6

49.6

39.7

55.5

55.4

72.1

79.3

76.3

46.7

ChipNeMo-13B

67.9

56.3

50.1

56.8

53.4

71.1

80.3

76.7

46.1

LLaMA2-70B

52.3

64.9

56.9

67.0

68.6

77.6

83.6

79.6

48.9

ChipNeMo-70B

76.6

73.9

65.8

71.7

69.4

78.0

85.1

80.9

48.9

GPT-3.5

51.7

66.7

52.0

66.5

70.0*

81.6*

85.5*

85.2*

-

GPT-4

58.4

77.4

63.4

79.0

86.4*

87.5*

95.3*

96.3*

-

表 7: 自动评估结果。 我们使用专有的评估方法报告 LLaMA2 的学术基准结果。 ChipNeMo 模型使用适应领域的分词器进行训练。 * 结果来自(OpenAI 等人,2023)
Model HumanEval

VerilogEval-Human

VerilogEval-Machine

LLaMA2-7B

14.0

3.8

24.5

ChipNeMo-7B

12.2

8.3

28.7

LLaMA2-13B

17.1

9.0

30.8

ChipNeMo-13B

17.7

22.4

43.4

LLaMA2-70B

28.0

30.8

51.0

ChipNeMo-70B

30.5

27.6

53.8

GPT-3.5

48.1*

26.7

46.7

GPT-4

67.0*

43.5

60.0

表8: 编码评估结果。 显示贪婪解码的通过率。 我们使用专有的评估方法报告 LLaMA2 的结果。 ChipNeMo 模型使用适应领域的分词器进行训练。 *, † 结果来自(OpenAI 等人,2023;Liu 等人,2023)

域自适应标记化: 我们使用原始 LLaMA2 分词器和域适应分词器对 DAPT 进行了实验,如 2.1 节中所述。 11 描述了使用原始未修改标记器的 ChipNeMo 的平滑训练损失。 与图2相比,我们观察到域适应标记器在初始化时有更大的损失,因为在基础模型预期间从未观察到添加的标记。 1 个 epoch 的 DAPT 也实现了类似的训练损失。

9显示了汇总的汽车评估基准结果。 我们注意到,仔细的分词器调整和权重初始化仅对一般学术基准上的模型性能产生轻微影响。 DAPT 显着改进了任何标记器的领域基准测试,包括 Verilog 编码(HumanEval 中没有重大差异)。 我们的结论是,领域适应标记器具有改进标记化和训练效率的好处,并且不会降低模型通用语言和领域功能。

Refer to caption
图11 使用原始 LLaMA2 Tokenizer 平滑了训练损失。

Model

Tokenizer

DAPT

Chip

MMLU

Reason

Code

7B

Ori.

No

43.4

45.7

66.1

14.1

7B

Dpt.

No

42.7

44.6

65.9

13.9

7B

Ori.

Yes

51.2

44.8

65.7

17.6

7B

Dpt.

Yes

49.8

44.6

65.8

16.4

13B

Ori.

No

47.1

55.4

68.6

18.9

13B

Dpt.

No

46.0

55.1

68.6

18.4

13B

Ori.

Yes

57.7

54.0

68.4

27.2

13B

Dpt.

Yes

57.8

53.4

68.5

27.8

表9 具有不同分词器的 ChipNeMo 模型的评估结果。 Dpt。 指示域适应标记器和 Ori。 指示使用 LLaMA2 原始分词器。 使用不带 DAPT 的增强分词器对应于第 2.1 节中的模型初始化。

公共数据集混合: 正如 A.3 节中所述,我们在 DAPT 中包含了公共数据,这些数据是从常用公共数据集中采样的,用于基础模型预训练。 我们主要希望在DAPT中混合维基百科等公共数据能够帮助“纠正”领域自适应分词器带来的干扰,提高模型的通用自然语言能力。 我们仅使用域数据,使用域适应分词器进行了另一轮 DAPT,训练相同数量的步骤,大约相当于数据的 1.1 epoch。 我们发现公共数据的混合稍微改善了结果。 我们在表 10 中提供了详细结果。

Public

Chip

MMLU

Reason

Code

No

56.9

53.0

67.5

24.1

Yes

57.8

53.4

68.5

27.8

表 10: 使用 ChipNeMo-13B 对公共数据集混合进行消融。 公共数据混合稍微改善了结果。

学习率: 受到 CodeLLaMA (Rozière 等人,2023) 中使用的方法的启发,我们尝试采用更大的学习率。 我们使用与表11中类似的训练超参数。 我们使用具有 200 个预热步骤的余弦计划,并将最终学习率设置为 3104 峰值学习率的 1/30。 我们使用与 DAPT 相同的批量大小和训练步骤数。

Hyperparameters Value
Context Window 4096
Global Batch Size 256
Optimizer distributed_fused_adam
Weight Decay 0.01
Betas 0.9, 0.95
Learning Rate (lr) 3104
Scheduler CosineAnnealing
Warmup Steps 200
min_lr 1105
表 11: 以更大的学习率训练超参数。 我们采用与(Rozière等人, 2023)类似的参数。

12 显示了带有增强标记器(包括公共数据集混合)的 ChipNeMo-7B 的训练损失。 我们观察到初始训练步骤中的训练损失出现大幅增长,7B 模型的最终训练损失甚至优于 13B 原始 DAPT 超参数。 然而,我们注意到自然语言基准的大幅退化,如表12所示,包括域内芯片设计。 编码能力的提高与(Rozière 等人,2023)的研究结果一致。

Refer to caption
图12 通过较大的学习率平滑训练损失。 我们包括建议的超参数的损失曲线以进行比较。

Learning Rate

Chip

MMLU

Reason

Code

5106

49.8

44.6

65.8

16.4

3104

25.5

26.6

49.8

18.1

表 12: ChipNeMo-7B 对学习率的消融。 较大的学习率会显着降低所有语言相关任务的性能,但会稍微改善编码。

我们强调,我们的案例与(Rozière等人,2023)中的案例不同。 尽管我们还从预训练的检查点进行“持续预训练”初始化,但我们最好希望模型在一般能力上保持较高的性能,同时将领域数据集信息和知识(在模型预训练中不可见)提炼为模型权重。 相比之下,(Rozière 等人,2023)使用主要缺乏自然语言元素的公开代码数据,强调其主要关注与编码相关的任务。 我们假设较小的学习率对于领域适应发挥双重作用,通过 DAPT 促进领域知识的提炼,同时保持不偏离基本模型太远的平衡,从而保留一般自然语言能力,同时显着提高在- 域任务。

参数高效微调(PEFT): 参数高效微调冻结预先训练的模型权重,并将可训练参数注入较小的适配器模型中,以便对下游任务进行高效微调。 我们利用低阶适应 (LoRA) 探索 PEFT 在 DAPT 中的使用(Hu 等人,2021) 由于我们的 Transformer 层实现将 KQV 融合到单个投影中,因此我们以组合方式为每个自注意力层的单个低阶投影添加 LoRA 适配器。 我们使用表 6 中相同的 DAPT 训练设置,使用原始 LLaMA2 分词器对 LLaMA2-13B 模型进行实验。 我们进行了两项实验,分别引入了 2640 万(小)和 2.112 亿(大)的额外可训练参数。

Refer to caption
图13 平滑 LoRA (Hu 等人, 2021) 的训练损失。 图13B对应于完整参数DAPT。

13展示了LoRA模型的训练损失曲线并与全参数进行比较。 对于这两种 LoRA 模型,损失很快收敛并在超过某个点后停止减少。 13报告了LoRA模型的评估结果。 两种 LoRA 模型在域内芯片设计任务上的全参数训练都明显落后。 与非 DAPT 模型相比,LoRA 模型在芯片设计任务方面有所改进,较大的模型表现出稍微更好(但不显着)的结果。

Parameters

Chip

MMLU

Reason

Code

None

47.1

55.4

68.6

18.9

26.4M

49.0

55.0

68.2

13.0

211.2M

49.6

54.2

68.6

15.3

13B

57.7

54.0

68.4

27.2

表 13: LoRA 模型的评估结果。 第一列表示可训练参数的数量。 None 表示没有 DAPT 的 LLaMA2-13B 型号。 13B表示完整参数训练。

A.7模型对齐

对于标准监督微调(SFT),我们使用以下结构化模板:

<extra_id_0>System\n{system}
<extra_id_1>User\n{user_utterance}
<extra_id_1>Assistant\n{chipnemo_response}
...

对于 SteerLM,我们按照 (Wang 等人,2023) 中的步骤并将属性标签应用于我们的域数据:

  1. 1.

    我们训练了一个“通用”属性评分模型。 我们仅使用 HelpSteer 和 OASST 属性标记数据,没有任何具有从 LLaMA2-13B 初始化的权重的域数据。

  2. 2.

    我们使用步骤 1 中的属性评分模型对领域数据(1.4k 个样本)进行评分。

  3. 3.

    我们将 OASST 数据(56k 样本)与域数据(1.4k 样本)混合 2 个周期。

  4. 4.

    我们对 ChipNeMo 模型进行属性条件微调。

Refer to caption
图14 SteerLM 的属性得分。

14描述了通用属性评分模型标记的属性评分(及其标准差)。 属性评分模型可以很好地推广到关于毒性、幽默、创造力、冗长等属性的未见过的域数据,但对于质量、有用性、正确性等指标的域数据得分稍低 这为领域数据的属性评分模型留下了改进的空间,可以通过初始化 ChipNeMo 的属性模型(相对于 LLaMA2)并添加属性标记的域数据来改进。 在我们的实验中,我们按原样使用属性标签。

此外,我们仅使用通用聊天数据集进行了额外的对齐,不包括任何特定于域的对齐数据。 为清楚起见,我们将所有 ChipNeMo 型号指定如下:

  • ChipNeMo-SFTG: 仅使用标准 SFT 对一般聊天数据进行微调的模型。

  • ChipNeMo-SFT: 使用标准 SFT 对域数据和一般聊天数据进行微调的模型;

  • ChipNeMo-SteerG: 专门使用 SteerLM 对一般聊天数据进行微调的模型。

  • ChipNeMo-Steer: 使用 SteerLM 对域和一般聊天数据进行微调的模型;

A.8领域自适应检索模型

手动生成训练样本非常费力,因此我们选择实施一个自动生成它们的过程。 由于我们使用对比学习来改变我们的模型,因此每个样本都需要一组积极的段落和消极的段落,特别是硬消极的段落,以最大限度地提高准确性。

Refer to caption
图15 检索模型的样本生成训练

A.8.1 数据集采样程序

15描述了生成示例所采取的步骤:

  1. 1.

    从文档语料库中随机选择一段文字

  2. 2.

    使用语言模型 (Vicuna) 从段落中生成有效的查询

  3. 3.

    使用预先存在的检索模型(句子转换器)从文档语料库中获取前 N 个段落以进行查询,其中每个段落都是潜在的硬否定

  4. 4.

    有可能某些提取的段落实际上是正面的,因此使用相同的语言模型来过滤掉正面的段落

  5. 5.

    如果经过此过滤过程后没有足够的负面段落,请补充语料库中的随机段落

在我们的初步研究中,我们使用了 Vicuna (Chiang 等人, 2023) 和 Sentence Transformer (Reimers & Gurevych, 2019);然而,它们可以很容易地分别替换为 LLaMA2 (Touvron 等人,2023) 和 BM25 (Robertson & Zaragoza,2009),以产生商业上可行的检索模型。

A.8.2 命中质量比较

并非所有热门作品都是一样的。 下面规范示例中的段落清楚、完整地回答了其查询。 构建示例中的段落包含答案;然而,需要更多上下文来回答查询。

规格示例: 命中段落清楚地回答了问题。

Query: What is the XXX buffer in the YYY used for? Hit Passage: Since the memory subsystem is partitioned, YYY may receive read responses whose order is different from their requests. ZZZ requires strict in-order per-thread processing, thus YYY reorders the read responses to the request order before sending them back to ZZZ. YYY re-orders the read responses in a read return reorder buffer (XXX) to guarantee the ordering. Answer: re-orders the read responses.

构建示例: 需要附加信息才能完全回答查询。 如:什么是DL? 我们如何知道 Arch-Build-Hotseat-XXX 是 DL?

Query: What is the support DL for XXX build issues? Hit Passage: Tree Setup Working in the XXX Mainline explains initial tree setup and build steps Build Arch-Build-Hotseat-XXX - Hotseat support for XXX build issues YYY build failures

A.9其他评估结果和讨论

14显示了工程助理聊天机器人应用程序上所有模型的评估数据。 应该指出的是,在我们的 SFT 训练中添加特定领域的教学数据仅对工程助理任务带来了微小的改进。 然而,在我们的 SteerLM 训练中包含这些数据会降低我们模型响应的质量。 我们认为这是由于我们的数据没有充分适应 SteerLM 标签系统。 未来的工作将看到通用和特定领域的教学数据标签之间更紧密的兼容性,我们期望从中看到模型作为聊天机器人的行为的改进。

所有模型在 EDA 脚本生成任务上的评估结果如表15所示。 除了与论文3.6主要部分中讨论的现成模型进行比较之外,还进行了一项消融研究,以评估 SteerLM 训练相对于 ChipNeMo-70B-SFT 和 ChipNeMo- 的重要性。 70B 转向型号。 观察结果表明,SteerLM 训练有助于“硬”基准测试,从而展示了其在为现实世界用例生成相关结果方面的有效性。

16和图17描绘了LLaMA2-70B-Steer、ChipNeMo-70B-SteerG模型和ChipNeMo-70B-Steer模型之间的比较。 结果表明,仅通过 DAPT 训练即可实现显着增强,强调了领域知识的关键作用。 此外,在比较有和没有领域指导数据的聊天模型的性能时,观察到了显着的改进。 这强调了模型产生准确答案的能力可以通过改进与领域指导数据的一致性来增强。 这些结果显示了 DAPT 和模型对齐对于特定领域应用的重要性。

还研究了 RAG 对生成 EDA 脚本的影响。 检索到的数据包含与问题相关的特定 API 以及 API 的描述。 这有助于提高“简单”和“中等”难度基准的准确性,这些基准在很大程度上依赖于 API 知识。 在“硬”基准测试中,与非 RAG 模型相比,我们注意到准确性有所下降。 这展示了将现有检索技术与非自然语言任务(例如代码生成)结合起来的困难。 虽然多种检索技术已被证明适用于自然语言任务,但专注于检索增强代码生成的出版物相对较少(Gao 等人,2024) 这强调了 DAPT 的重要性,特别是在没有足够的高质量示例和解释来轻松应用检索的数据体系中。

bug汇总分析任务的评估结果如表16所示。 使用 DAPT 观察到了微小的改进,将非 DAPT LLaMA2-70B-SteerG 模型与其 DAPT 对应模型 ChipNeMo-70B-SteerG 进行比较时,这一点很明显。 将 SteerLM 与传统的 SFT 训练进行比较时,我们注意到摘要任务性能略有提高,而任务分配方面没有观察到显着差异。

此外,我们还研究了两个版本的 GPT-4 模型。 在第一种方法中,我们利用了其他模型所采用的传统评估程序,假设基于可比较的上下文窗口大小的限制。 如前所述,此过程包括将大量错误分解为较小的部分并采用分层汇总。 在第二种方法中,我们成功地将每个测试错误完全安装在 GPT-4 的 32k 上下文大小内。 这项消融研究的结果表明,我们的分层总结对响应质量的影响很小。

Refer to caption
图16 EDA 脚本生成域数据消融,Pass@5
Refer to caption
图17 EDA 脚本生成域数据消融,单次生成(温度=0),人类评估 0-10

Model

RAG Hit Miss Avg.

GPT-4

No - - 2.84

LLaMA2-70B-Chat

No - - 1.81

LLaMA2-70B-SteerG

No - - 1.99

ChipNeMo-70B-SteerG

No - - 5.12

ChipNeMo-70B-Steer

No - - 4.80

ChipNeMo-70B-SFTG

No - - 4.68

ChipNeMo-70B-SFT

No - - 4.89

GPT-4

Yes 4.77 4.04 4.52

LLaMA2-70B-Chat

Yes 4.18 3.22 3.86

LLaMA2-70B-SteerG

Yes 3.68 3.00 3.46

ChipNeMo-70B-SteerG

Yes 6.02 4.78 5.68

ChipNeMo-70B-Steer

Yes 5.58 4.39 5.26

ChipNeMo-70B-SFTG

Yes 5.18 4.79 5.06

ChipNeMo-70B-SFT

Yes 5.39 4.17 5.06
表14 工程助理聊天机器人人类评估。 采用 7 点李克特量表进行评估。
Tool1 (Python) Tool2 (Tcl)
Model Easy Medium Hard Easy Medium Hard
(Automatic) (Automatic) (Human) (Automatic) (Automatic) (Human)
GPT-4 0% 0% 0.0 20% 52% 1.1
LLaMA2-70B-Chat 0% 0% 0.1 7% 4% 0.0
LLaMA2-70B-SteerG 0% 0% 0 0% 11% 0.2
ChipNeMo-70B-SteerG 19% 11% 1.4 29% 52% 2.4
ChipNeMo-70B-SFT 61% 29% 3.4 27% 74% 1.9
ChipNeMo-70B-Steer 49% 32% 3.6 45% 56% 2.9
ChipNeMo-70B-Steer (w/RAG) 77% 36% 2.3 84% 85% 0.8
表 15: EDA 脚本生成评估。 自动评估得分通过@5 单代人类评估得分为 0-10(温度 = 0)。
Model Technical Summary Managerial Summary Task Assignment
GPT-4 6.30 6.25 6.00
GPT-4 (32k, No Chunks) 6.14 6.45 5.78
LLaMA2-70B-Chat 4.35 4.95 5.00
LLaMA2-70B-SteerG 4.95 5.35 4.73
ChipNeMo-70B-SteerG 5.00 5.35 5.45
ChipNeMo-70B-Steer 5.05 5.25 4.27
ChipNeMo-70B-SFT 4.50 5.15 5.45
表 16: Bug总结和分析评估。 李克特量表 1-7。

A.10芯片设计应用

我们对设计团队中潜在的大语言模型应用进行了调查,并将其分为四个部分:代码生成问题与解答分析和报告 t2> 和分类 代码生成是指大语言模型生成设计代码、测试平台、断言、内部工具脚本等; Q&A是指大语言模型回答有关设计、工具、基础设施等问题;分析和报告是指大语言模型分析数据并提供报告;分类是指在给定日志和报告的情况下帮助调试设计或工具问题的大语言模型。 我们从每个类别中选择了一个关键应用程序来研究这项工作,但分类类别除外,我们将其留待进一步研究。 下面给出了每个应用程序的动机和技术细节。

A.10.1 工程助理聊天机器人

该应用程序旨在帮助设计工程师回答其架构、设计、验证和构建问题,这可以显着提高他们的整体生产力,而不会影响其他人的生产力。 据观察,设计工程师经常喜欢集思广益、设计硬件和编写代码,但在等待他们缺乏的设计知识的答案时可能会放慢速度。 通过避免工程师根据错误的假设编写代码或调试他们不熟悉的代码,还可以提高设计效率。 内部研究表明,典型芯片设计人员高达 60% 的时间花在调试或清单相关任务上,涉及一系列主题,包括设计规范、测试平台构建、架构定义以及工具或基础设施。 这些问题的专家通常分布在跨国公司的全球各地,因此并不总是方便地立即寻求帮助。 因此,基于从内部设计文档、代码、有关设计和技术通信(例如电子邮件和企业即时通信等)的任何记录数据中提取的知识的工程助理聊天机器人可以帮助显着提高设计效率。 我们使用2.4节中提到的域自适应RAG方法来实现此应用程序。

A.10.2 EDA 脚本生成

工业芯片设计流程中的另一个常见任务是编写 EDA 脚本来完成设计实现、内省和转换等各种任务。 这些脚本通常利用特定于工具的脚本库和自定义的内部脚本库。 学习这些库、浏览工具文档以及编写和调试这些脚本可能会占用大量的工程时间。

事实证明,大语言模型擅长在各种任务上生成小规模代码(Rozière 等人,2023),因此定制这些模型以提高工程师在此特定领域任务中的工作效率是很自然的选择。 在这项工作中,我们专注于从自然语言任务描述生成两种不同类型的脚本。 第一个是利用内部 python 库进行设计编辑和分析的脚本。 第二个是 Tcl 脚本,使用领先的工业静态时序分析工具提供的命令接口。

为了为此任务构建特定领域的微调数据集,从设计专家那里收集了这两种工具的生产脚本。 我们观察到我们的 DAPT 模型可以为代码生成合理的内联注释。 这使我们能够使用这些模型通过生成额外的内联注释来提高收集的脚本的质量。 人类专家后来验证并纠正了这些评论并创建了相关提示。 这些提示和代码对构成了用于模型对齐的数据,如 A.4 中所述。

为了以最有意义的方式提供和收集反馈,我们花费了大量精力构建了如图18所示的流程,工程师可以通过同一界面查询模型并运行生成的代码。 这使我们对生成的代码的正确性充满信心,并通过让工程师了解他们可能需要多少次修正才能获得正常运行的脚本来提供准确的反馈。 我们通过建立与工具服务器的交互式连接来支持这种集成。

此外,我们还提供了用户反馈表,使我们能够比较不同的模型并从用户反馈中收集有价值的见解。 这些有价值的信息可以帮助我们进一步完善我们的模型。

Refer to caption
图18 大语言模型脚本生成器与 EDA 工具集成

A.10.3Bug总结与分析

跟踪生产流程各个阶段的各种功能和错误的报告、分类、调试和解决是一个耗时的过程。 工程经理花费大量时间审查内部问题跟踪数据库,以了解项目的状态并帮助加快执行速度。 因此,一个能够查看所有支持信息并快速总结技术和管理数据并建议后续步骤的工具将提高团队生产力。 我们专注于使用大语言模型生成三种不同的输出 - 一种侧重于技术细节,一种侧重于管理细节,另一种则侧重于推荐任务分配。

为了研究这些任务,我们使用了内部错误数据库。 该数据库用于整个公司的错误报告、跟踪和解决以及一般任务和功能跟踪。 我们预计 ChipNeMo 模型能够在此任务中表现良好,因为 DAPT 数据集中包含大量错误数据。 此外,我们为此任务构建了一个特定于领域的 SFT 数据集,其中包括错误总结和任务分配任务的示例。

通常,错误描述包含大量日志文件或代码转储片段以及长评论历史记录。 在这种情况下,错误文本对于我们的大语言模型上下文窗口来说太大。 为了解决这个问题,我们实施了两种解决方案。 首先,我们找到长路径名并将其替换为较短的别名,以允许模型关联 bug 中多个位置出现的路径,而无需处理整个字符串。 其次,我们将摘要任务拆分为增量任务,其中模型的任务是跨多个摘要和错误数据块累积数据。 我们使用分层方法,首先将错误分成适合上下文窗口的块。 然后对这些块进行总结,并且将摘要累积起来,然后将其分成多个块。 重复此过程,直到整个摘要集适合单个上下文窗口并生成单个摘要。 我们使用相同的方法,独立于用于摘要的大语言模型。

A.11示例

A.11.1 工程助理聊天机器人

Question: Write a System Verilog assert to check if signal A is true within 5 cycles of signal B being true Answer: Sure, here is the System Verilog assert to check if signal A is true within 5 cycles of signal B being true: assert property (@(posedge clk) disable iff (~rst_n) (signal_B && !signal_A) |-> ##[1:5] signal_A ); This assert checks that if signal B is true and signal A is false, then signal A will become true within the next 5 cycles. The ‘##[1:5]‘ syntax is used to specify a delay range from 1 to 5 cycles. The ‘disable iff (rst_n)‘ clause ensures that the assert is not triggered during reset.
Question: why do we add retiming stages? Answer: Retiming stages are added to improve the timing of the design and to account for the physical distance between different parts of the chip. By adding retiming stages, we can reduce the amount of time it takes for signals to travel between different parts of the chip, which can help to improve the overall performance of the design. Additionally, retiming stages can also help to reduce the amount of noise and interference that can occur on the signals, which can further improve the performance of the design.
Question: How do I run multiple seeds of random tests using testgen framework? Answer: You can run multiple seeds of random tests using the Testgen framework by using the rand_tgen target. This target allows you to specify a variety of options for the stopping criteria of random runs using the same Testgen testlist(s). nvmk -c . rand_tgen TESTLIST=my_testlist MON=1 TGEN.LOOP=50 \par This command will run 50 iterations of the my_testlist testlist, each with a different seed. You can specify the number of iterations and the seed mode using the TGEN.LOOP and SEED options, respectively.

A.11.2 EDA 脚本生成

一些函数名称和命令被混淆。

Question: write a code in TOOL1 to print the number of flop cells in the given rectangle (0,0,100,100) Answer: # Sure, here is a TOOL1 code to print the number of flop cells in the given rectangle (0,0,100,100): \par# This code gets the top_ref of the design top_ref = env().get_top_reference() # This code gets the cells of the rectangle in the top_ref cells = env().layout().cells_in_rectangle( top_ref, rectangle(0, 0, 100, 100), hierarchical) # This code gets the cells that are flop cells flop_cells = cells.type("is_flop_cell") # This code prints the number of flop cells %**** Appendix.tex Line 650 ****print(flop_cells.size())
Question: Write a TOOL2 tcl proc to find intersecting logic from pins ’$pinA’ to pin ’$pinB’. Answer: #Sure, here is the code: %**** Appendix.tex Line 700 ****proc myfunc {pinA pinB} { # Get all the pins in the fanout of the given pin set fanout_pins [fanout -from $pinA] # Get all the pins in the fanout of the given pin set fanin_pins [fanin -to $pinB] # Get the intersection of the two collections set intersection [common_logic $fanout_pins $fanin_pins] # Return the intersection return $intersection } \par

A.11.3 Bug总结与分析

用户名、芯片名称和路径被混淆。

Prompt: BugId : 002 Synopsis : Request power/current measurement on fabrics using fabric test module Module : Silicon - DFT Description : Hi all, We want to evaluate silicon current (power) consumed by fabric macros in a chip. This will help us correlate this power to pre-Si power estimates. Here are the conditions we want to look at for this data: Fabric test module activity: 0/25/50/75/100% Corners: typical_low_voltage typical_high_voltage We want to isolate fabric current (power) as much as possible, so we want to enable only the logic needed for fabric test modules and the fabrics themselves. If this information can be broken down per module (there are 6 in the chip), that will help. Severity : 5-Performance Priority : 5-Normal Comments : #1 : Author : User A Is this a requirement only for current or for future chips as well ? #2 : Author : User B There will likely be interest in future chips to perform this exercise as we push the boundaries of fabric power density for better area. #3 : Author : User A What is needed in this bug ? @User B It is not clear. Can you list the specific needs with timelines and priority Technical Summary: In the internal bug management system, a bug has been filed regarding the power and current measurements of the fabrics in the latest chip. The request is to evaluate the silicon current (power) consumed by the fabric macros in the latest chip and to correlate this power to pre-Si power estimates. The conditions for the measurements are the fabric test module activity at 0/25/50/75/100% and the corners are typical_low_voltage and typical_high_voltage. The data needs to be broken down per module (there are 6 in the latest chip). Only the logic needed for fabric test modules and the fabrics themselves need to be enabled. Managerial Summary: User A asks User B if the need for evaluating the silicon current of fabric macros in a chip is only for that specific chip or for future ones as well. User B replies that there will likely be interest in future chips to perform this exercise as they push the boundaries of fabric power density for better area. User A then asks what is needed in this bug and asks for specific needs with timelines and priority. Task Assignment: User B