导读
KwaiCoder-23BA4-v1 是快手 Kwaipilot 团队最新开源的自研代码续写大模型,模型的训练依托于 Kwaipilot 团队提出的一种高效的模型训练方案。通过结合模型剪枝、知识蒸馏、细粒度合并等技术,相比传统方法以1/30的成本完成了23B 宽MoE架构代码续写模型的训练,并在多个代码领域评测集上实现了新的 SOTA。
1. 高质量数据:我们强调筛选和整理高质量代码、文本与合成数据,而非单纯扩大数据集规模,从而确保数据的相关性和一致性;
2. 一种经济且高效的模型训练路线:通过结合模型知识蒸馏与细粒度合并,完成模型的知识压缩(scale down)与模型参数扩充(scale up)。在scale down 阶段,模型参数减少,模型知识密度得到了提升,再基于此完成模型的剪裁与合并,使得模型以一种极高的知识密度完成了参数量的扩充,从而实现了性能的跨越。
结果表明,该方法不仅超越了基线模型的表现,还在多个基准上达到了SOTA指标。我们在整个训练路线中进行了350多次大小实验,本报告不仅详细介绍了我们的方法、也会将实验中收获的认知分享给大家,在文章中加粗体现。
Huggingface 地址:
https://huggingface.co/Kwaipilot/OASIS-code-1.3B
一、模型性能
二、数据构造
我们构造了3T的高质量预训练数据集,包括代码、数学与知识类文本语料。对于源码数据,我们依照研发场景的实际使用情况对编程语言分布和过滤策略进行了优化。为了提升语料中的知识浓度,我们使用了基于模型的过滤方法,并追加了更多高质量合成数据。多阶段训练中的详细语料分布如下图所示(上预训练,下退火)
面向代码续写补全能力,我们使用了在线 Fill-in-Middle (FIM) 策略,并对切分方式进行了优化,在保障样本完整和多样性的同时避免截断样本带来的幻觉问题。我们发现对切分方式的精细调整可以对补全能力带来较大的提升,使用经过调整后的格式仅在几百步训练中就达到了Fill-in-middle榜单的SOTA的水平(88->93)。
对于开放源码,我们利用仓库级别的程序分析技术以及细粒度策略规则进行了精细清洗。基于启发式策略过滤数据文件、环境文件、损坏或统计信号异常的文件;根据不同编程语言的特点来过滤掉逻辑不完整、格式异常的代码文件;对隐私子串与评测集污染进行过滤;利用程序分析构建仓库级别样本,并分别进行文件级与仓库级的精确和模糊去重,最大程度减小数据中的冗余并保持多样性。
在基于模型的处理中,我们构建了多维度的数据质量信号,并使用多级分类模型从开放源码中提取高质量子集;对于知识类语料,我们使用简单模型在开放语料中进行聚类挖掘,并进行多级过滤。我们的实验表明,对数据进行精细的多阶段过滤,能够显著提升模型的效果。但是这也使得我们的训练数据缺乏,在模型的训练阶段,我们观察到模型下游任务的上涨趋势并没有放缓。我们尝试混入一些没有经过精细过滤的数据,但是这部分数据并不能让模型获得更好的性能,我们不得不提前停止了模型的训练。
我们利用参数量更大、能力更强的教师模型进行了高质量合成,以实现对数理领域的定向优化。我们通过主题增强和结构优化,生产内容覆盖更加完善、由浅入深且结构清晰的教科书语料。以代码相关问答数据为种子,我们生产了包含短推理链的合成源码片段,并结合测试用例验证以消除模型幻觉。
三、模型训练
我们认为,目前大部分的开源模型在冷启动阶段 (from scratch) 使用了相似且巨量的数据、这一阶段的数据由于数据量巨大往往不会采用精细的数据过滤方法,数据质量一般,且资源消耗极大。
模型剪裁
模型剪裁
我们首先对模型的MLP、LayerNorm、Attention Head、Layer等进行重要性估计,并按照估计的结果对模型参数进行裁剪。我们对许多优秀的业界开源模型进行了实验,我们发现大部分开源模型的知识密度是不饱和的,这一点尤其体现在模型中间靠后的层中。
模型蒸馏
模型蒸馏
再将裁剪前的模型作为教师模型,裁剪后的模型作为学生模型进行在线知识蒸馏。对模型的中间结果与logits进行蒸馏,以进一步缩小教师模型与学生模型的差距。
细粒度合并
细粒度合并
我们进一步将学生模型按照宽度进行更细粒度切分,以完成细粒度的专家构造与宽体MoE的合并,在这个过程中,我们对模型参数进行了缩放,以确保合并之后的MoE模型是无损的。
CPT
CPT
在最后的CPT阶段,我们使用了三阶段的训练方法,同时我们将数据配比与学习率公布出来,以便于后续模型训练工作者完成模型的二次开发。
四、总结与展望
KwaiCoder-23BA4-v1 模型的发布是我们在代码生成和续写领域探索的重要里程碑,作为一种经济且高效获取自定义模型的方案,突破了这条路线的技术瓶颈。在未来的研究中,我们计划从以下几个方面进一步推进:
-
对模型剪枝和知识压缩方案的进一步探索; -
利用技术路线中可自定义模型结构的优势,探索更高效的训练、推理算法方案; -
更广泛的开源和社区合作,我们将继续推进模型和方案的开放性,并与学术界和工业界合作,共同构建更强大的代码生成系统。
引用:
END
点个「在看」 你最好看
原文始发于微信公众号(快手技术):KwaiCoder-23B-A4B-v1:以 1/30 的成本训练全尺寸 SOTA 代码续写大模型
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论