2025QECon全球软件质量效能大会:后训练与后处理:提升代码生成质量的实践_第1页
2025QECon全球软件质量效能大会:后训练与后处理:提升代码生成质量的实践_第2页
2025QECon全球软件质量效能大会:后训练与后处理:提升代码生成质量的实践_第3页
2025QECon全球软件质量效能大会:后训练与后处理:提升代码生成质量的实践_第4页
2025QECon全球软件质量效能大会:后训练与后处理:提升代码生成质量的实践_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

蒋思源|aiXcoder算法工程师目录CONTENTS01

代码生成质量提升03

后处理提升质量02

后训练提升质量04

总结PART

01如何提升代码生成的质量观察:•训练数据质量对生成代码质量极其重要•后处理手段对保证生成代码质量极其重要•利用大语言模型自我修正代码对最终生成质量作用突出

代码生成质量是全流程的后训练:•当前顶尖模型通过

RL

大幅度提升了代码质量•逻辑推理、数据推理等能力的学习能一定程度泛化到代码领域•通过

TestTime

Scalling

能进一步提升困难代码问题的质量推理阶段后处理:•软件工程拥有丰富且精确的辅助工具•结合规则与工具,进一步降低模型在缺少上下文情况下的幻觉推理•改进推理方式像人一样能回溯

「Post+」愈加重要后训练:-从训练数据、训练方式、训练任务上提升模型对代码质量上的感知。后处理:-在模型之外,借助prompt

、工具、workflow用现实世界上的信息与规则约束模型生成的代码质量。

概览PART

02后训练提升代码生成质量

指令微调:

基础质量优化Magicoder:

EmpoweringCodeGenerationwithOSS-INSTRUCT,

2023

指令微调:

基础质量优化SelfCodeAlign:Self-AlignmentforCodeGeneration,

2024问题:•代码大语言模型普遍缺乏代码执行能力方法:•通过多轮对话将编译器反馈信息嵌入到模型•为SFT引入编译器反馈信息

指令微调:

基础质量优化OpenCodeInterpreter:

IntegratingCodeGenerationwith

Executionand

Refinement,

2024观察•增量生成对于已有的语法结构有破坏性•项目级的上下文处理能力偏弱做法•将语法结构嵌入到训练任务中•将项目级上下文嵌入到训练任务中

指令微调:

基础质量优化aiXcoder-7B

:

A

Lightweight

and

Effective

Large

Language

Model

for

Code

Processing,

2024观察•代码正确性的语义复杂性难以通过SFT捕捉做法•模型直接针对问题深沉一组函数签名与单元测试代码•通过单元测试的通过与否直接计算奖励并作为策略模型的优化信号

偏好对齐训练:

精细化调整PLUM:

Preference

Learning

PlusTestCasesYields

BetterCode

Language

Models,

2024观察•模型生成的错误类型非均匀分布•代码生成存在易错点做法•通过PageRank对代码集合与测试集合排序识别易错点,构建偏好数据•修改奖励权重,加强模型对错误点的关注

偏好对齐训练:

精细化调整Focused-DPO:

EnhancingCodeGenerationThrough

Focused

PreferenceOptimizationon

Error-Prone

Points,

2025观察•代码质量也需要考虑可读性、效率、最佳实践等•传统静态分析很难处理多样性做法•提供不同问题在指令遵循、代码解释、代码复杂性和效率、代码可读性、编码风格五种方向的大量生成结果•使用LM对生成结果的五个方向进行评分

偏好对齐训练:

精细化调整CodeUltraFeedback:AnLM-as-a-Judge

DatasetforAligning

Large

Language

ModelstoCoding

Preferences,

2024

偏好对齐训练:

精细化调整观察•模型在补全代码时缺乏有效的代码项目全局上下文•基础模型的补全行为与人的编辑偏好不一致做法•通过静态分析,抽取可能需要的常量、类与方法等信息•通过Rag抽取相近可参考的代码片段•通过RL对齐模型生成结果与人工结果aiXcoder-7B-v2:Training

LLMsto

Fully

Utilizethe

LongContext

in

Repository-levelCodeCompletion,

2025观察•主流提升生成质量的方法是SFT•当前训练更关注NL与Code之间的映射

做法•将LLM视为Actor网络,引入Critic模型评估生成程序的功能正确性,为Actor提供密集反馈信号•训练Critic网络预测程序的单元测试结果(编译错误、运行错误、测试失败、测试通过)

