项目摘要
从场景、基线到可复现证据。
用合法、可追溯的数据对开源代码模型进行参数高效后训练,并在独立测试集上证明目标任务的改善。
项目手册建议先完成一个可以在电脑上运行的最小版本,再逐步加入真实约束。最后分享方法、结果、遇到的困难、限制和下一步。
评测重点
用指标说明取舍。
完整项目手册
项目五: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 不是加分项,独立评测和数据质量才是。
推荐技术路线
- 定义窄而真实的任务,并先写评测脚本。
- 用基线模型跑测试集,保存原始输出、失败类型、成本和延迟。
- 整理训练数据,记录每条数据的来源、许可证和清洗规则。
- 去重并做泄漏检查:测试题、相似补丁和答案不能进入训练集。
- 从小数据和少量训练步数开始,记录训练曲线和 checkpoint。
- 选择最佳 checkpoint 后,只在未见测试集上评估一次或少量预注册次数。
- 做消融:比较数据量、格式、LoRA rank 或是否使用错误反馈。
数据要求
- 只使用许可证允许的开源代码、公开数据集或自行编写的数据。
- 不采集私有仓库、泄露凭证、付费课程答案或个人信息。
- 保留来源 URL、许可证、处理日期和过滤规则。
- 从代码仓库拆分数据时,应按仓库、时间或功能模块划分,避免同一文件的近似副本跨越训练与测试。
- 对生成数据明确标记其来源,并人工抽查质量;合成数据不能替代独立测试集。
必须回答的问题
- 后训练到底改善哪个任务,用户如何感受到改善?
- 训练数据和测试数据是否存在近似重复或仓库泄漏?
- 模型是否只记住了格式,还是能处理新输入?
- 改善目标任务后,通用代码能力是否下降?
- 训练和推理分别花费了多少 GPU 小时、显存和费用?
评测指标
- 通过率:单元测试、编译、lint、SQL 执行或标准答案正确率。
- pass@1,以及资源允许时的 pass@k。
- 目标任务与保留通用集上的性能变化。
- 训练时间、GPU 峰值显存、推理延迟和每题 token 成本。
- 代码安全或质量问题的比例,例如无法解析、引入新依赖、修改无关文件。
资源与安全边界
训练和评测应在隔离环境中执行,尤其不要直接运行模型生成的未知代码。使用容器、受限测试沙箱或最小权限账户;禁止让模型访问真实生产密钥、内部服务或私有仓库。公开报告中应说明模型、数据和权重适配器能否再分发,以及适用的许可证。
进阶方向
- 从 SFT 进一步尝试 DPO、偏好数据或测试驱动的迭代数据生成。
- 为特定开源仓库构建检索增强的代码助手,并和纯后训练比较。
- 研究长上下文、工具调用或自动化 patch 验证。
- 使用项目三的 RSL 分析失败,但将训练数据和评测严格隔离。
- 比较 7B 与 27B:在同一任务下,模型大小、数据量和成本如何交互。
交付物
模型与数据卡、数据来源和许可证清单、数据切分与泄漏检查脚本、训练配置、adapter 或可复现 checkpoint 说明、基线/后训练结果表、至少五个成功与失败案例,以及一页资源账本。
参考资源
- Qwen Code Models:Qwen 系列开源模型与模型卡。
- Hugging Face TRL:SFT、偏好优化等后训练工具。
- PEFT:LoRA、QLoRA 等参数高效微调方法。
- SWE-bench:真实软件工程问题评测基准。
- BigCode Evaluation Harness:代码模型评测工具。
常见误区
训练后在训练样本上回答得更好,不能证明模型能力提升。这个项目的核心证据是严格的数据切分、未见任务上的自动评测,以及对训练成本和能力退化的诚实报告。
> 外部代码、模型、数据集和平台的使用须遵守其对应许可证、服务条款及适用法律;课程不授予第三方资源额外的再分发或商业使用权。