《A2-陈秋远--面向AI编程:代码大模型的SFT实践.pdf》由会员分享,可在线阅读,更多相关《A2-陈秋远--面向AI编程:代码大模型的SFT实践.pdf(20页珍藏版)》请在三个皮匠报告上搜索。
1、面向AI编程:代码大模型的SFT实践陈秋远腾讯高级研究员 代码智能化领域博士陈秋远腾讯高级研究员 代码智能化领域博士腾讯公司 Code平台中心 高级研究员,目前主要负责腾讯工蜂代码智能化方向的工作:研制高质量代码数据,对代码大模型进行调优,及支撑模型到产品的落地,并保障可用性。在浙江大学取得博士学位,研究方向为智能化软件工程,在软件工程领域发表顶级期刊、会议在内的学术论文共计十余篇,具有丰富的前沿工作落地实践经验。目录01CONTENTS0203代码大模型-编程场景与挑战代码大模型-SFT训练调优策略代码大模型-数据飞轮与工程落地代码大模型-编程场景与挑战代码大模型-编程场景与挑战代码大模型-
2、编程场景与挑战模型缺乏对代码的结构化理解模型缺乏对代码的结构化理解代码结构语法语义特征光标上下文函数调用语句AI过度补全代码大模型-编程场景与挑战序号软工任务输入定义输出定义1代码生成自然语言描述代码片段2代码补全(续写)代码片段代码片段3代码摘要(解释&注释)代码函数自然语言4测试用例生成代码函数代码函数:函数对应的测试用例5CR评论生成代码变更自然语言6代码描述续写自然语言自然语言7代码格式化代码文件格式化的代码文件8代码风格检测代码函数代码中的风格问题及相应的位置9代码翻译原始语言代码函数目标语言代码函数场景定义:场景定义:SFT可以让代码大模型更好地贴近业务场景,有哪些调优目标?可以让
3、代码大模型更好地贴近业务场景,有哪些调优目标?预训练与SFT的区别:预训练模型:训练模式匹配补全场景SFT模型:适应调优目标,对输入输出有特定的要求类比:预训练:阅读大量课本(源代码)SFT:让模型做练习题(编程题),让模型快速适应特定的考试场景。代码大模型目标:代码大模型目标:服务开发中的需求、编码、测试、维护全流程。挑战:细分场景众多,SFT数据稀缺代码大模型-SFT训练调优策略Evolve-instruct方法:方法:利用商业许可的SOTA大模型,在约束条件下让种子数据集“进化”(evolve),获得高质量代码数据集背景:细分场景众多,代码领域背景:细分场景众多,代码领域SFT数据稀缺,
4、数据稀缺,Evol-instruct方法快速方法快速构造构造代码大模型-SFT训练调优策略Evolve-insturct的例的例子(示意)子(示意)*对抗式约束的prompt需特殊构造,用于让模型更好地识别不合理指令Evolve-insturct核心:全方位的核心:全方位的约束指令约束指令,让数据,让数据“进化进化”,质量迭代提升。,质量迭代提升。代码大模型-数据飞轮与工程落地高质量代码数据标注细则高质量代码数据标注细则人工对齐可以对重点数据和领域进行标注,且准确度更高,是有益补充背景:需要人工标注,使代码模型和人类(开发者)偏好对齐背景:需要人工标注,使代码模型和人类(开发者)偏好对齐挑战:
5、代码领域的标注比通用自然语言专业度要求更高,需要可以落地实操的细则。数据飞轮数据飞轮:定期分析工蜂Copilot的badcase,针对真实存在的问题,对数据进行进一步优化。代码大模型-数据飞轮与工程落地训练方法论:训练方法论:AI大模型调参训练与数据高度相关,需要在充分实践中总结方大模型调参训练与数据高度相关,需要在充分实践中总结方法法提前规划实验方案提前规划实验方案(1)通过大量并行实验,规划好多组实验设置,选取最佳checkpoint。(2)随着epoch增加逐步加入更难的复杂指令数据。(3)针对不同任务设定合适的epoch,观察记忆效果。(4)构造迷你评测集,客观反应小数据集学习效果。不
6、同的阶段划分在实际训练过程中还有很多细节的不同,例如,典型的SFT训练方法,一般只会计算Assistant部分的loss(红色部分)。代码大模型-数据飞轮与工程落地实践心得:训练中的实践心得:训练中的“直觉直觉”和和“经验经验”*Markdown格式可以加强指令理解能力,更好地激活模型的代码生成效果经验1:代码是强结构化的语言,与自然语言结合时,更加适合结构化的指令微调。调优目标决定调优目标决定SFT数据的格式,影响模型能数据的格式,影响模型能力力相同数据集可以针对不同的任务针对性地构造,进而用于不同的微调任务。经