MFTCoder论文被KDD 2024接收,开源v0.4.2版发布

1,257 阅读4分钟

蓝绿色现代几何安全提醒微信公众号封面.png

1. MFTCoder 简介

CodeFuse在2023年9月开源了一种多任务微调框架——MFTCoder,它可以实现在多个任务上同时并行地进行微调。通过结合多种损失函数,我们有效地解决了多任务学习中常见的任务间数据量不平衡、难易不一和收敛速度不一致等挑战。大量实验结果显示,相较于单独对单个任务进行微调或者多任务混合为一后进行微调,我们的多任务微调方法表现更优。此外,MFTCoder具备高效训练特征,包括提供高效的数据Tokenization模式,支持PEFT微调和全量微调,能有效提升微调训练速度并降低对资源的需求。MFTCoder是轻量的,简单清晰的,易于二次开发的,持续跟进Cutting-Edge技术的开源微调框架。

目前MFTCoder迭代到v0.4.2, 新增了对QLoRA + Deepspeed ZeRO3/FSDP的支持,可以使用更少的GPU,对更大模型(比如70B, 110B等)进行多任务微调

MFTCoder已适配支持了更多的主流开源LLMs,如Qwen2, Qwen2-moe, Gemma, Starcoder2, Mixtral、Mistral、Deepseek、 Llama、CodeLlama、Qwen、CodeGeeX2、StarCoder、Baichuan2、ChatGLM2/3、GPT-Neox等。

MFTCoder的详细介绍在我们之前的公众号文章中:干货!MFTCoder论文多任务微调技术详解

MFTCoder技术细节的论文已经被 KDD 2024 (ADS) 接收arxiv.org/pdf/2311.02…

新升级代码也已经开源到GitHub:github.com/codefuse-ai…

2. v0.4.2新特性Hightlights

  • 首先,新版本已经适配到transformers v4.40.2,因此也支持了众多新的开源模型, 比如Qwen2,Qwen2-moe,Starcoder2, Gemma等新的主流开源模型;

  • 同时,MFTCoder当前适配新模型的成本很低,只需要对transformers进行适当的版本升级,并将对应模型添加到训练支持的池子即可,欢迎广大同学通过PR提交后续新模型的支持

  • 然后,MFTCoder-accelerate框架新增支持了QLoRA + Deepspeed ZeRO3/FSDP,可以使用更少的GPU,对更大模型(比如70B, 110B等)进行多任务微调MFT;

  • 最后, 我们也同时用新的MFTCoder微调并开源了一个新的代码模型CodeFuse-StarCoder2-15B

3. MFTCoder提升Starcoder2-15b混合专家模型的代码能力实践

CodeFuse-StarCoder2-15B 模型地址:

魔搭:modelscope.cn/models/code…
HuggingFace: huggingface.co/codefuse-ai…

3.1. MFTCoder 多任务微调Starcoder2-15b

借助MFTCoder(v0.4.2)的多任务微调能力,我们可以使用多个代码任务数据集对Starcoder2-15b进行多任务微调(MFT)。在任务选择上,我们精选了4个核心代码任务数据,一共40w条指令问答数据。用基础任务微调对齐过的模型,在各类未训练过的代码任务上也有不错的泛化能力。

MFTCoder相应的关键配置如下:

{
    "lora_rank": 128,
	"lora_alpha": 32,
	"lora_dropout": 0.05,
	"targeting_modules": "all-linear",
    "learning_rate": "0.0001",
    "weight_decay": "0.01",
    "lr_scheduler_type": "linear"
}

训练过程loss情况如下图所示:

image.png

通过多任务微调,CodeFuse-StarCoder2-15B的各方面代码能力均有比较大的提升。

3.2. CodeFuse-StarCoder2-15B模型效果

对Starcoder2-15b进行多代码任务微调后,CodeFuse-StarCoder2-15B在HumanEval-X数据集中五种语言的Pass@1评测结果对比如下(用Greedy解码统一测试)

ModelPythonJavaScriptJavaC++Go
CodeFuse-StarCoder2-15B73.2%67.8%69.5%61.0%56.7%
Starcoder2-15b(base)46.3%
Starcoder2-15b-instruct72.6%

可以看出, CodeFuse-StarCoder2-15B比Starcoder2-15b 在HumanEval-python的pass@1提高27%, 达到73.2%,比Starcoder2-15b-instruct高;并且在其它语言代码能力(HumanEval-X)均有明显提高。

联系我们

MFTCoder最新版本v0.4.2已经开源,感兴趣的同学可以用版本tag或者持续跟踪main分支,本文中提到的模型和数据集也在陆续开源中,如果您喜欢我们的工作,欢迎试用、指正错误和贡献代码,可以的话请给我们的项目增加Star以支持我们。