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

标签:#CodeLLaMA##LLaMA2##编程大模型# 时间:2024/01/30 10:31:51 作者:小木

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

CodeLlama-70B模型版本 模型简介 DataLearner模型信息卡地址
CodeLlama-70B-Base CodeLlama-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。


[TOC]

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 训练数据 特点 应用场景
CodeLLaMA 7B, 13B, 34B 通用代码数据 基础版本,多语言 通用代码生成任务
CodeLLaMA-Python 7B, 13B, 34B 以Python代码为主的数据集 专门针对Python优化 Python代码生成
CodeLLaMA-Instruct 7B, 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@1 HumanEval Pass@10 HumanEval Pass@100 MBPP Pass@1 MBPP Pass@10 MBPP Pass@100
code-cushman-001 12B 33.5% - - 45.9% - -
GPT-3.5 (ChatGPT) - 48.1% - - 52.2% - -
GPT-4 - 67.0% - - - - -
PaLM 540B 26.2% - 88.4% 47.0% - -
PaLM-Coder 540B 35.9% - 88.4% 47.0% - -
PaLM 2-S - 37.6% - 88.4% 50.0% - -
StarCoder Base 15.5B 30.4% - - 49.0% - -
StarCoder Python 15.5B 33.6% - - 52.7% - -
StarCoder Prompted 15.5B 40.8% - - 49.5% - -
Llama 2 7B 12.2% 25.2% 44.4% 20.8% 41.8% 65.5%
Llama 2 13B 20.1% 34.8% 61.2% 27.6% 48.1% 69.5%
Llama 2 34B 22.6% 47.0% 79.5% 33.8% 56.9% 77.6%
Llama 2 70B 30.5% 59.4% 87.0% 45.4% 66.2% 83.1%
Code Llama 7B 33.5% 59.6% 85.9% 41.4% 66.7% 82.5%
Code Llama 13B 36.0% 69.4% 89.8% 47.0% 71.7% 87.1%
Code Llama 34B 48.8% 76.8% 93.0% 55.0% 76.2% 86.6%
Code Llama - Python 7B 38.4% 70.3% 90.6% 47.6% 70.3% 84.8%
Code Llama - Python 13B 43.3% 77.4% 94.1% 49.0% 74.0% 87.6%
Code Llama - Python 34B 53.7% 82.8% 94.7% 56.2% 76.4% 88.2%
Code Llama - Instruct 7B 34.8% 64.3% 88.1% 44.4% 65.4% 76.8%
Code Llama - Instruct 13B 42.7% 71.6% 91.6% 49.4% 71.2% 84.1%
Code Llama - Instruct 34B 41.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模型信息卡:

模型名称 DataLearner信息卡地址
CodeLLaMA-7B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-7B
CodeLLaMA-13B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-13B
CodeLLaMA-34B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-34B
CodeLLaMA-Python-7B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-Python-7B
CodeLLaMA-Python-13B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-Python-13B
CodeLLaMA-Python-34B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-Python-34B
CodeLLaMA-Instruct-7B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-Instruct-7B
CodeLLaMA-Instruct-13B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-Instruct-13B
CodeLLaMA-Instruct-34B https://www.datalearner.com/ai-models/pretrained-models/CodeLLaMA-Instruct-34B

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

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送