【论文阅读】ChipNeMo中的数据集处理

前面总体学习了《ChipNeMo: Domain-Adapted LLMs for Chip Design》,然后又继续仔细看了论文中的领域适配分词和领域数据微调的预训练检索模型,对于数据集的处理,也需要仔细看一下。

提炼重点:1)对于数据集,除了领域数据,依然需要公共数据,避免由于微调带来模型原有能力的灾难性遗忘。2)需要有领域评估基准,同样的,评估基准需要包含公共的LLM学术基准。3)数据重采样,这个方面,比如文章提到“对代码数据进行了下采样,同时对自然语言数据,特别是设计文档进行了上采样”等,但是,具体的采样比例如何获得,文章并没有说。参考其他来源,数据重采样的合适比例,应该是通过尝试获得,训练后如果评估效果不好,相应调整数据采样比例,反复试验获得的良好的评估结果。

数据集处理

对于数据集处理,包括四个方面。
1、训练数据
在领域适配预训练(DAPT)期间,文章从专有的芯片设计特定数据源和公开可用的数据集中构建了数据集。
芯片设计数据集:文章的内部数据集包含与芯片设计相关的各种文本来源,涵盖了设计、验证、基础设施和内部文档。表3提供了使用LLaMA2分词器收集后过滤的数据的细分,以及相应的token数量。文章通过收集所有相关内部数据,然后根据文件名扩展进行过滤,区分机器生成和人工编写的内容来构建数据集。尽管文章在三个特定用例上进行了评估,但文章并没有特别将数据集限制为已知与这些用例相关的来源,因为文章相信纳入额外的领域知识将提高性能。收集、清理和过滤后,内部数据训练语料库拥有231亿个token。
公共数据集:文章使用来自各种来源的公开数据样本来增强芯片设计特定的数据。这是开发基础大型语言模型的常见做法。文章的方法是从其他语言模型中重用公共训练数据,条件是它必须是公开可访问的,并且与开源兼容。这些数据集与LLaMA2(Touvron等人,2023年)中使用的预训练数据高度相关,旨在DAPT过程中保留一般知识和自然语言能力。ChipNeMo使用的公共数据集可以分为两组,自然语言和代码。对于自然语言部分,文章从Wikipedia数据(Gao等人,2020年)中提取,因为它被广泛认为数据质量高。对于代码,文章利用GitHub数据(Kocetkov等人,2022年),重点关注也出现在文章内部数据芯片设计数据集中的编程语言,如C++、Python和Verilog。为了确保整体数据集代表预训练分布,文章执行了下采样操作,结果大约有9.2%的总训练token从这些公共数据集中采样,保持自然语言和代码的代表性平衡。训练用途的数据分布详情显示在表3中。
数据混合:文章收集的领域数据中有很大一部分是由来自不同来源的未标记代码组成的。为了增强模型对特定领域知识的理解,文章在2到4个训练时期内对代码数据进行了下采样,同时对自然语言数据,特别是设计文档进行了上采样。文章还增加了文章认为与下游应用程序更相关的数据的表示,例如人工编写的EDA工具脚本。此外,文章合并了1个训练周期的公开可用域数据。训练的Token分布细节如表3所示。
在这里插入图片描述

