MetaAI官宣开源编程大模型CodeLLaMA!基于LLaMA2微调!超越OpenAI的Codex,最高支持10万tokens输入!

4,365 阅读

-----------2024年1月30日更新----------------- CodeLlama系列最早是在2023年8月份发布的。但是不包含700亿参数规模的大模型。在2024年1月30日,MetaAI开源了700亿参数规模版本的CodeLlama-70B,包含三个版本:

CodeLlama-70B模型版本模型简介DataLearner模型信息卡地址
CodeLlama-70B-BaseCodeLlama-70B最基础的版本,支持不同的编程语言。https://www.datalearner.com/ai-models/pretrained-models/CodeLlama-70B-Base
CodeLlama-70B-Python针对Python编程语言优化的版本。https://www.datalearner.com/ai-models/pretrained-models/CodeLlama-70B-Python
CodeLlama-70B-Instruct指令优化的编程大模型,可以识别用户的文本指令生成代码。https://www.datalearner.com/ai-models/pretrained-models/CodeLlama-70B-Instruct

其中CodeLlama-70B-Instruct在HumanEval@ 1评分67.8,超过了GPT-4官方论文的成绩,详情可以参考上述模型信息卡地址内容。

据DataLearnerAI收集的大模型代码评测结果,我们可以看到CodeLlama-70B-Instruct成绩非常优秀。超过了了Gemini Pro:

数据来源: https://www.datalearner.com/ai-models/llm-coding-evaluation


MetaAI发布的LLaMA系列开源大语言模型已经是开源大模型领域最重要的力量了。相当多的所谓开源大模型都是基于这个模型微调得到。在上个月,LLaMA2发布,吸引了全球非常多的关注,也有相当多的后续模型基于LLaMA2进行优化。而今天MetaAI再次开源全新的编程大模型——CodeLLaMA系列,这是MetaAI第一次发布编程大模型,本次发布的CodeLLaMA共有9个版本,分别是CodeLLaMA系列、针对Python优化的CodeLLaMA-Python系列和针对指令优化的CodeLLaMA-Instruct系列,每一个版本都包含3个参数版本,分别是7B、13B和34B。

CodeLLaMA总体介绍

Llama 2作为一个通用语言模型表现强劲,但直接应用到代码任务上还有进一步优化的空间。基于Llama 2进行代码专用的训练和调优,可以充分发挥其潜力。为此,MetaAI发布了CodeLLaMA系列。

CodeLLaMA是基于Llama 2基础模型继续训练和微调得到的代码专用语言模型。相比完全从头训练,继承Llama 2的预训练带来明显提升。

根据官网的论文介绍,CodeLLaMA的特点如下:

  • 通过长序列微调(long context fine-tuning),CodeLLaMA系列模型支持高达10万个tokens的输入文本,明显优于只支持4K的Llama 2。在非常长的代码文件中仍表现稳定。
  • Python代码生成基准测试数据集如HumanEval和MBPP上取得最先进的成绩,尤其是与开源模型相比,基本是最强的。同时也在多语言数据集MultiPL-E上表现强劲。
  • CodeLLaMA-Instruct通过自监督生成的代码数据进行指令细调,明显提高了模型的安全性、有用性和遵循指令的能力
  • 采用开源和允许商业用途的许可,可以让更多研究人员和企业基于CodeLLaMA进行创新,推动整个技术领域的进步。

CodeLLaMA三个版本的比较

MetaAI发布的CodeLLaMA共包含3个版本9个模型,具体如下:

模型Parameters训练数据特点应用场景
CodeLLaMA7B, 13B, 34B通用代码数据基础版本,多语言通用代码生成任务
CodeLLaMA-Python7B, 13B, 34B以Python代码为主的数据集专门针对Python优化Python代码生成
CodeLLaMA-Instruct7B, 13B, 34B在CodeLLaMA基础上细调可遵循指令,更安全代码助手,更安全的代码生成

具体来说:

  • CodeLLaMA是通用的代码基础模型,适用于多种编程语言。
  • CodeLLaMA-Python使用了更多Python代码进行了专门针对Python的优化。
  • CodeLLaMA-Instruct在CodeLLaMA的基础上使用了人类指令和自监督代码数据进行了细调,可以更好地遵循指令,生成更安全、有用的代码,更适合部署到产品中。

