CodeFuse发布34B-4bit单卡4090可部署模型

简介: CodeFuse 是蚂蚁集团自研的代码生成专属大模型,可以根据开发者的输入提供智能建议和实时支持,帮助开发者自动生成代码、自动增加注释、自动生成测试用例、修复和优化代码等,以提升研发效率。

Hello world, this is CodeFuse!


2023 年 9 月 8 日下午,在上海举行的“2023 inclusion·外滩大会--云端 Al:探索新兴技术和发展模式”论坛上,蚂蚁集团首次开源了代码大模型 CodeFuse。这是蚂蚁自研的代码生成专属大模型,根据开发者的输入,帮助开发者自动生成代码、自动增加注释、自动生成测试用例、修复和优化代码等,以提升研发效率。无论用户是初学者还是有经验的开发者,CodeFuse 都能够极大地提高编程效率和准确性。


CodeFuse 的目的是重新定义下一代AI研发,提供全生命周期AI辅助工具。蚂蚁集团期望通过开源 CodeFuse,和社区一起推进软件工程领域的范式跃迁,重塑软件研发的各个领域,加速各行各业的数字化进程。


CodeFuse 基于蚂蚁基础大模型平台研发,在近期代码补全的 HumanEval 评测中,其得分达到74.4%,超过了 GPT-4 (67%)的成绩,也超过了 WizardCoder-34B 73.2% 的得分,在开源模型中位于国际前列。本次开源内容包括代码框架、数据集和模型三大部分。


代码仓库现已上架 GitHub 平台 ,数据和模型已上架 HuggingFace 平台和国内的魔搭社区。


GitHub 地址:https://github.com/codefuse-ai

HuggingFace 地址:https://huggingface.co/codefuse-ai

魔搭社区地址:https://modelscope.cn/organization/codefuse-ai