2、对齐数据
在进行监督式微调(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展示了文章的领域特定指令数据集的数量。值得注意的是,与大量的生成式聊天指令数据相比,领域特定指令数据集中的总训练样本数量相当少。
在这里插入图片描述

3、领域评估基准
为了快速且定量地评估各种模型的准确性,文章建立了以多项选择题和答案格式为结构的评估标准,每个用例都设计有至少一个复杂答案选项,以挑战领域专业知识有限的个体。在制定这些多项选择题的过程中,与领域专家的合作至关重要。文章的目标是确保每个问题都至少包含一个复杂的答案选项,从而对那些领域专业知识有限的人构成挑战。文章还特别注意防止问题中不经意地掺杂来自文章领域特定对齐数据的信息。除了每个用例的基准之外,文章还创建了另一个涵盖模拟和数字设计主题的通用电路设计知识基准。评估基准的多项选择题数量如表5所示。
在这里插入图片描述

当文章在上述基准上报告结果时,文章采用五次不同运行的平均结果,以减轻测试过程中的变异和噪声的影响。每次迭代使用一组5个样本的例子,在每次单独运行中引入变化。
除了这些领域特定的评估基准之外,文章还包括了常用的公开可用的LLM学术基准。此外,文章还通过评估Python的HumanEval(Chen等人,2021年)和Verilog的VerilogEval(Liu等人,2023年)来衡量模型的代码生成能力。

4、数据收集过程
芯片设计数据集的数据收集,是用一组shell和Python脚本实现的,旨在识别相关的设计数据和文档,在适用的情况下将其转换为纯文本,使用基本质量指标对其进行筛选,计算精确的文件重复数据消除的校验和,并压缩它们以供存储。收集流程没有使用现成的LLM特定的抓取和收集脚本,因为文章的目标是通过内部数据源(网络文件系统和内部web应用程序)的原位数据收集来最大限度地减少空间需求。对于基于文件系统的收集,在对数据进行质量过滤的同时,数据被保留在适当的位置,而不是在本地存储额外的原始数据集。
设计和验证数据收集包括各种源文件,包括Verilog和VHDL(RTL和网表)、C++、Spice、Tcl、各种脚本语言以及与构建相关的配置文件。来自内部web服务的数据是通过REST API调用和传统抓取收集的,在这两种情况下,都使用开源BeautifulSoup(Richardson,2007)Python库删除HTML格式,以最大限度地减少无意中删除编码示例,代价是引入更多的样板导航栏和其他HTML页面元素。文章的数据收集流支持传统的文档格式,包括.docx、.pptx和.pdf,使用现成的Python转换库和开源工具。
由于大多数内部数据被认为是高质量的,因此应用了最小限度的过滤:行数过滤用于确保排除过大或过小的文件,并将文件分为手动编写和工具生成的大类。

数据用例举例如下图
在这里插入图片描述
在这里插入图片描述

数据重采的比例变化,如下图
在这里插入图片描述

领域评估基准如下图
在这里插入图片描述

训练消融研究

对于文章的消融研究,文章进行了多轮领域适配预训练。
使用增强型分词器与原始分词器进行训练的差异似乎可以忽略不计。因此,文章将开放领域学术基准上的准确性降低主要归因于领域数据。此外,去除公共数据集仅在大多数任务上略微退步,包括学术基准。
在文章的探索中,文章尝试采用更大的学习率,如CodeLLaMA(Rozier等人,2023年)中所采用的。文章观察到在初始训练步骤中训练损失有大幅波动。尽管这种方法最终导致了训练和验证损失的改善,但文章注意到在所有领域特定和学术基准上都出现了大幅下降,编码除外。文章假设较小的学习率发挥了双重作用,既促进了通过DAPT领域知识的蒸馏,又保持了不会偏离基础模型太远的平衡,从而在显著提高领域特定任务性能的同时,保持了通用自然语言能力。
文章还探索了在领域适配预训练(DAPT)的背景下应用参数高效微调(PEFT)。为此,文章进行了两项实验,涉及引入LoRA适配器(Hu等人,2021年),引入了额外的2640万个(小型)和2.112亿个(大型)参数。在这两种情况下,文章的发现揭示了与全参数DAPT方法相比,在领域特定任务上的准确性存在显著差距。此外,当比较小型和大型PEFT模型的结果时,文章观察到在领域任务准确性上有边际提升,大型适配器表现出轻微的改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/660697.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS1快速入门学习笔记 - 11参数的使用与编程方法

目录 一、参数模型(全局字典) 二、使用方法 1. 创建功能包 2. 参数命令行的使用 3. 通过C实现参数设置 4. 在CMakeLists中进行编译 5. 运行程序 6. 编程方法(Python) 一、参数模型(全局字典) 每个节…

[学习笔记]CyberDog小米机器狗 开发学习

1、机器狗本身是UbuntuROS2系统 2、控制机器人只需要了解lcm和Ros topic通讯 3、传感器数据(包括一些imu(/imu)、激光雷达(/scan))会进行topic的一个广播。 仿真环境通信接口: -命令输入(见后续运控说明) 运控lcm数据接口 Motion man…

在离线环境中将 CentOS 7.5 原地升级并迁移至 RHEL 7.9

《OpenShift / RHEL / DevSecOps 汇总目录》 说明 本文将说明如何在离线环境中将 CentOS 7.5 升级并迁移至 RHEL 7.9。为了简化准备过程,本文前面将在在线环境中安装用到的各种所需验证软件,而在后面升级迁移的时候再切换到由 ISO 构成的离线 Yum Repo…

【STM32】F405/407的模块总览图,记录查看

从STM32F405/407数据手册中提取,方便以后查看。主要是什么外设连接在什么总线上,时钟频率是多少。 TIM2、3、4、5、12、13、14在APB1上,最大频率84M TIM1、8、9、10、11在APB2上,最大频率168M

Android(Java)项目支持Kotlin语言开发

Android(Java)项目通过相关Kotlin设置后,允许同时使用Java语言和Kotlin语言进行开发代码的。 示例环境: Android Studio Giraffe | 2022.3.1 Patch 3 Java 8 Kotlin 1.9.20 设置Kotlin选项: 第一步:在项…

LeetCode 110.平衡二叉树(Java/C/Python3/Go实现含注释说明,Easy)

标签 树深度优先搜索递归 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡的二叉树定义为: 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 原题:LeetCode 110.平衡二叉树 思路及…

FSNotes for Mac v6.7.1中文激活:轻量级笔记管理工具

FSNotes for Mac,一款专为Mac用户打造的轻量级笔记管理工具,让您的笔记管理变得简单而高效。 FSNotes for Mac v6.7.1中文激活版下载 它采用Markdown文件格式,让您轻松创建和编辑富文本笔记,无需担心格式问题。同时,FS…

浅论汽车研发项目数字化管理之道

随着汽车行业竞争不断加剧,汽车厂商能否快速、高质地推出贴合市场需求的新车型已经成为车企竞争的重要手段,而汽车研发具备流程复杂、专业领域多、协作难度大、质量要求高等特点,企业如果缺少科学健全的项目管理体系,将会在汽车研…

vue3 jspdf,element table 导出excel、pdf,横板竖版分页

多个表格需要,pdf需要的格式与原本展示的表格样式不同 1.创建一个新的表格,设置pdf需要的样式,用vue的h函数放入dom中 2.excel用xlxs插件直接传入新建el-table的dom,直接导出 3.pdf导出类似excel黑色边框白底黑字的文件,把el-t…

口袋实验室--使用AD2学习频谱参数测试

目录 1. 简介 2. 频谱相关参数 2.1 频谱相关基本概念 2.1.1 采样时间间隔 2.1.2 采样频率 2.1.3 采样点数 2.1.4 采样时间长度 2.1.5 谱线数 2.1.6 奈奎斯特频率 2.1.7 频谱分辨率 2.1.8 最高分析频率 2.1.9 频谱泄露 2.2 窗函数 2.2.1 AD2的窗函数 2.2.2 测试矩…

基于uniapp vue3.0 uView 做一个点单页面(包括加入购物车动画和左右联动)

1、实现效果&#xff1a; 下拉有自定义组件&#xff08;商品卡片、进步器、侧边栏等&#xff09;源码 2、左右联动功能 使用scroll-view来做右边的菜单页&#xff0c;title的id动态绑定充当锚点 <scroll-view :scroll-into-view"toView" scroll-with-animation…

linus下Anaconda创建虚拟环境pytorch

一、虚拟环境 1.创建 输入下面命令 conda create -n env_name python3.8 输入y 2.激活环境 输入 conda activate env_name 二、一些常用的命令 在Linux的控制平台 切换到当前的文件夹 cd /根目录/次目录 查看conda目录 conda list 查看pip目录 pip list查看历史命…