最先进的大型编码语言模型 “Code Llama “介绍

Admin 2023-8-26 302 8/26
最先进的大型编码语言模型

收获

  • Code Llama 是一款先进的 LLM,能够根据代码和自然语言提示生成代码以及关于代码的自然语言。
  • Code Llama 可免费用于研究和商业用途。
  • Code Llama 建立在 Llama 2 的基础之上,有三种型号:
  • Code Llama - 基础代码模型;
  • Codel Llama - Python 专用 Python;
  • 和 Code Llama - Instruct,后者针对理解自然语言指令进行了微调。
  • 在我们自己的基准测试中,Code Llama 在代码任务上的表现优于最先进的公开 LLMs

今天,我们发布了可以使用文本提示生成代码的大型语言模型 (LLM)--Code Llama。Code Llama 是目前最先进的公开代码任务 LLM,它有可能使当前开发人员的工作流程更快、更高效,并降低学习代码人员的入门门槛。Code Llama 有潜力成为一种生产力和教育工具,帮助程序员编写更强大、文档更完善的软件。

生成式人工智能领域发展迅速,我们相信,对于开发创新、安全、负责任的新型人工智能工具而言,开放式方法是当今人工智能的最佳选择。我们将以与 Llama 2 相同的社区许可证发布 Code Llama。

代码拉马如何工作

Code Llama 是 Llama 2 的代码专用版本,它是通过在代码专用数据集上对 Llama 2 进行进一步训练,并在同一数据集上长时间采样更多数据而创建的。它可以根据代码和自然语言提示(例如,"给我写一个输出斐波那契数列的函数")生成代码以及关于代码的自然语言。它支持许多当今最流行的语言,包括 Python、C++、Java、PHP、Typescript (Javascript)、C# 和 Bash。

最先进的大型编码语言模型

我们将发布三种大小的 Code Llama,参数分别为 7B、13B 和 34B。每个模型都经过 500B 代码和代码相关数据的训练。7B 和 13B 基本模型和指导模型还经过了中间填充 (FIM) 功能的训练,允许它们在现有代码中插入代码,这意味着它们开箱即可支持代码补全等任务。

这三种模型可满足不同的服务和延迟要求。例如,7B 模型可以在单个 GPU 上提供服务。34B 机型返回的结果最好,可以提供更好的编码帮助,但较小的 7B 和 13B 机型速度更快,更适合需要低延迟的任务,如实时代码补全。

最先进的大型编码语言模型

Code Llama 模型可在多达 100,000 个词组的上下文中提供稳定的生成。所有模型都是在 16,000 个词组的序列上训练出来的,并在多达 100,000 个词组的输入上显示出改进。

除了作为生成更长程序的先决条件外,更长的输入序列还为代码 LLM 带来了令人兴奋的新用例。例如,用户可以从自己的代码库中为模型提供更多的上下文,使生成的程序更加相关。它还有助于大型代码库中的调试场景,在这种情况下,保持对与具体问题相关的所有代码的关注对开发人员来说是一项挑战。当开发人员需要调试一大段代码时,他们可以将整个代码长度传递到模型中。

最先进的大型编码语言模型

此外,我们还进一步微调了 Code Llama 的另外两个变体:Code Llama - Python 和 Code Llama - Instruct。

Code Llama - Python 是 Code Llama 的语言专用变体,在 100B Python 代码的基础上进行了进一步微调。由于 Python 是代码生成基准最多的语言,而且 Python 和 PyTorch 在人工智能领域发挥着重要作用,因此我们认为专门的模型能提供更多的实用性。

Code Llama - Instruct 是 Code Llama 的指令微调和对齐变体。指令调整延续了训练过程,但目标不同。模型会收到 "自然语言指令 "输入和预期输出。这样,模型就能更好地理解人类对其提示的期望。在使用 Code Llama 生成代码时,我们建议使用 Code Llama - Instruct 变体,因为 Code Llama - Instruct 已经过微调,可以生成有用且安全的自然语言答案。

我们不建议使用 Code Llama 或 Code Llama - Python 执行一般的自然语言任务,因为这两种模型都不是为遵循自然语言指令而设计的。Code Llama 专门用于代码特定任务,不适合作为其他任务的基础模型。

在使用 Code Llama 模型时,用户必须遵守我们的许可和可接受使用政策。

最先进的大型编码语言模型

评估 Code Llama 的性能

为了测试 Code Llama 相对于现有解决方案的性能,我们使用了两个流行的编码基准:HumanEval 和 Mostly Basic Python Programming (MBPP)。HumanEval 测试模型根据文档完成代码的能力,而 MBPP 则测试模型根据描述编写代码的能力。

我们的基准测试表明,Code Llama 的性能优于开源的代码专用 LLM,也优于 Llama 2。例如,Code Llama 34B 在 HumanEval 和 MBPP 测试中的得分分别为 53.7% 和 56.2%,与其他最先进的开放式解决方案相比最高,与 ChatGPT 不相上下。

最先进的大型编码语言模型

与所有尖端技术一样,Code Llama 也存在风险。负责任地构建人工智能模型至关重要,我们在发布 Code Llama 之前采取了多项安全措施。作为红队工作的一部分,我们对 Code Llama 生成恶意代码的风险进行了量化评估。我们创建了一些提示,试图以明确的意图征求恶意代码,并根据 ChatGPT(GPT3.5 Turbo)对 Code Llama 对这些提示的响应进行了评分。结果发现,Code Llama 的回答更安全。

有关我们与负责任的人工智能、攻击性安全工程、恶意软件开发和软件工程领域专家组成的红色团队合作的详细信息,请参阅我们的研究论文。

发布代码拉马

程序员已经在使用 LLM 来协助完成从编写新软件到调试现有代码等各种任务。我们的目标是提高开发人员工作流程的效率,让他们能够专注于工作中最以人为本的方面,而不是重复性的任务。

在 Meta,我们认为,人工智能模型,尤其是用于编码的 LLM,最受益于开放的方法,无论是在创新方面还是在安全性方面。公开的特定代码模型可以促进新技术的开发,改善人们的生活。通过发布像 Code Llama 这样的代码模型,整个社区都可以评估其能力、发现问题并修复漏洞。

Code Llama 的训练食谱可在我们的 Github 存储库中获取。

同时还提供模型权重。

负责任地使用

我们的研究论文披露了 Code Llama 的开发细节,以及我们如何进行基准测试。它还提供了更多信息,包括模型的局限性、我们遇到的已知挑战、我们采取的缓解措施以及我们打算调查的未来挑战。

我们还更新了《负责任使用指南》,其中包括负责任地开发下游模型的指南,包括

定义内容政策和缓解措施。
准备数据。
微调模型
评估和改进性能。
应对输入和输出层面的风险。
在用户交互中建立透明度和报告机制。
开发人员应使用特定于代码的评估基准来评估其模型,并对特定于代码的使用案例(如生成恶意软件、计算机病毒或恶意代码)进行安全研究。我们还建议利用安全数据集进行自动和人工评估,并就对抗性提示进行红队合作。

生成式人工智能编码的未来

Code Llama 旨在为各行各业的软件工程师提供支持,包括科研、工业、开源项目、非政府组织和企业。但是,与我们的基础模型和指导模型相比,还有更多的使用案例需要支持。

我们希望 Code Llama 能够激励其他人利用 Llama 2 为研究和商业产品创造新的创新工具。

立即试用 Code Llama

代码拉玛 GitHub 代码库
下载代码拉玛模型
阅读研究论文

代码拉马:代码的开放式基础模型

- THE END -
最后修改:2023年8月26日

非特殊说明,本博所有文章均为博主原创。