【论文阅读】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.rhkb.cn/news/317370.html

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

相关文章

Docker: 如何不新建容器 修改运行容器的端口

目录 一、修改容器的映射端口 二、解决方案 三、方案 一、修改容器的映射端口 项目需求修改容器的映射端口 二、解决方案 停止需要修改的容器 修改hostconfig.json文件 重启docker 服务 启动修改容器 三、方案 目前正在运行的容器 宿主机的3000 端口 映射 容器…

启发式搜索算法4 -遗传算法实战:吊死鬼游戏

相关文章: 启发式搜索算法1 – 最佳优先搜索算法 启发式搜索算法2 – A*算法 启发式搜索算法2 – 遗传算法 有一个小游戏叫吊死鬼游戏(hangman),在学习英语的时候,大家有可能在课堂上玩过。老师给定一个英文单词,同学们…

设计模式之监听器模式ListenerPattern(三)

一、介绍 监听器模式是一种软件设计模式,在对象的状态发生改变时,允许依赖它的其他对象获得通知。在Java中,可以使用接口和回调机制来实现监听器模式。 二、代码实例 1、事件Event类 package com.xu.demo.listener;// 事件类 public class…

Python 与 TensorFlow2 生成式 AI(三)

原文:zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者:飞龙 协议:CC BY-NC-SA 4.0 第七章:使用 GAN 进行风格转移 神经网络在涉及分析和语言技能的各种任务中正在取得进步。创造力是人类一直占有优势的领域&…

深入浅出TCP 与 UDP

🔥 引言 在互联网的广阔天地里,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)作为传输层的两大支柱,各自承担着不同的使命。下面这篇文章将带你从基础到进阶,全…

如何安全可控的进行跨区域数据交换,提高数据价值?

跨区域数据交换指的是在不同地理位置或不同网络环境下的数据传输和共享。随着数字化转型的加速,企业及组织越来越依赖于数据的流动来优化业务流程、增强决策制定和推动创新。然而,跨区域数据交换也带来了一系列的挑战和风险,主要包括&#xf…

天地图路径规划功能实现

目录 1、天地图路径规划2、路径规划3、参数说明4、Demo 1、天地图路径规划 天地图Web服务API为用户提供HTTP/HTTPS接口,即开发者可以通过这些接口使用各类型的地理信息数据服务,可以基于此开发跨平台的地理信息应用。 Web服务API对所有用户开放。使用本…

分享天某云对象存储开发的体验

最近体验了天某云对象存储的功能,作为一名资深开发者,开发体验差强人意,与阿里云存在一定的差距。 首先在开发文档上居然没有基于nodejs的代码示例,只有java,c#,go等的代码示例,虽然有javascript的,但那也只…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-5

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

计算机视觉——OpenCV 使用分水岭算法进行图像分割

分水岭算法 分水岭算法:模拟地理形态的图像分割 分水岭算法通过模拟自然地形来实现图像中物体的分类。在这一过程中,每个像素的灰度值被视作其高度,灰度值较高的像素形成山脊,即分水岭,而二值化阈值则相当于水平面&am…

Windows如何通过wsl2迅速启动Docker desktop的PHP的Hyperf项目容器?

一、安装WSL 什么是WSL? 官网:什么是WSL? Windows Subsystem for Linux (WSL) 是一个在Windows 10和Windows 11上运行原生Linux二进制可执行文件的兼容性层。 换句话说,WSL让你可以在Windows系统上运行Linux环境,而无需…

【Web】2024XYCTF题解(全)

目录 ezhttp ezmd5 warm up ezMake ez?Make εZ?мKε? 我是一个复读机 牢牢记住,逝者为大 ezRCE ezPOP ezSerialize ezClass pharme 连连看到底是连连什么看 ezLFI login give me flag baby_unserialize ezhttp 访问./robots.txt 继…

linux高性能服务器--Ngix内存池简单实现

文章目录 内存模型:流程图内存对齐code 内存模型: 流程图 内存对齐 对齐计算 要分配一个以指定大小对齐的内存,可以使用如下公式: 假设要分配大小为n,对齐方式为x,那么 size(n(x-1)) & (~(x-1))。 举个…

【分布式通信】NPKit,NCCL的Profiling工具

NPKit介绍 NPKit (Networking Profiling Kit) is a profiling framework designed for popular collective communication libraries (CCLs), including Microsoft MSCCL, NVIDIA NCCL and AMD RCCL. It enables users to insert customized profiling events into different C…

26.统一网关Gateway

网关的功能 1.身份认证,权限的校验。 2.服务的路由,负载均衡。用户请求被分配到哪一个微服务。一个微服务可以有多个实例,所以使用负载均衡。 3.请求限流。 springcloud网关实现有两种:gateway, zuul zuul是基于servlet实现的…

随笔Ubuntu上的的一些使用

Ubuntu简易使用 常用指令 cdlsmkdirrf -rm 路径 换源 备份镜像 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑文件设置 sudo gedit /etc/apt/sources.list清华源 # 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe mul…

数据仓库Data Warehouse

数据仓库Data Warehouse 数仓是一种思想,数仓是一种规范,数仓是一种解决方案 1. 数据处理方式 数据处理大致可以分成两大类: 联机事务处理OLTP(on-line transaction processing)联机分析处理OLAP(On-Line Analytical Processing)1.1. OLTP OLTP的全称是On-line Transa…

YOLO系列改进,自研模块助力涨点

目录 一、原理 二、代码 三、添加到YOLOv5中 一、原理 论文地址:

手机空号过滤,提高工作效率

手机空号过滤在多个方面都具有重要的作用。 首先,它对于短信群发商和电话营销商来说至关重要。通过空号过滤,他们可以确保手机号码数据库的准确性和有效性。由于每天都有大量人群因各种原因更换手机号码,导致每个号段中的空号率和手机状态都…

蓝桥杯如何准备国赛?

目录 一、赛前准备 1、如何刷题,刷哪些题? 2、记录(主要看个人习惯) CSDN博客 写注释 3、暴力骗分 4、从出题人的角度出发,应该如何骗分 二、赛中注意事项 一、赛前准备 1、如何刷题,刷哪些题&…