MetaAI官宣开源编程大模型CodeLLaMA!基于LLaMA2微调!超越OpenAI的Codex,最高支持10万tokens输入!
—————-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。

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技术推送
