这个工作的宣传真是做的不咋地,之前Github仓库出来,已经写过2次了,确实很牛,所有的东西完全开源,能跟llama2 llam3 对比一下,属实是不容易了!上周出了技术报告,梳理一下核心要点。
标题:MAP-Neo: Highly Capable and Transparent Bilingual Large Language Model Series
主打一个完全开源,训练过程透明,应该是除了sft阶段的数据,其他的都开源了。
地址如下:
https://arxiv.org/pdf/2405.19327
https://map-neo.github.io/
- 分词器 ======
- 通过 SentencePiece 的实现,使用 BPE 算法来训练分词器。训练数据由预训练语料库中的50B个样本组成,最大长度为64K。为代码、数学和高质量学术数据分配更高的采样权重。为了平衡计算效率和模型性能,将词汇量设置为64000,并将max_sentence_piece设置为16,以提高中文性能
- 所有数字切分成单独的数字,未知的 UTF-8 字符回退到字节粒度。不对训练样本使用任何归一化策略,也不添加虚拟前缀。
- 删除多余空格参数(remove extra whitespaces)设置为 False,该参数在 SentencePieceTrainer 中默认打开。此设置会严重影响预训练期间的代码榜单测试性能,因为正常的代码缩进被视为单个空格。
- 模型预训练的第一个阶段。因为没有禁用“删除多余空格”参数(该参数在 SentencePieceTrainer 中默认启用)。在训练过程中,观察到 QA 推理和数学基准的稳步提升,但代码基准指标出现波动并且没有显示出预期的改进。为了解决这个问题,在训练的第二阶段修复了这个错误,显著提高了代码指标。
- 数据 =====
比例比较标准
过滤过程包括:1)文档级和句子级过滤,确保文本长度充足、字符有意义和一致性;2)重复文本删除,包括n-gram级别和句子级别;3) 敏感词检查,消除包含黑名单术语的文本。
精确的文档重复数据删除 & Minhash LSH 重复数据删除
段落重复数据删除:段落定义为由换行 UTF-8 字符“\n”分隔的文本部分。段落重复数据删除是删除网站导航标题、广告和类似元素的有效方法。由于段落去重涉及删除部分文本,因此可能会对内容分析造成一些干扰。
Exact Substring Deduplication:虑到语言的多样性,当重复文本的长度足够长时,它们很可能是相互衍生的或源自相同的参考文献。
保留比例
- 文档处理流程 =========
结合PP-StructureV2 、Marker 等框架的优点
- 高质量补充数据集 ===========
- 种子数据集收集:收集感兴趣领域的高质量种子数据集,例如数学、代码或基于wiki 的内容。
- domain定义为共享相同root url 的种子数据集中的数据条目,并从种子数据集中的每个domain中提取样本作为正样本,以增强格式多样性。相应地,从Common Crawl中获取等量的数据作为负样本。
- 采用FastText 模型进行二分类,用于估计数据合格的置信度。(为了简化置信度排序过程,对数据子集进行采样,确定一个可行的阈值,以平衡数据排除与保留。)
- 通过chatgpt进一步使用url来评估保留的数据( field specificity),目的是减少误报的发生率,同时保持必要的召回率。
- 将先前迭代中的正数据整合到正样本中,以使 FastText 模型的训练基础多样化,迭代这个过程
- 2阶段预训练 =========
基础阶段:学习通用能力,这里还是用了warmup之后,余弦退火,从210^-5开始,回到210^-5
衰减阶段:修正前面提到的代码问题。从2*10^-4开始
- 对齐 =====
监督微调
- 第一阶段:增强指令跟随能力,可以显着提高模型的基础能力(例如代码和数学技能),在此阶段利用超过 200 万条数据。训练3个epoch
- 第二阶段:增强聊天能力,专注于提高模型的聊天能力,同时保持第一阶段获得的基础技能。收集了超过 10 万条来自真实用户对话的多轮对话数据。为了确保模型保留其基础功能,包含从第一阶段提取的 5k 数学和代码相关数据。实验表明,SFT 的这个附加阶段显着提高了模型在聊天基准上的性能,例如 MT-Bench 和 AlpacaEval ,而不会影响其基础能力。训练1个epoch
损失过滤掉输入的prompt部分
DPO
每次迭代由三个阶段组成:1)生成配对响应,2)使用奖励模型标记响应,3)使用 DPO 损失训练 LLM
(利用 Nectar 7 作为我们的提示数据集,使用 Starling-RM-34B 作为奖励模型。该模型是根据 Yi-34B-Chat 进行微调的,并为任何给定的提示和响应生成标量输出。为了保留模型的多语言能力,在第三次迭代中采用了中文偏好数据集 9)
- scaling laws ===============
拟合scaling laws的动机是在计算资源的限制下优化损失。这个过程被形式化为在受到可用计算资源( 𝐶)施加的约束,特别是每秒浮点运算(FLOPs),最小化验证交叉熵损失 𝐿,如下如下所示:
Neo scaling law
引入了一个正则化项𝑙𝑜𝑔(𝐷)
实测可以取得更好的预测效果
“
NLP前沿交流群成立,详见置顶推文。进群加微:nipi64310
-END-
右下角,帮忙点点
+