【论文阅读】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.mfbz.cn/a/585278.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二维码门楼牌管理应用平台建设:创新社区管理模式

文章目录 前言一、二维码门楼牌管理应用平台的建设背景二、在线打卡功能的实现与意义三、查看浏览网格员在线打卡记录的重要性四、二维码门楼牌管理应用平台的未来展望五、结语 前言 随着信息技术的不断发展,社区管理正逐步迈向智能化、便捷化。二维码门楼牌管理应…

Databend 开源周报第 142 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持 WASM UDF …

Linux专栏01:Linux发展历史及背景介绍

博客主页:Duck Bro 博客主页系列专栏:Linux专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Linux发展历史及背景介绍 编号:01 文章目录 Linux发展历…

在kuboard中添加k8s集群

1.登录kuboard后,点击添加集群面板 系统会跳转到k8s集群添加页面,按照页面提示输入自身的集群信息即可,此处没有什么难点。 添加成功后,点击集群面板,然后点击集群概要信息,就可以查看集群节点信息。 集群节…

C++-8

1.C中list容器实现 using namespace std;int main() {list<int> l1;l1.assign(2,3);list<int>::iterator n l1.begin();for(n l1.begin();n!l1.end();n){cout << *n << "\t";}cout << endl;cout << "last one " &l…

【书生浦语第二期实战营学习笔记作业(七)】

课程文档&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/opencompass/readme.md 课程作业&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/opencompass/homework.md OpenCompass 大模型评测实战 1. 大模型的评测1.1 大模型评测如何促进发展1.2 大…

Flink checkpoint 源码分析- Flink Checkpoint 触发流程分析

序言 最近因为工作需要在阅读flink checkpoint处理机制&#xff0c;学习的过程中记录下来&#xff0c;并分享给大家。也算是学习并记录。 目前公司使用的flink版本为1.11。因此以下的分析都是基于1.11版本来的。 在分享前可以简单对flink checkpoint机制做一个大致的了解。 …

城会玩,Selenium+Docker成功解决这一大难题

01、需求背景 日常测试中会遇到对web应用进行UI自动化的测试场景&#xff0c;一般常用的工具是使用Selenium&#xff0c;一套简单的UI自动化架构如下&#xff1a; 上图即为简单搭建的一套UI自动化测试架构&#xff0c;但 串行执行测试用例&#xff1a; 一台机器只能安装一个…

[Meachines][Hard]FormulaX

Main $ nmap -sC -sV 10.10.11.6 --min-rate 1000 # echo 10.10.11.6 formula.htb>>/etc/hosts 创建一个新用户,登录 来到聊天窗口,发现普通用户无法使用 来到联系页面,测试跨站 {"first_name":"<img srchttp://10.10.16.6/s-h4ck13/>",&qu…

form1弹出子窗体form2,拖动子窗体判断是否离开父窗体区域,含源码(学习笔记)

一、效果&#xff08;进入和离开&#xff09; 子窗体到达父窗体边缘时变色。 二、代码分析 判断父窗体的目的&#xff0c;可以控制子窗体要随父窗体走。上面代码需要加以处理。 如&#xff1a;this.Location new Point(parentPoint.X distanceFromEdge, this.Location.Ydis…

给rwkv_pytorch增加rag

RAG 参考地址语义模型地址选择该模型使用方法方法二安装方法下载模型到本地材料材料处理语义分割计算得分根据得分 分割文本 构建向量数据库问答匹配问答整合 参考地址 RAG简单教程 分割策略 语义模型地址 hf 选择该模型 gte 使用方法 import torch.nn.functional as F…

AQS共享模式之CyclicBarrier

概念&#xff1a;CyclicBarrier翻译为循环(屏障/栅栏)&#xff0c;当一组线程到达一个屏障&#xff08;同步点&#xff09;时被阻塞&#xff0c;直到最后一个线程到达屏障时&#xff0c;屏障才会打开&#xff0c;所有被屏障拦截的线程才会继续工作。 设计目的&#xff1a;和Co…

当你老了:献给40岁以上还在求职的朋友

怪盗团团长按&#xff1a;本文作者是我的一位老朋友&#xff0c;他已经年过四十&#xff0c;在国内职场&#xff0c;算是不折不扣的中老年人了。难能可贵的是&#xff0c;最近他还换了工作&#xff0c;去了一个自己不熟悉的新行业奋斗。 我一直很纳闷&#xff0c;为何在中国&am…

该安装包不适配当前高性能处理器 请使用 64 位安装包

今天一台用户的一台手机报错&#xff0c;如下&#xff1a; 该安装包不适配当前高性能处理器 请使用 64 位安装包 查了下&#xff0c;网上也有人反馈该问题 https://ask.dcloud.net.cn/question/186865 最后在贴吧上发现答案&#xff1a;https://tieba.baidu.com/p/8773132859 …

Bluetooth Profile 蓝牙协议栈总结

GAP-Generic Access Profile 控制设备广播和连接 GAP profile 的目的是描述&#xff1a; Profile rolesDiscoverability modes and proceduresConnection modes and proceduresSecurity modes and procedures 设备连接过程 LE中GAP有4种角色&#xff1a;BroadcasterObserv…

使用groovy+spock优雅的进行单测

使用groovyspock优雅的进行单测 1. groovyspock示例1.1 简单示例1.2 增加where块的示例1.3 实际应用的示例 2. 单测相关问题2.1 与SpringBoot融合2.2 单测数据与测试数据隔离2.3 SQL自动转换&#xff08;MySQL -> H2&#xff09; 参考 Groovy是一种基于JVM的动态语言&#x…

LVGL自定义滑动

触摸和编码器都可以操作 typedef struct {lv_obj_t* obj;int16_t x;int16_t y;int16_t width;int16_t height; }pos_and_size_t;typedef struct {lv_obj_t* obj;lv_coord_t height;lv_coord_t width;lv_coord_t width_pad;lv_coord_t height_pad;lv_coord_t child_widget;lv_co…

2024王炸组合!基于Mamba的遥感图像处理引爆顶会!

对比传统方法&#xff0c;基于Mamba的遥感图像处理在计算效率和分析精度方面遥遥领先&#xff0c;Mamba遥感也成为了论文研究的新方向。 具体来说&#xff0c;在融合高分辨率的空间图像和低分辨率的光谱图像获取综合信息方面&#xff0c;Mamba可以提升性能&#xff0c;同时保持…

【Harmony3.1/4.0】笔记七-选项卡布局

概念 当页面信息较多时&#xff0c;为了让用户能够聚焦于当前显示的内容&#xff0c;需要对页面内容进行分类&#xff0c;提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换&#xff0c;一方面提升查找信息的效率&#xff0c;另一方面精简用户单次获取到的…

MySQL CRUD操作

前言&#x1f440;~ 上一章我们介绍了数据库的一些基础操作&#xff0c;关于如何去创建一个数据库&#xff0c;还有使用数据库&#xff0c;删 除数据库以及对表进行的一些基础操作&#xff0c;今天我们学习CRUD操作 俗称&#xff08;增删改查&#xff09; 如果各位对文章的内…