MFTCoder 源码解析:核心组件设计与多框架支持(Accelerate/Atorch)
2026/7/28 7:05:21 网站建设 项目流程

MFTCoder 源码解析:核心组件设计与多框架支持(Accelerate/Atorch)

【免费下载链接】MFTCoderHigh Accuracy and efficiency multi-task fine-tuning framework for Code LLMs. This work has been accepted by KDD 2024.项目地址: https://gitcode.com/gh_mirrors/mf/MFTCoder

MFTCoder 是国际首个高精度、高效率、多任务、多模型支持、多训练算法的大模型代码能力微调框架。它作为一个开源的多任务代码大语言模型项目,包含代码大模型的模型、数据、训练等内容,致力于通过开源分享交流大语言模型在代码领域的进步。

多模型支持体系:兼容主流开源模型

MFTCoder 具备强大的多模型支持能力,能够适配多种主流开源模型。在其模型架构中,涵盖了丰富的模型种类,如 gpt - neox、llama、llama - 2、baichuan、Qwen、chatglm2 等。这些模型的实现代码分布在不同的目录下,例如 mftcoder_accelerate/src/model/baichuan2/ 目录下包含了百川 2 模型的配置、建模、量化器和分词器等相关代码,为模型的加载和使用提供了基础。

该架构图清晰展示了 MFTCoder 对多种模型的支持情况,包括已发布和即将发布的模型,如 CodeFuse - 13B(代码)、Bailing、Mixtral(MoE)、Deepseek、Qwen 等,体现了其在模型兼容性方面的广泛覆盖。

多任务训练机制:平衡与泛化能力

多任务训练是 MFTCoder 的核心特性之一。它能够让一个模型同时支持多个任务,并保证多个任务之间的平衡,甚至可以泛化到新的没有见过的任务上去。在训练过程中,涉及到多任务 loss 加权模式,如 mftcoder_accelerate/README_cn.md 中提到的 "weighted_loss_mode" 参数,其中 "case3" 是当前推荐的模式,有助于实现多任务的收敛均衡。

多任务数据处理

MFTCoder 在数据处理方面也为多任务训练提供了支持。在 mftcoder_accelerate/src/data/multi_task_dataset.py 中,实现了多任务数据集的构建,能够将不同任务的数据进行整合和处理,为模型的多任务学习提供合适的数据输入。

核心组件设计:训练与推理的关键模块

PEFT 技术集成

MFTCoder 集成了 PEFT(Parameter - Efficient Fine - Tuning)技术,如 Lora 和 QLoRA。在 mftcoder_accelerate/src/pefts/arguments.py 中,定义了与 PEFT 相关的参数,包括 "peft_type"(可设为 lora、qlora 或 null 用于全量微调)、"lora_rank"、"lora_alpha"、"lora_dropout" 等,这些参数可以根据实际需求进行调整,以实现高效的参数微调。

训练入口与配置

训练入口文件为 mftcoder_accelerate/src/pefts/mft_accelerate.py,通过该文件可以启动模型的训练过程。同时,项目提供了不同的训练配置文件,如 mftcoder_accelerate/src/configs/lora_train_config.json 和 mftcoder_accelerate/src/configs/qlora_train_config.json,分别对应 Lora 和 QLoRA 微调的配置,方便用户根据具体场景进行选择和配置。

多框架支持:Accelerate 与 Atorch

Accelerate + DeepSpeed/FSDP 框架

MFTCoder - accelerate 支持主流开源的 Accelerate + DeepSpeed/FSDP 框架。可以通过不同的启动命令来选择相应的分布式训练方式,如使用 DeepSpeed 时,命令为accelerate launch --config_file accelerate_ds_config.yaml pefts/mft_accelerate.py --train_config configs/xxx_train_config.json --distributed_type "DeepSpeed";使用 FSDP 时,命令为accelerate launch --config_file accelerate_fsdp_config.yaml pefts/mft_accelerate.py --train_config configs/xxx_train_config.json --distributed_type "FSDP"

Atorch 框架

MFTCoder 还支持新开源的 Atorch 框架。在 mftcoder_atorch/README_cn.md 中提到,MFTCoder 在 Atorch 框架下支持 GPTNeoX 模型的微调,并且提供了相应的训练脚本,如sh run_gpt_mft_peft.sh 10 1 8 5,方便用户在 Atorch 框架下进行模型训练。

这张图片展示了 MFTCoder 在多框架训练方面的流程,包括多任务数据加载、多框架训练器(如 Full Supervised Fine Tuning (SFT)、Multitask Fine Tuning (MFT) 等)以及多类型损失的平衡等,体现了其在不同框架下的灵活应用。

模型权重合并与推理

在使用 Lora 或 QLoRA 进行训练后,MFTCoder 支持将 adapter 权重与 base model 进行合并,以便于推理。合并脚本为 mftcoder_accelerate/src/pefts/merge_base_and_lora_to_hf.py,通过执行该脚本可以实现权重的合并,使推理过程更加便捷。

通过对 MFTCoder 源码的解析,我们可以看到其在核心组件设计和多框架支持方面的强大能力,为代码大模型的微调提供了高效、灵活的解决方案。无论是多模型的兼容、多任务的平衡训练,还是不同框架的支持,MFTCoder 都展现出了其在大语言模型微调领域的优势和价值。

【免费下载链接】MFTCoderHigh Accuracy and efficiency multi-task fine-tuning framework for Code LLMs. This work has been accepted by KDD 2024.项目地址: https://gitcode.com/gh_mirrors/mf/MFTCoder

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询