基于规则的强化学习:

与确定系统交互CodeRL:

MasteringCodeGenerationthrough

Pretrained

Modelsand

Deep

Reinforcement

Learning,

2022观察•代码中的条件语句增多会使模型生成正确代码的概率呈指数级下降,难以在输出空间中找到高质量轨•单元测试可能无法覆盖复杂代码的所有部分,导致某些代码片段从未被执行•传统强化学习基于整个代码序列优化,包含了与奖励计算无关的代码片段,降低了优化精度做法•当模型在当前难度下生成正确代码的比例超过阈值时,减少提供的规范解决方案部分•创建Mask矩阵标记未执行的代码片段,并部分更新

基于规则的强化学习:

与确定系统交互StepCoder:

ImproveCodeGenerationwith

Reinforcement

LearningfromCompiler

Feedback,

2024

基于规则的强化学习:

与确定系统交互•DeepSeek-R1第一阶段强化学习训练•SFT

冷启动•通过

few-shot让顶尖

LLM

以确定格式生成

CoT数据•通过

prompt直接要求模型生成带反思和验证的

CoT数据•收集

R1-Zero生成的数据,并通过人工标注提升可读性与准确性•面向推理能力的强化学习•提供一批有明确答案的问题,涉及代码、数学、科学、逻辑推理领域•提供最终回答验证机制,纯规则系统作为

reward•统计模型回答中不同语言的占比,并作为

rewardDeepSeek-R1:

Incentivizing

ReasoningCapability

in

LLMsvia

Reinforcement

Learning,

2025

基于规则的强化学习:

与确定系统交互开源项目已经复现了很多代码规则性奖励:IOI竞赛题、代码编译与执行DeepSeek-R1:

Incentivizing

ReasoningCapability

in

LLMsvia

Reinforcement

Learning,

2025•观察:通过生成测试用例扩展数据质量仍然不够高•方法:CodeDPO通过自生成和验证代码与测试用例,利用类PageRank算法迭代更新代码片段的自验证分数,优先选择通过更多高可信度测试用例的代码片段,有效提升代码正确性。CodeDPO:AligningCode

ModelswithSelfGenerated

andVerified

Source

Code,

2024

基于规则的强化学习:

验证数据多样性问题•给定功能描述与代码,生成测试用例•给定功能描述生成测试用例输入的生成代码•通过运行时生成一组测试用例的输入•如果被测函数生成结果不一致,投票排除错误结果

基于规则的强化学习:

验证数据多样性问题LM-PoweredTestCaseGenerationfor

DetectingTricky

Bugs,

2024•观察:当前代码生成相关的训练基本都聚焦于独立函数•方法:针对解Issue的Agent

,以最后代码片段的字符相似性

作为RewardSWE-RL:Advancing

LLM

Reasoningvia

Reinforcement

LearningonOpenSoftware

Evolution,

2025

基于规则的强化学习:

代码范围的局限性•观察:处理项目级开发问题,模型会出现不遵循

prompt

、工具调用错误、Action陷入循环等•方法:识别正确与错误的

Action序列,并将正确的

Action偏好训练到模型中SEAlign:AlignmentTrainingforSoftware

EngineeringAgent,

2025

基于规则的强化学习:

代码范围的局限性PART

03后处理提升代码质量•通过现存的

CVE

实例,多维度抽取安全漏洞知识库•给定代码块,检索相应的代码缺陷背景知识•利用背景知识检测当前代码块的缺陷与漏洞

推理约束:

Prompt与采样约束生成内容Vul-RAG:

EnhancingLM-basedVulnerability

Detectionvia

Knowledge-level

RAG,

2024•观察:当前的代码生成缺少实时的回撤机制来排除错误路径•方法:解码过程中引入回溯机制,使模型能够在生成过程中检测错误、回退并重新生成,从而避免错误累积

推理约束:

Prompt与采样约束生成内容ROCODE:

Integrating

Backtracking

Mechanismand

ProgramAnalysis

inarge

Language

ModelsforCode

Generation,

2025

Agent:Workflow管控生成内容Self-collaborationCodeGenerationviaChatGPT,

2023在代码场景中,让模型自己对任务做拆解能有效提升效果•简单任务可以借助

CoT直接拆分为

Planning•复杂任务可以借助

ToT

多层拆分为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论