《A1--蒋思源--提升代码生成质量:代码大模型实践经验.pdf》由会员分享,可在线阅读,更多相关《A1--蒋思源--提升代码生成质量:代码大模型实践经验.pdf(38页珍藏版)》请在三个皮匠报告上搜索。
1、提升代码生成质量:代码大模型实践经验蒋思源 aiXcoder 大模型算法专家目录C O N T E N T S1.预训练数据处理2.偏好对齐训练3.软件工程工具4.多智能体协同5.领域化训练6.代码质量评测软件工程工具增强代码质量多智能体协同增强代码质量领域化增强代码质量强化预训练数据处理偏好对齐增强代码质量基础模型质量保证工程化提升推理质量适配闭源代码质量把控生成代码质量评测评测指标监控生成质量预训练数据处理01预训练数据处理原始代码数据挑选项目级综合过滤代码文件级过滤敏感信息去除语法分析静态分析 常规预处理内容:重复性代码 自动生成的代码 无意义的代码 语法分析:不完整的代码块 非法字符
2、关键词误用 缺少必要的语法元素 无效的语法结构 静态分析:可维护性:判断语句嵌套过深 不良命名规范 可靠性:资源泄露 数组越界 类型错误 作用范围错误 未捕捉的错误 未定义或未使用的变量 安全漏洞数据预处理流预训练数据处理-语法分析预训练数据处理-语法分析预训练数据处理 静态分析可维护性:np.is_nan()判定可靠性:构造方法不能返回值安全性:浮点数对比不安全安全性:变量释放后使用安全性:越界写安全性:内存溢出预训练数据处理 静态分析偏好对齐提升代码质量02偏好对齐Magicoder:Empowering Code Generation with OSS-INSTRUCT偏好对齐https
3、:/ Test Case Generation for Detecting Tricky Bugs 给定功能描述与代码,生成测试用例 给定功能描述生成测试用例输入的生成代码 通过运行时生成一组测试用例的输入 如果被测函数生成结果不一致,投票排除错误结果偏好对齐-基于模型的数据过滤我们会从 语义逻辑、代码质量、代码性能等五个方面评估总体质量,只有所有分数都是最高,才会保留作为训练数据。工程处理提升代码质量03工程工具 RAG 缺陷检测 通过现存的 CVE实例,多维度抽取安全漏洞知识库 给定代码块,检索相应的代码缺陷背景知识 利用背景知识检测当前代码块的缺陷与漏洞Vul-RAG:Enhancing
4、 LLM-based Vulnerability Detection via Knowledge-level RAGAGENT 增强代码质量04流程化-AgentSelf-planning code generation with large language model 在代码场景中,让模型自己对任务做拆解能有效提升效果 简单任务可以借助 CoT 直接拆分为 Planning 复杂任务可以借助 ToT 多层拆分为 Action流程化-AgentSelf-collaboration Code Generation via ChatGPT流程化-AgentCODEAGENT:Enhancing
5、Code Generation with Tool-Integrated Agent Systems for Real-World Repo-level Coding Challenges领域化训练提升代码质量05领域化-增量训练企业领域知识l行业业务术语与流程规范l行业技术标准与规范l企业产品和服务详细信息l企业技术栈l编程框架.个性化训练的价值更准确的代码生成更好理解企业特有业务逻辑和技术细节遵循企业编码规范,风格统一的代码帮助新员工快速掌握技术规范.领域化-增量训练领域化-增量训练微调类型具体方法优点缺点Parameter-EfficientFine-Tuning(高效参数微调)LoRA
6、节省计算力:7B参数量以下可以不实现各种并行训练策略 数十亿参数量模型可以在消费级显卡上训练收敛速度可能不如Fine-TuningAdaptersPrefix TuningLadder Side-TuningFine-TuningFine-Tuning训练效果有保证计算资源需求大训练可能不稳定可能出现过拟合生成代码质量评测06领域化-增量训练1.同时考虑 pass1测试用例通过率,以及secure1生成代码安全性2.经过更加严格的预训练数据筛选,训练出来的基础模型能生成更高质