Llama 2系列又上新,这回是Meta官方出品的开源编程大模型Code Llama。
模型一发布,官方直接给贴了个“最强”标签,还强调了一把“免费可商用”。
关键是,Code Llama支持10万token上下文,这可把网友们乐坏了:这是一口气读6000行Python代码不费劲的节奏啊。
OpenAI创始成员Karpathy也闻讯前来围观,还指出了隐藏在论文中的“华点”:Code Llama没有公布的一个“unnatural”版本,性能已经超过ChatGPT,逼近GPT-4。
支持10万token上下文
具体而言,Code Llama可以说是Llama 2的代码专用版,你既可以通过聊天的方式让它生成代码、解决编程问题,也可以用它来调试代码。
支持的语言包括Python、C++、Java、PHP、Typescript(Javascript)、C#和Bash等。
Meta提供了Code Llama的三个不同版本:
Code Llama,基础代码模型;
Code Llama-Python,Python微调版;
Code Llama-Instruct,自然语言指令微调版。
其中,Python微调版是在1000亿token的Python代码数据上进行微调的。
而Instruct版则能够更好地理解自然语言提示。
和Llama 2一样,Code Llama的3个版本各有3种不同尺寸的模型可供选择,分别是7B、13B和34B。
每个模型都被喂进了5000亿token的代码及代码相关数据。
Meta提到,其中7B模型可以在单个GPU上运行。
另外,7B和13B的基础模型和Instruct版模型都有FIM(fill-in-the-middle)功能。也就是说,它们具备代码填充的能力,可以被用到IDE的代码自动补全场景中。
而最受网友关注的一个功能亮点是,Code Llama的全系列模型都进行了长序列上下文微调,最长支持10万token上下文。
这就意味着,你可以把整个代码库直接塞给Code Llama,再也不用担心大模型帮你调代码的时候根本不理解你想要啥。
有网友就提到,目前GPT-4、GitHub Copliot在实际使用中的一大问题,就是上下文窗口太短,理解不了项目的整体需求。
不过,论文提到,当提示长度超过1.6万token时,Code Llama全系列模型的检索准确性(retrieval accuracy)都有所下降。
最强开源编程大模型
Meta分别在HumanEval和MBPP上测试了Code Llama的性能。
结果显示,Code Llama的表现在一众开源模型中位列第一,超过了Llama 2。
具体来说,Code Llama-Python 34B在HumanEval上得分为53.7%,在MBPP上得分为56.2%,超过了GPT-3.5(ChatGPT)的48.1%和52.2%。
基础模型版本和Instruct版本也有接近GPT-3.5的表现。
值得一提的是,在论文中,Meta还测试了一个“unnatural”34B版本,性能碾压一众模型,包括ChatGPT,仅略逊于GPT-4。
另外,Meta也在更多样化的编程语言数据集上评估了Code Llama的表现。
在任何语言的代码生成中,Code Llama都优于相同大小的Llama 2。从综合得分来看,Code Llama的7B模型甚至超过了Llama 2的70B模型。
同时,Code Llama 7B的表现也超过了CodeGen-Multi和StarCoder等编程大语言模型,水平与Codex相当。