MFTCoder 重磅升级 v0.3.0 发布,支持 Mixtral 等更多模型,支持收敛均衡,支持 FSDP

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: 今天,我们对MFTCoder进行重磅升级,比如对Mixtral这个开源MoE的SOTA的多任务微调的支持;再比如我们提供了之前论文中提到的收敛均衡技术:Self-Paced Loss。MFTCoder已适配支持了更多的主流开源LLMs,如Mixtral、Mistral、Deepseek、 Llama、CodeLlama、Qwen、CodeGeeX2、StarCoder、Baichuan2、ChatGLM2/3、GPT-Neox等。以Deepseek-coder-33b-base为底座,使用MFTCoder微调得到的CodeFuse-Deepseek-33B在HumaneEval测试中pass

image.png

1. MFTCoder 简介

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


今天,我们对MFTCoder进行重磅升级,比如对Mixtral这个开源MoE的SOTA的多任务微调的支持;再比如我们提供了之前论文中提到的收敛均衡技术:Self-Paced Loss。


MFTCoder已适配支持了更多的主流开源LLMs,如Mixtral、Mistral、Deepseek、 Llama、CodeLlama、Qwen、CodeGeeX2、StarCoder、Baichuan2、ChatGLM2/3、GPT-Neox等。以Deepseek-coder-33b-base为底座,使用MFTCoder微调得到的CodeFuse-Deepseek-33B在HumaneEval测试中pass@1得分高达78.65%(greedy decoding)。


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

MFTCoder技术细节的论文已经放出到Arxivhttps://arxiv.org/pdf/2311.02303.pdf

新升级代码也已经开源到githubhttps://github.com/codefuse-ai/MFTCoder/tree/main/mftcoder_accelerate

image.png


2. v0.3.0新特性Hightlights

  • 首先,新版本已经适配到最新的transformers v4.36.0, 它能带给我们更好的原生modeling,进而可以在很多开源模型比如llama等训练中有更多的Attention实现选择,比如 FlashAttention2,torch的SDPA和最基本的naive Attention(eager模式)。这样可以照顾到使用不同硬件的同学。对于最常用的FlashAttention2, 适配最新的v2.3.6,让MFTCoder可以有效利用最新的FlashAttention,比如sliding_window Attention, 进而支持类似Mixtral的全部特性。
  • 然后,MFTCoder-accelerate框架在原有支持Accelerate+DeepSpeed的基础上,增加了对FSDP的支持,进而升级为Accelerate + DeepSpeed/FSDP模式,以便给开发者提供更多选择。DeepSpeed对LoRA/QLoRA更适合,而FSDP在全量参数训练方面具备更快的性能。
  • 第三,我们也将MFTCoder支持的模型增加了Mistral, Mixtral-8x7b,Deepseek-coder, Chatglm3等新的主流开源模型。我们用新版MFTCoder训练的CodeFuse-Mixtral-8x7B, 是通用自然语言大模型经过多代码任务微调后代码能力领先的。而我们用MFTCoder训练的CodeFuse-DeepSeek-33B 更是可以在BigCode Leaderboard上以41.62%的胜率排在目前第一名。
  • 最后,我们引入了Self-Paced Loss, 作为MFT多任务微调收敛均衡的新loss,它能为我们带来初步的收敛均衡,用过去窗口时间内验证损失来调整不同任务的权重,进而控制不同任务的收敛速度,以达到多个任务同时收敛的目的, 避免一些任务已经过拟合而另一些任务还未收敛。它的效果可以通过以下使用self-paced loss和原始MFT loss的收敛情况观察到。

image.png


3. MFTCoder提升Mixtral-8x7B混合专家模型的代码能力实践

CodeFuse-Mixtral-8x7B 模型地址:

https://modelscope.cn/models/codefuse-ai/CodeFuse-Mixtral-8x7B
https://huggingface.co/codefuse-ai/CodeFuse-Mixtral-8x7B


3.1. Mixtral-8x7B底座代码能力总览

Mixtral-8x7B 是由Mistral AI开源的自然语言大模型。它是以Mistral-7B为基础,将8个7B模型通过稀疏混合专家(SMoE)模式混合到一起训练的MoE模型。作为一个MoE模型, Mixtral-8x7B的每一层的Attention是8个expert共用的,而每个expert是一个单独的MLP模块, 通过一个gate进行路由,每次推理激活两个expert。因此Mixtral尽管有8x7B, 实际推理时相当于只用了12B的计算。缺点是Mixtral-8x7B对于显存的需求依然很大,相当于一个46B的模型。

