新智元报道
编辑:alan 好困
新的 SOTA 再次出现,Code Llama 系列最强模型发布,70B 代码模型一举击败 GPT-4,开源代码登陆各大平台,大佬直接开玩。
今天,Meta 正式发布了 Code Llama 70B,作为 Code Llama 系列中规模最大,性能最强的版本,一举击败了 GPT-4!
目前,模型共有三个版本,均可免费用于研究和商业目的:
CodeLlama - 70B:基础代码模型; CodeLlama - 70B - Python:专门针对 Python 的 70B 模型; CodeLlama - 70B - Instruct:专门用于理解自然语言指令的模型。
算上 8 月份发布的 Code Llama 7B、13B 和 34B,这个家也算是完整了。
论文地址:https://ai.meta.com/research/publications/code-llama-open-foundation-models-for-code/
其实,Code Llama 在发布时就已经展现了不俗的实力,在一众代码生成模型中处于领先位置。
不过 GPT-4 依然凭借着 67.0 的 HumanEval(pass@1)得分数遥遥领先(Code Llama 34B 为 53.7)。
尽管后来又有 Code Llama 的微调版本获得了更好的成绩,却并没有进入 Meta 的这个官方表格。
但是!在寒窗苦读了 5 个月之后,Code Llama 终于一鸣惊人,以最强的 70B 模型登顶全部三项测试的榜首。
其中,CodeLlama-70B-Instruct 在 HumanEval 上更是直接拿下了 67.8 的高分,一举跻身当下最强开源模型的行列。
可以说,除了 GPT-4 外,其他同类模型几乎都难以望其项背。
对此,LeCun 转发并宣传了自家的新模型:「新一代 Code Llama 依然开源,正如它的前辈们一样。」
而终于发现自家 AI 是块宝的小扎,也加大了宣传力度:
我们正式开源了一个全新且更加强大的 Code Llama,包含一个庞大的 700 亿参数的模型。 在当今的 AI 域,编写和编辑代码已经成为了最关键的应用之一。同样,能够编程也对 AI 模型在其他领域进行更加严密和逻辑性的信息处理显得尤为重要。 我对我们在这方面取得的进展感到非常自豪,并且非常期待在未来的 Llama 3 及后续模型中加入这些先进的成果。
技术细节
Code Llama 是一款能够通过文本提示生成代码的大语言模型。它不仅能提升现有开发者的工作效率,还能降低编程新手的学习门槛。
Meta 希望将 Code Llama 打造成为一款既能提高生产力,又具有教育价值的工具,助力程序员创建更加稳定且文档齐全的软件。
Code Llama 是基于 Llama 2 开发的,专门用于编程任务的版本。
通过在专为编码设计的数据集上进行更深入的训练,Code Llama 能够理解和生成代码,帮助完成编程任务(如编写函数、代码补全和调试),
并支持包括 Python、C++、Java、PHP、Typescript (Javascript)、C#和 Bash 等在内的多种流行编程语言。
到目前为止,Code Llama 系列集齐了四种规模,分别拥有 7B、13B、34B 和 70B 的参数,
前三个模型采用 500B token 的代码和相关数据进行训练,而新发布的 70B 模型使用了 1TB token。
另外,7B 和 13B 基础模型和指令模型还经过中间填充(FIM)功能的训练,具备直接在现有代码中插入新代码的能力(代码补全)。
Code Llama 系列模型针对不同的需求和性能要求进行了优化:
7B 模型能在单个 GPU 上运行,适合快速响应的场景;而 34B 和 70B 模型则提供了更高级的编码辅助功能,但运行速度较慢。
Code Llama 能够处理长达 100000 token 的上下文,这意味着模型可以理解和生成较长的程序代码。
这对于处理大型代码库中的调试任务特别有用,开发者可以提供大量代码上下文,以获得更准确的编码建议。
此外,Code Llama 还推出了两个特别版本:Code Llama - Python 和 Code Llama - Instruct。
考虑到 Python 在 AI 社区的重要性,Code Llama - Python 针对 Python 代码进行了特别优化(使用 100B token 的 Python 代码数据进行微调),使其在生成 Python 代码时更加流畅和准确。
CodeLlama-70B-Python 还可以处理一系列任务,例如网络抓取、数据分析、机器学习(ML)和 Web 开发。
而 Code Llama - Instruct 则通过接受自然语言指令和期望输出的方式进行训练,使其更擅长根据用户的需求生成代码或答案。
CodeLlama-70B-Instruct 还可以用于处理排序、搜索、过滤和操作数据,以及实现算法(二进制搜索、斐波那契和阶乘等)。
官方建议在需要代码生成时优先考虑使用 Code Llama - Instruct,以获得更安全、更有用的结果。
需要注意的是,主要用于编程问题的 Code Llama 和 Code Llama - Python,并不适合处理一般的自然语言任务。
基准测试
下面看一下新的 Code Llama 在同类模型中的表现如何,这里采用业内广泛应用的编程基准测试:
HumanEval 和 Mostly Basic Python Programming (MBPP)。
HumanEval 是一个包含 164 个编程问题的基准数据集,用于测试代码生成模型的功能正确性和逻辑性,而 MBPP 则测试模型依据具体描述编写代码的技巧。
我们可以看到前代的 34B 表现已经很好了,而参数量翻了一倍的 Code Llama 70B 老大哥直接霸榜,并且相比于 34B 性能显著提升。
其中,CodeLlama-70B-Instruct 在 HumanEval 上得分高达 67.8,超过了 CodeGen-16B-Mono(29.3)和 StarCoder(40.1)等开放模型之前的最佳成绩,并与 GPT-4(68.2)和 Gemini Pro(69.4)等闭源模型相当。
当然,为了更负责任地开发 AI 模型,Meta 已经采取了多项安全措施,并对生成恶意代码的风险进行了量化评估。
结果显示,相比于 ChatGPT(GPT3.5 Turbo),Code Llama 给出的回答更为安全。
挑战 GPT-4,coding 模型卷起来了!
目前,通过各各类主流的平台和框架都可以访问和使用 Code Llama 70B,例如 Hugging Face、PyTorch、TensorFlow 和 Jupyter Notebook。
此外,Meta AI 还提供了针对不同目的和语言,使用和微调模型的文档和教程。
而随着模型的发布,各大 AI 平台也纷纷加入了对 Code Llama 70B 的支持:
并且还可以直接开玩:
更有大佬把 Code Llama 70B 跑到了苹果的处理器上,只不过「有点热」。
然后这位索性把 Code Llama 70B 直接量化到了 4 bit。
参考资料:
https://ai.meta.com/blog/code-llama-large-language-model-coding/