哈希游戏- 哈希游戏平台- 哈希游戏官方网站
本文的共同第一作者是墨尔本大学计算机科学硕士黄思明和复旦大学计算机科学硕士程天豪。OpenCoder 项目是二人在 INF 实习期间与 M-A-P 开源项目合作的成果,由 INF 主导,M-A-P 积极参与,通讯作者为汪自力与褚崴。来自 INF 参与者包括:郝嘉然,宋刘一汉,徐阳,汪自力,褚崴,徐盈辉,漆远。来自 M.A.P 的参与者包括:张舸,张晨晨,柴林政,J.Yang, J.H.Liu。其余合作者有:J.K.Liu;袁瑞峰;付杰;刘乾,Tiktok 研究员;张兆翔,中国科学院自动化研究所研究员。
可以注意到,当使用 PCA 对比 The Stack V2 和 RefineCode 的 codebert embedding 时,观察到这两个数据集之间有明显的区别。具体而言,在图 3 中,The Stack V2 数据显示出更多的离群点,而 RefineCode 的嵌入则更为紧密地聚集。此外,通过对离群数据的分析,OpenCoder 发现这些离群点通常表现出许多低质量的特征,例如纯文本注释、仅包含十六进制数据,以及缺乏计算逻辑的极短代码,这些特征会扰乱预训练数据集的分布,最终影响预训练的效率。
OpenCoder 采用了 WSD(Warmup, Steady, Decay)学习率调度策略,以在不同训练阶段中确保模型的稳定性与高效性。在训练初期,模型通过 2000 步的 warmup 阶段逐步提升学习率,达到峰值后进入稳定阶段,保持较长时间的固定学习率。最后,在退火阶段逐步降低学习率,实现模型的快速精细调优。在退火阶段中,除原始分布 RefineCode 外,OpenCoder 加入了算法相关语料库,同时合成了高质量代码段与代码教科书两种形式的数据,通过添加算法相关数据以及对算法知识进行反复改写来进一步增强来提高模型的代码逻辑能力。
OpenCoder 在指令微调期间使用了两阶段的训练策略。在微调过程的第一阶段,重点是广泛的真实用户指令与计算机科学理论相关知识。第一阶段的微调使 OpenCoder 能够理解和响应各种真实的用户需求。这些指令涵盖了计算机科学的各个方面,从基础编程到高级算法设计,再到复杂的数据结构操作。由于涵盖了广泛的代码相关指令,OpenCoder 在处理不同类型的编程问题时表现出卓越的适应性,能够灵活应对多种场景下的编码需求。
可以发现使用原始数据训练的 LLM 优于使用过滤数据训练的 LLM,这一结果与 SantaCoder 的研究结果一致。此外,研究团队进一步展示了这两个 LLM 的训练损失,可以观察到使用过滤数据训练的 LLM 的损失低于使用原始数据训练的 LLM。对此现象,研究团队推测使用星级作为过滤信号能够提升数据质量,但相较于原始数据,数据的多样性有所限制。通过对二者数据分布的可视化分析,团队进一步验证了星级过滤显著影响了整体数据分布,削弱了数据多样性这一推断。
研究团队在 1.5B 模型上验证了两阶段 SFT 的收益。通过观察发现,Stage 1 的数据展现出显著的多样性,但平均质量相对较低。相比之下,Stage 2 的数据由高质量的代码特定 SFT 数据组成。该两阶段 SFT 策略使得模型在 Stage 1 中获得广泛的能力,随后在 Stage 2 中针对代码相关任务进行针对性提升。此外,类似于 Chatbot Arena,研究团队采用包含近 400 个人工创建样本的 Code Arena 测试集,以模拟真实环境中的用户代码相关提示。Code Arena 以 GPT-4 作为基准,并用 GPT-4 来判断哪个大语言模型(LLM)具有更好的响应能力,报告的结果为相对于 GPT-4 的胜率。结果展示了两阶段 SFT 训练策略在下游 Benchmark 上与体现真实应用能力的 Code Arena 上皆有收益。