返回项目工作台

项目 06 · 代码智能

Small Coding Model with Data Post-Training

用合法、可追溯的数据对开源代码模型进行参数高效后训练,并在独立测试集上证明目标任务的改善。

06/ 06
适合方向
适合模型训练与数据治理
资源条件
单张消费级 GPU 的 QLoRA 范围
主要交付
模型与数据卡、许可证清单、泄漏检查、训练配置、基线对比和资源账本。

项目摘要

从场景、基线到可复现证据。

用合法、可追溯的数据对开源代码模型进行参数高效后训练,并在独立测试集上证明目标任务的改善。

项目手册建议先完成一个可以在电脑上运行的最小版本,再逐步加入真实约束。最后分享方法、结果、遇到的困难、限制和下一步。

评测重点

用指标说明取舍。

01pass@1 或任务通过率
02目标任务泛化
03能力退化
04训练成本与推理延迟

完整项目手册

项目五:Small Coding Model with Data Post-Training

一句话介绍

用经过清洗、可追溯的数据,对一个 7B 到 27B 级别的开源代码模型进行后训练,并证明它在目标编程任务上比基线更好。

背景

基础模型已经具备通用编程能力,但在特定代码库、语言、代码风格、工具链或任务类型上,表现往往不稳定。数据后训练可以把模型进一步对齐到特定任务,例如单元测试修复、API 调用、SQL 生成、代码审查、补全或仓库问答。

后训练的难点通常不是把 train.py 跑起来,而是定义目标、获得合法数据、避免评测泄漏、控制灾难性遗忘,并证明模型改善了真正未见过的任务。本项目聚焦数据驱动的 SFT(监督微调)、偏好优化或小规模继续预训练,不要求从头训练模型。

项目问题

选择一个具体且可自动验证的代码任务。以 Qwen 7B 或 27B 级别的开源模型为基线,构建或整理训练数据,完成一次可复现的参数高效后训练,并在独立测试集上和原模型对比。

适合的任务包括:Python bug fix、单元测试生成、SQL 查询、特定 SDK/API 调用、数据处理脚本、代码风格迁移,或针对一个公开小型仓库的 issue 修复。

最小版本

  • 选择一个允许训练和再分发的基础模型,并保存其精确版本与许可证。
  • 一个训练集、验证集和从未参与训练或筛选的测试集。
  • 至少一个未训练的基线模型结果。
  • 使用 LoRA、QLoRA 或等价的参数高效训练方法完成一次后训练。
  • 用单元测试、编译、静态检查或明确的标准答案评测输出。

在单张消费级 GPU 上,7B 模型的 QLoRA 是默认可行范围。27B 模型需要更激进的量化、梯度累积、CPU offload 或课程提供的计算资源;选择 27B 不是加分项,独立评测和数据质量才是。

推荐技术路线

  1. 定义窄而真实的任务,并先写评测脚本。
  2. 用基线模型跑测试集,保存原始输出、失败类型、成本和延迟。
  3. 整理训练数据,记录每条数据的来源、许可证和清洗规则。
  4. 去重并做泄漏检查:测试题、相似补丁和答案不能进入训练集。
  5. 从小数据和少量训练步数开始,记录训练曲线和 checkpoint。
  6. 选择最佳 checkpoint 后,只在未见测试集上评估一次或少量预注册次数。
  7. 做消融:比较数据量、格式、LoRA rank 或是否使用错误反馈。

数据要求

  • 只使用许可证允许的开源代码、公开数据集或自行编写的数据。
  • 不采集私有仓库、泄露凭证、付费课程答案或个人信息。
  • 保留来源 URL、许可证、处理日期和过滤规则。
  • 从代码仓库拆分数据时,应按仓库、时间或功能模块划分,避免同一文件的近似副本跨越训练与测试。
  • 对生成数据明确标记其来源,并人工抽查质量;合成数据不能替代独立测试集。

必须回答的问题

  • 后训练到底改善哪个任务,用户如何感受到改善?
  • 训练数据和测试数据是否存在近似重复或仓库泄漏?
  • 模型是否只记住了格式,还是能处理新输入?
  • 改善目标任务后,通用代码能力是否下降?
  • 训练和推理分别花费了多少 GPU 小时、显存和费用?

评测指标

  • 通过率:单元测试、编译、lint、SQL 执行或标准答案正确率。
  • pass@1,以及资源允许时的 pass@k。
  • 目标任务与保留通用集上的性能变化。
  • 训练时间、GPU 峰值显存、推理延迟和每题 token 成本。
  • 代码安全或质量问题的比例,例如无法解析、引入新依赖、修改无关文件。

资源与安全边界

训练和评测应在隔离环境中执行,尤其不要直接运行模型生成的未知代码。使用容器、受限测试沙箱或最小权限账户;禁止让模型访问真实生产密钥、内部服务或私有仓库。公开报告中应说明模型、数据和权重适配器能否再分发,以及适用的许可证。

进阶方向

  • 从 SFT 进一步尝试 DPO、偏好数据或测试驱动的迭代数据生成。
  • 为特定开源仓库构建检索增强的代码助手,并和纯后训练比较。
  • 研究长上下文、工具调用或自动化 patch 验证。
  • 使用项目三的 RSL 分析失败,但将训练数据和评测严格隔离。
  • 比较 7B 与 27B:在同一任务下,模型大小、数据量和成本如何交互。

交付物

模型与数据卡、数据来源和许可证清单、数据切分与泄漏检查脚本、训练配置、adapter 或可复现 checkpoint 说明、基线/后训练结果表、至少五个成功与失败案例,以及一页资源账本。

参考资源

常见误区

训练后在训练样本上回答得更好,不能证明模型能力提升。这个项目的核心证据是严格的数据切分、未见任务上的自动评测,以及对训练成本和能力退化的诚实报告。

> 外部代码、模型、数据集和平台的使用须遵守其对应许可证、服务条款及适用法律;课程不授予第三方资源额外的再分发或商业使用权。