MetaAI官宣开源编程大模型CodeLLaMA!基于LLaMA2微调!超越OpenAI的Codex,最高支持10万tokens输入!
-----------2024年1月30日更新----------------- CodeLlama系列最早是在2023年8月份发布的。但是不包含700亿参数规模的大模型。在2024年1月30日,MetaAI开源了700亿参数规模版本的CodeLlama-70B,包含三个版本:
其中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个模型,具体如下:
具体来说:
- 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在多个测试中做了评测,主要结果如下:
- 对比不同模型,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/