特别的,我们开源了一套多任务微调框架 MFTCoder (https://github.com/codefuse-ai/MFTCoder),支持当前众多主流大模型并支持 Lora 与 QLora 高效微调,欢迎大家试用在私有数据上打造自己的专属代码大模型,并请给我们的项目一键三连支持 Star + Fork + Watch


首先我们来看一下,CodeFuse 能做什么。



01  贪吃蛇游戏生成



早在 2022 年 1 月,蚂蚁集团内部开启了代码智能相关探索。随着公司整体战略的推进,在统一软硬件基础设施支持下,2023 年从 0 到 1 训练了多个代码大模型,打造了 CodeFuse。基于 CodeFuse 的应用场景有开 IDE 插件、发助手、代码分析器等,覆盖了目前研发工作的主要需求,并在蚂蚁集团内部研发流程中陆续得到验证。


接下来,给大家演示一下,基于蚂蚁开源模型 CodeFuse-CodeLlaMa34B,利用 HTML 和 JavaScript 在线制作贪吃蛇小游戏的场景。


点击查看:https://cloud.video.taobao.com/play/u/null/p/1/e/6/t/1/432865958134.mp4

00:51

02  多任务微调框架 MFTCoder



整个 CodeFuse 框架如下图所示,大致分为底层的分布式训练、中间层的指令微调框架,和顶层的多模型应用支持。


在底层,CodeFuse 支持 DeepSpeed 和蚂蚁自研的 ATorch 两种分布式训练框架。

ATorch 开源地址:https://github.com/intelligent-machine-learning/dlrover/tree/master/atorch


在中间层,CodeFuse 包含了自研的多任务微调(Multi-task fine-tuning,缩写为MFT)框架。MFT 支持代码生成、代码翻译、测试用例生成、bug 修复等数 10 个任务一起微调,它充分利用多任务之间的信息互补,通过创新的 loss 设计处理不同任务之间收敛难易不均衡的难题,最终取得比单任务微调 SFT 更好的效果。MFT 框架最大的特色是,同时支持多任务、多框架,以及多种类型的损失函数:

  • ✅ 多任务:一个模型同时支持多个任务,会保证多个任务之间的平衡,甚至可以泛化到新的没有见过的任务上去;
  • ✅ 多框架:同时支持 HuggingFace 和 ATorch 框架两个训练框架;
  • ✅ 高效微调:支持 LoRA 和 QLoRA,可以用很少的资源去微调很大的模型,且训练速度能满足几乎所有微调场景;
  • ✅ 多损失函数:支持数据集大小平衡,任务难度平衡,收敛速度不一平衡,和语义强调等多种不同损失函数。


在顶层,CodeFuse 支持最新的多个开源模型,包括 LlaMA,LlaMa-2,StarCoder,Baichuan,Qwen,Chatglm2,GPT-neox 等。CodeFuse 已经开源了多任务微调框架 MFTCoder。

关于多任务难度或者收敛不一致问题,这里给大家展示一个对比的例子。在三个任务(code completion,code explain,text2sql)的微调训练中,添加收敛均衡和不添加收敛均衡以后,validation loss 的收敛状况:可以看到没有添加收敛均衡的时候,三个任务收敛的速度各不相同,code completion 还没有收敛,剩下两个任务已经发散了;然而在加了收敛均衡的限制以后,我们可以明确的看到三个任务的收敛速度一致。

截屏2023-10-19 13.57.29.png

截屏2023-10-19 13.57.38.png



03  优秀的多任务微调能力



下面,我们直接给出基于 MFTCoder,给多个开源模型微调代码能力,在 HumanEval 的 Python 补全上的结果。


表1:MFTCoder 多模型微调结果对比基于 HumanEval Python pass@1 score

模型
发布时间
原始模型
CodeFuse
MFT微调
Baichuan-13B
2023/07
12.0%
21.95%
Qwen-7B (v1)
2023/08
23.8%
32.93%
LlaMA-65B
2023/02
23.17%
34.76%
LLaMA2-70B
2023/07
31.71%
40.23%
StarCoder-15B
2023/05
33.2%
54.9%
CodeLLaMA-34B-Python
2023/08
53.7%
74.4%
WizardCoder-Python-34B
2023/09
73.2%
NA
GPT-4(23年3月)
2023/03
2022/11
NA
PanGu-Coder2 15B
2023/08
61.6%
NA
GPT-3.5(zero-shot)
2022/11
48.1%
NA
OctoCoder
2023/08
46.2%
NA


可以看到,MFT 在各种底座上对于 Python Pass@1 就可以带来带来 10% 左右的提升。在 StarCoder 和 CodeLLama 上的增益更多。作为对比,已经公开的 HumanEval 榜单中目前排名前列的模型,我们也灰底展示在表格下方。


MFT 微调的 CodeLLaMA-34B,在 HumanEval 上取得了 74.4% 的结果(和 CodeLLaMA 一样,基于 greedy generation 模式评测),该结果超过了 GPT-4 (67%) 的成绩,也超过了 WizardCoder-34B 73.2% 的得分,在开源模型中位于国际前列。



04  4bit 量化部署



CodeFuse-CodeLLama-34B模型表现十分显著,但是34B的模型大小,在FP16和INT8精度下,至少需要一张A100或者4张A10做最小配置部署。如此高的部署资源要求,让个人/普通用户望而却步,即便大公司的大规模部署也比较吃资源。


针对此,我们借助量化技术对原模型进行了INT4量化,量化后模型占用显存大小显著减小:64.9G减到19G)。这样一张A10或者4090 (24GB显存)即可部署。速度方面,实测发现A10上的INT4优化后的推理速度,已经和A100上FP16推理速度持平。量化部署,可以使用GPTQ或者Nvidia TensorRT-LLM early access版本。


我们评测了量化前后模型能力的差异,其中关键评测HumanEval指标上是73.8%,下降小于1%;NLP任务中文语言理解CMNLI/C-Eval评测得分下降也控制1%左右。




此外,我们测量了模型加载后占用的显存占用情况,以及输入2048/1024 tokens并输出1024/2048 tokens时的显存使用情况,如下表所示。可以看到,在A10上,4bit量化支持总长为3K长度的输入和输出是没有问题的。


我们已经在Huggingface、ModelScope、Wisemodel等源发布该量化版本,欢迎大家试用!




05  总结和展望


这里我们介绍了 CodeFuse 整体开源相关的信息,并介绍了一下其中的 MFT 框架。大家有兴趣的话可以去 ModelScope 魔搭社区注册在线体验 CodeFuse-CodeLlama-34B 的效果。
地址:https://modelscope.cn/organization/codefuse-ai


未来我们将贡献更多技术到 CodeFuse 开源社区,也期待有兴趣的同行一起参与进来,给 CodeFuse 开源增砖添瓦。