image.png

Sparse MoE: Switching transformer原理图 来源: https://huggingface.co/blog/moe


Mixtral-8x7B本身是一个通用自然语言大模型,并没有对代码进行针对性的加训,但它自身的代码能力在一众非代码大模型中是领先的,基本和CodeLLama-13B这个代码大模型性能相当,我们可以将它和一些主流通用自然语言大模型在HumanEval-X数据集中五种语言的Pass@1 评测结果对比如下(用Greedy解码统一测试):


Model

Python

C++

Java

JavaScript

Go

平均

Mixtral-8x7B

41.46%

40.84%

53.05%

45.12%

23.78%

40.85%

Qwen-14B

32.93%

35.37%

32.93%

30.49%

21.34%

30.61%

Baichuan2-13B

17.1%

20.73%

5.49%

16.45%

6.71%

13.30%

CodeGeeX2-6B

35.90%

30.80%

32.20%

29.30%

22.50%

30.14%

StarCoder-15B

33.57%

30.22%

30.79%

31.55%

17.62%

28.75%

CodeLLama-13B

43.29%

41.46%

38.41%

34.76%

29.27%

37.44%


Mixtral-8x7B的成功,为我们提供了关于MoE模型的很好地例子,证明了MoE模型是一个很好的趋势和方向。因此我们尝试对它进行多代码任务微调,看看它在微调后的代码能力提升如何。同时,Mixtral-8x7B也为代码大模型使用MoE提供了很多值得借鉴的地方,尤其是多任务代码大模型与MoE的思路有很多重合之处。


3.2. MFTCoder 多任务微调Mixtral-8x7B

借助MFTCoder(v0.3.0)的多任务微调能力,我们可以使用多个代码任务数据集对Mixtral-8x7B进行多任务微调(MFT)。在任务选择上,我们精选了3个核心代码任务数据,即代码补全(Code Completion),代码生成(Text2Code), 单测生成(Unittest Generation)一共60w条指令问答数据。该数据组合包含代码生成的三个基础任务,用基础任务微调对齐过的模型,在各类未训练过的代码任务上也有不错的泛化能力。


由于Mixtral-8x7B参数量比较大,尽管它是稀疏模型,实际计算仅仅类比12B模型,但是由于它依然需要46B模型所需要的显存,因此训练采用MFTCoder的多任务QLoRA微调模式,且代码任务属于相对复杂任务,我们对更多的模块进行微调,微调的模块我们采用和之前稍有区别的策略,只微调Attention,相应的配置如下:


