Merged Code + Language Skill Model
Nikola Balic (@nibzard)· emerging
问题
构建一个在自然语言任务(如摘要生成、文档生成)和代码生成/推理领域均表现优异的统一模型,通常需要执行大规模的集中式训练任务。这会存在以下问题:
- 计算密集型:从零开始在代码和语言语料库上进行训练,需要海量计算资源。
- 易受任务干扰:当在同一流水线中混合代码与自然语言任务时,模型可能会遗忘先前掌握的技能。
方案
采用去中心化训练+模型融合方案:
1. 训练「语言专精模型」
- 对基础LLM进行微调,覆盖文档生成、摘要、代码注释及通用自然语言任务。
- 保存检查点
lang-specialist-ckpt.pt。
2. 训练「代码专精模型」
- 基于同一基础LLM架构,独立针对代码专属语料库开展微调:涵盖开源代码仓库、编程挑战数据集及代码-注释配对数据。
- 保存检查点
code-specialist-ckpt.pt。
3. 权重平均融合
- 采用简单算术权重平均(或Fisher加权平均)方法,将
lang-specialist-ckpt.pt与code-specialist-ckpt.pt融合为merged-agent-ckpt.pt。 - 可选操作:融合后针对混合数据集(小型自然语言+代码任务)进行短期微调,以消除潜在冲突。
4. 迭代融合轮次
- 当新增专精模型(如「Python测试专精模型」或「静态安全分析专精模型」)可用时,定期将其融合至主Agent中。
如何使用
- 架构一致性:确保所有专家模型采用完全一致的架构(例如,18亿参数、相同层数)。
- 模型融合工具:使用成熟脚本(如
transformers库的merge_models)或自定义代码,在平均计算过程中应用费雪信息矩阵(Fisher Information Matrix)加权,以最小化模型间干扰。 - 融合后验证:运行一套基准测试套件,覆盖自然语言任务(例如摘要、问答)和代码任务(例如代码生成、漏洞修复)。
权衡
- 优点:
- 研发并行化: 团队可独立开发NL与代码能力,随后进行合并。
- 降低集中式计算开销: 无需借助单一大型GPU集群同时训练这两类技能集。
- 缺点/注意事项:
- 潜在性能稀释: 若数据分布存在冲突,朴素平均法可能会“模糊”专精模型的优势。
- 模型对齐要求: 所有专精模型必须使用相同的基础分词器和词表,以避免出现不匹配问题。
参考文献
关键词:
围绕模型融合主题,涵盖开源强化学习智能体相关观测结论、去中心化技能获取观点,以及Cohere关于专业模型融合的专项白皮书内容。
直译:
基于2025年5月“开源智能体强化学习(RL)”分享中“模型融合的效果出奇地好”这一观测结论,以及威尔·布朗(Will Brown)关于去中心化技能获取的评述。
Cohere公司关于专业模型融合的《Command A》白皮书。
来源摘要
正在获取来源并生成中文摘要…