目录
相关文章
|
7月前
|
编解码 自然语言处理 算法
字节推出视频生成模型AnimateDiff-Lightning
【2月更文挑战第30天】字节跳动推出AnimateDiff-Lightning模型,革新视频内容生成领域,以高效细节捕捉和轻量级网络实现连贯逼真视频序列。该模型通过差异生成方法学习物体运动,提高生成效率,解决传统模型流畅度和细节问题。实验显示,它在复杂场景和动态物体生成上表现出色,但对特定类型视频和高分辨率内容仍有优化空间。研究团队将持续改进并探索更多应用场景。
194 2
字节推出视频生成模型AnimateDiff-Lightning
|
7月前
|
机器学习/深度学习 并行计算 测试技术
MLX vs MPS vs CUDA:苹果新机器学习框架的基准测试
如果你是一个Mac用户和一个深度学习爱好者,你可能希望在某些时候Mac可以处理一些重型模型。苹果刚刚发布了MLX,一个在苹果芯片上高效运行机器学习模型的框架。
333 1
|
7月前
|
机器学习/深度学习 物联网 开发者
秒级生图,SDXL-turbo、LCM-SDXL魔搭社区最佳实践
最近一个月,快速生图成为文生图领域的热点,其中比较典型的两种方式的代表模型分别为SDXL-turbo 和 LCM-SDXL。
|
7月前
|
存储 缓存 算法
使用Mixtral-offloading在消费级硬件上运行Mixtral-8x7B
Mixtral-8x7B是最好的开放大型语言模型(LLM)之一,但它是一个具有46.7B参数的庞大模型。即使量化为4位,该模型也无法在消费级GPU上完全加载(例如,24 GB VRAM是不够的)。
224 4
|
异构计算
单卡可推理CodeFuse-CodeLlama-34B 4bits量化版本魔搭开源!
继2023-09-11 CodeFuse-CodeLlama-34B发布,HumanEval pass@1指标达到74.4% (贪婪解码), 为当前开源SOTA。最近,CodeFuse-CodeLlama-34B 4bits量化版本发布,CodeFuse-CodeLlama-34B-4bits是CodeFuse-CodeLlama-34B模型的4bits量化版本,后者是通过QLoRA对基座模型CodeLlama-34b-Python进行多代码任务微调而得到的代码大模型,模型输入长度为4K。
|
7天前
|
人工智能 自然语言处理 并行计算
探索大模型部署:基于 VLLM 和 ModelScope 与 Qwen2.5 在双 32G VGPU 上的实践之旅
本文介绍了使用 `VLLM` 和 `ModelScope` 部署 `Qwen2.5` 大模型的实践过程,包括环境搭建、模型下载和在双 32G VGPU 上的成功部署,展现了高性能计算与大模型结合的强大力量。
|
2月前
|
Shell Docker Python
LLM-02 大模型 本地部署运行 ChatGLM3-6B(13GB) 双卡2070Super8GB 环境配置 单机多卡 基于LLM-01章节 继续乘风破浪 为大模型微调做准备
LLM-02 大模型 本地部署运行 ChatGLM3-6B(13GB) 双卡2070Super8GB 环境配置 单机多卡 基于LLM-01章节 继续乘风破浪 为大模型微调做准备
50 1
|
2月前
|
并行计算 算法 Shell
LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!
LLM-01 大模型 本地部署运行 ChatGLM2-6B-INT4(6GB) 简单上手 环境配置 单机单卡多卡 2070Super8GBx2 打怪升级!
62 1
|
4月前
|
编解码 JSON 自然语言处理
Qwen2-VL 全链路模型体验、下载、推理、微调实战!
经过了一年的不懈努力,今天通义千问团队对 Qwen-VL 模型进行重大更新——推出 Qwen2-VL。那么Qwen2-VL 有什么新功能呢?一起来看一下吧
Qwen2-VL 全链路模型体验、下载、推理、微调实战!
|
3月前
|
算法 测试技术 AI芯片
CPU反超NPU,llama.cpp生成速度翻5倍!LLM端侧部署新范式T-MAC开源
【9月更文挑战第7天】微软研究院提出了一种名为T-MAC的创新方法,旨在解决大型语言模型在资源受限的边缘设备上高效部署的问题。T-MAC通过查表法在CPU上实现低比特LLM的高效推理,支持混合精度矩阵乘法,无需解量化。其通过位级查表实现统一且可扩展的解决方案,优化数据布局和重用率,显著提升了单线程和多线程下的mpGEMV及mpGEMM性能,并在端到端推理吞吐量和能效方面表现出色。然而,表量化和快速聚合技术可能引入近似和数值误差,影响模型准确性。论文详见:[链接](https://www.arxiv.org/pdf/2407.00088)。
156 10