{
    "lora_rank": 96,
  "lora_alpha": 32,
  "lora_dropout": 0.05,
  "targeting_modules": ["q_proj", "k_proj", "v_proj", "o_proj"]


对以上数据进行了约5个Epoch的训练到收敛。训练过程loss情况如下图所示:

image.pngimage.png

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


3.3. CodeFuse-Mixtral-8x7B模型效果

对Mixtral-8x7B进行多代码任务微调后,CodeFuse-Mixtral-8x7B在HumanEval-X数据集中五种语言的Pass@1评测结果对比如下(用Greedy解码统一测试),我们同时用开源的通用自然语言大模型的Qwen-14B以及CodeFuse-Qwen-14B的代码能力做比较。


Model

Python

C++

Java

JavaScript

Go

平均

CodeFuse-Mixtral-8x7B

56.1%

50.6%

57.3%

56.7%

43.3%

52.8%

Mixtral-8x7B

41.5%

40.8%

53.1%

45.1%

23.8%

40.9%

CodeFuse-Qwen-14B

48.8%

41.5%

46.3%

38.4%

26.8%

40.4%

Qwen-14B

32.9%

35.4%

32.9%

30.5%

21.3%

30.6%


可以看出, CodeFuse-Mixtral-8x7B 在 Mixtral-8x7B的基础上,各语言代码能力(HumanEval-X)均有明显提高, 比Mixtral-8x7B平均pass@1提高12%, 达到40.9% -> 52.8%。这是目前开源的非代码大模型经过多任务代码微调后较为领先的。

4. 联系我们

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

目录
相关文章
|
人工智能 物联网 测试技术
CodeFuse发布34B-4bit单卡4090可部署模型
CodeFuse 是蚂蚁集团自研的代码生成专属大模型,可以根据开发者的输入提供智能建议和实时支持,帮助开发者自动生成代码、自动增加注释、自动生成测试用例、修复和优化代码等,以提升研发效率。
473 0
CodeFuse发布34B-4bit单卡4090可部署模型
|
机器学习/深度学习 人工智能 算法
阿里公开自研AI集群细节:64个GPU,百万分类训练速度提升4倍
从节点架构到网络架构,再到通信算法,阿里巴巴把自研的高性能AI集群技术细节写成了论文,并对外公布。
阿里公开自研AI集群细节:64个GPU,百万分类训练速度提升4倍
|
4月前
|
异构计算 索引
单卡A100实现百万token推理,速度快10倍,这是微软官方的大模型推理加速
【7月更文挑战第24天】针对大语言模型(LLM)处理长上下文时的计算瓶颈,微软推出MInference,基于动态稀疏注意力加速预填充,使8B参数模型处理1M token从30分钟降至3分钟,推理延迟降低10倍。通过识别注意力矩阵模式(A形、斜线、块稀疏),仅计算关键权重,无需修改预训练或微调。实验证明,MInference在多个任务和模型上保持准确度,但可能不适用所有LLM类型,存在轻微性能损失风险。
148 17
|
4月前
|
物联网
消费级显卡微调可图Kolors最佳实践!
近期,快手开源了一种名为Kolors(可图)的文本到图像生成模型,该模型具有对英语和汉语的深刻理解,并能够生成高质量、逼真的图像。
|
6月前
|
人工智能 前端开发 PyTorch
AI加速引擎PAI-TorchAcc:整体介绍与性能概述
PAI-TorchAcc(Torch Accelerator)是阿里云人工智能平台PAI开发的Pytorch上的大模型训练加速框架。PAI-TorchAcc提供了一套基于Pytorch的简洁、易用的接口,无需进行模型转换就可以无缝地接入HuggingFace上的模型,并用多种分布式策略进行训练加速。本文详细介绍PAI-TorchAcc的产品能力与性能。
|
5月前
|
开发框架 自然语言处理 算法
OneDiff 1.0 发布!生产环境稳定加速 SD/SVD 模型
【6月更文挑战第8天】针对 SD/SVD 模型的加速工具,提升运行效率和稳定性。采用先进算法,减少训练推理时间,增强生产环境稳定性,兼容多种开发框架。示例代码显示明显加速效果,助力企业提升业务速度,简化用户使用体验。OneDiff 1.0,为模型加速领域树立新标杆,驱动行业进步!
72 2
|
6月前
|
运维 监控 Serverless
一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务
本文介绍如何使用函数计算 GPU 实例闲置模式低成本、快速的部署 Google Gemma 模型服务。
164983 58
|
6月前
|
机器学习/深度学习
简单通用:视觉基础网络最高3倍无损训练加速,清华EfficientTrain++入选TPAMI 2024
【5月更文挑战第30天】清华大学研究团队提出的EfficientTrain++是一种新型训练方法,旨在加速视觉基础网络(如ResNet、ConvNeXt、DeiT)的训练,最高可达3倍速度提升,同时保持模型准确性。该方法基于傅里叶谱裁剪和动态数据增强,实现了课程学习的创新应用。在ImageNet-1K/22K数据集上,EfficientTrain++能有效减少多种模型的训练时间,且在自监督学习任务中表现出色。尽管面临适应性与稳定性的挑战,EfficientTrain++为深度学习模型的高效训练开辟了新途径,对学术和工业界具有重要意义。
58 4
|
6月前
|
人工智能 监控 开发者
阿里云PAI发布DeepRec Extension,打造稳定高效的分布式训练,并宣布开源!
阿里云人工智能平台PAI正式发布自研的 DeepRec Extension(即 DeepRec 扩展),旨在以更低成本,更高效率进行稀疏模型的分布式训练。
|
6月前
|
存储 机器学习/深度学习 人工智能
社区供稿 | Yuan2.0千亿大模型在通用服务器上的高效推理实现:以NF8260G7服务器为例
浪潮信息联合Intel在IPF大会上发布了可运行千亿参数大模型的AI通用服务器,首次实现了单机通用服务器,即可运行千亿参数大模型。并在发布现场演示了基于NF8260G7服务器进行yuan2.0-102B模型在代码编写、逻辑推理等高难度问题上的实时推理效果,引起了业界广泛的关注。本文将详细解读yuan2.0-102B模型在NF8260G7服务器上进行高效实时推理的原理和技术路径。
下一篇
无影云桌面