三个版本都提供了7B、13B和34B参数量的选择。 所以用户可以根据实际使用场景和参数量预算选择不同的版本。CodeLLaMA系列覆盖了从通用到专业、从基础到细调的不同需求。

CodeLLaMA的训练细节

如前所述,CodeLLaMA是在LLaMA2基础上微调得到。具体来说,CodeLLaMA系列是在原有LLaMA2基础上增加了5000亿tokens的数据集微调得到,这5000亿tokens数据中85%是代码数据,与代码有关的自然语言处理部分8%,数据集大小895GB。

CodeLLaMA-Python系列则是在CodeLLaMA系列基础上继续增加1000亿tokens数据集微调得到。其中Python代码占75%。这部分数据集磁盘空间79GB。

CodeLLaMA的评价结果

MetaAI在多个测试中做了评测,主要结果如下:

模型参数量HumanEval Pass@1HumanEval Pass@10HumanEval Pass@100MBPP Pass@1MBPP Pass@10MBPP Pass@100
code-cushman-00112B33.5%--45.9%--
GPT-3.5 (ChatGPT)-48.1%--52.2%--
GPT-4-67.0%-----
PaLM540B26.2%-88.4%47.0%--
PaLM-Coder540B35.9%-88.4%47.0%--
PaLM 2-S-37.6%-88.4%50.0%--
StarCoder Base15.5B30.4%--49.0%--
StarCoder Python15.5B33.6%--52.7%--
StarCoder Prompted15.5B40.8%--49.5%--
Llama 27B12.2%25.2%44.4%20.8%41.8%65.5%
Llama 213B20.1%34.8%61.2%27.6%48.1%69.5%
Llama 234B22.6%47.0%79.5%33.8%56.9%77.6%
Llama 270B30.5%59.4%87.0%45.4%66.2%83.1%
Code Llama7B33.5%59.6%85.9%41.4%66.7%82.5%
Code Llama13B36.0%69.4%89.8%47.0%71.7%87.1%
Code Llama34B48.8%76.8%93.0%55.0%76.2%86.6%
Code Llama - Python7B38.4%70.3%90.6%47.6%70.3%84.8%
Code Llama - Python13B43.3%77.4%94.1%49.0%74.0%87.6%
Code Llama - Python34B53.7%82.8%94.7%56.2%76.4%88.2%
Code Llama - Instruct7B34.8%64.3%88.1%44.4%65.4%76.8%
Code Llama - Instruct13B42.7%71.6%91.6%49.4%71.2%84.1%
Code Llama - Instruct34B41.5%77.2%93.5%57.0%74.6%85.4%
从表格可以看出:
  • 对比不同模型,CodeLLaMA系列模型的表现明显优于其他同规模模型,尤其是34B参数的CodeLLaMA直接超越除了GPT-4的所有模型
  • 在CodeLLaMA系列内部,CodeLLaMA-Python由于使用了更多Python代码微调,其表现又略优于原始的CodeLLaMA。
  • 参数量的增加可以较明显地提升CodeLLaMA系列模型的效果。例如在HumanEval数据集上,CodeLLaMA从7B到34B参数时Pass@ 1提高了15.3%。
  • Pass@ 10和Pass@ 100的指标高于Pass@ 1,说明CodeLLaMA生成的代码质量较高,排名靠前的候选样本更可能是正确的。
  • CodeLLaMA-Instruct相比CodeLLaMA普遍效果略低,这可能是由于其训练目标更注重安全性和遵循指令。但整体表现仍强劲。

总体来说,CodeLLaMA系列模型在公开可用的代码生成语言模型中取得了领先的效果。而且可以看到它比Codex和PaLM-Coder的表现都要好!

CodeLLaMA的相关资源和开源协议

CodeLLaMA系列与LLaMA2的开源协议完全一样,可以免费商用授权。不过目前没有把预训练结果放到HuggingFace上,而是要去官网申请,申请速度也很快。

具体的代码地址和其它信息参考DataLearner模型信息卡:

官方预训练结果申请地址:https://ai.meta.com/resources/models-and-libraries/llama-downloads/

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码