Inside Code Llama:Meta AI 进入 Code Llam 领域
00 分钟
2023-8-29
2023-8-30
type
status
slug
summary
date
tags
category
password
Text
AI summary
AI custom autofill
Multi-select
Status
URL
hashtag
勘误
标签
标题
类型
贴文
🪄
icon

新的模型系列建立在 Llama 2 基础上,可在不同的代码生成任务中提供最先进的性能。

notion image
编码已迅速成为大型语言模型(LLM)最活跃的领域之一。自从 OpenAI 去年推出 Codex(现已成为 GPT-4 的一部分)以来,编码语言模型的创新水平一直令人惊叹。在过去的几个月里,我们看到了 Salesforce、Hugging Face、DeepMind、Amazon 等公司发布的代码 LLM。上周,Meta AI发布了 Code Llama,这是一个基于最近发布的 Llama 2 的开源代码 Llama,掀起了代码 Llama 的热潮。考虑到 Meta 在开源领域的影响力,Code Llama 的发布意义重大。基础模型运动
Meta AI 开发了 Code Llama,这是 Llama 2 的专门迭代,是通过对特定于编码的数据集进行扩展训练而出现的。通过从以代码为中心的数据集中集中提取数据,Code Llama 不断提高其编码能力,有效增强了从 Llama 2 继承的功能。这个高级版本展示了代码生成和阐明代码自然语言的能力。无论输入是代码还是自然语言,例如“创建一个生成斐波那契数列的函数”之类的请求,Code Llama 都能熟练地生成相关代码和文本解释。此外,它还巧妙地帮助完成代码和调试工作,无缝地适应 Python、C++、Java、PHP、Typescript (Javascript)、C# 和 Bash 等流行语言。
notion image
图片来源:Meta AI

Inside Code Llama

Code Llama 的发布不包括单一模型,而是三个不同的变体,其参数大小分别为 7B、13B 和 34B。这些模型中的每一个都经过了包含代码和代码相关信息的 500B 代币的广泛池的训练。值得注意的是,7B 和 13B 基础和指令模型被赋予了中间填充 (FIM) 能力,使它们能够将代码无缝插入到现有的代码结构中。此属性使它们能够从一开始就处理诸如代码完成之类的任务。
这三个模型满足了有关服务和延迟的不同要求。例如,7B 型号拥有在单个 GPU 上运行的能力。虽然 34B 模型因产生最佳结果和提升编码辅助而脱颖而出,但较小的 7B 和 13B 版本在速度方面表现出色,使其适合低延迟任务,例如实时代码完成。
Meta AI 的创新进一步延伸到 Code Llama 的两种细微差别:Code Llama — Python 和 Code Llama — Instruct。
  • Code Llama - Python
    • 是一种专门的派生,在跨越 100B 令牌的大量 Python 代码上精心磨练。鉴于 Python 在代码生成基准测试中的核心作用及其在 AI 社区中的重要性,这种专注的模型增强了实用性。
  • Code Llama — Instruct
    • 代表通过指令微调对 Code Llama 进行调整和完善。这种新颖的训练方法需要为模型提供与预期输出相匹配的“自然语言指令”输入。这种战略方法增强了模型在提示中把握人类期望的能力。对于涉及代码生成的工作,建议选择 Code Llama — Instruct 版本,因为它们已经过校准,可以产生有用且安全的自然语言响应。
notion image
图片来源:Meta AI
深入研究 Code Llama 的训练和微调,有几个方面值得强调:
1) 数据集
Llama 的训练依赖于精心策划的数据集,其中包含公开可用的代码,提供了近乎无重复的景观。该数据集在初始阶段由 500B 代币组成,从 7B、13B 和 34B 版本开始。补充 8% 的样本数据是从链接到代码域的自然语言数据集中获取的。
2) 填充
在代码填充领域,一项关键任务围绕在上下文环境的指导下预测程序中缺失的片段。实用的应用程序包括集成开发环境 (IDE) 中的代码完成、类型推断,甚至代码内文档(例如文档字符串)的生成。其运作符合因果屏蔽的概念,这是 Aghajanyan 等人阐述的一个框架。(2022)和弗里德等人。(2023),Meta AI 塑造填充模型。训练过程需要将部分训练序列转变为结论,为自回归预测铺平道路。在这一努力中,多功能 7B 和 13B 模型都接受了填充导向的训练,呼应了 Bavarian 等人建议的策略。(2022)。
3)长上下文微调
在基于 Transformer 的语言模型领域,解开处理大量序列的复杂性是一项艰巨的任务。关键的挑战围绕着外推法——深入研究超出训练过程中遇到的序列长度——以及注意力传递的二次复杂性,这使得平衡向中短输入倾斜,以实现有效的训练。Meta AI 推出了独特的解决方案,引入了长上下文微调 (LCFT) 的专用领域。LCFT 采用包含 16,384 个令牌的序列,与 Llama 2 初始代码训练阶段的 4,096 个令牌相比有了巨大飞跃,LCFT 为模型提供了扩展范围的功能。这种战略转变发生在微调阶段,避免了培训成本的过度上升。
4) 指令微调
Code Llama 的实力延伸到了指令微调,这在改进的 Code Llama — Instruct 模型中得到了证明。此迭代以 Code Llama 作为基础,旨在恰当地响应查询。将监督微调与大量拒绝采样示例相结合可以产生这种指导性的能力。
5)自我指导
在数据集领域,Meta AI 踏上了专有的旅程,管理与代码相关任务相关的实例。认识到从人类注释者或通过人类反馈获取数据的资源密集型性质,特别强调自我指导。编码任务领域充满了专业开发人员的见解,形成了绘制这种创新方法的画布。

结果

在评估 Code Llama 时,Meta AI 采用了两个广泛认可的编码基准:HumanEval 和最基础的 Python 编程 (MBPP)。HumanEval 基准通过文档字符串系统地评估模型在代码完成方面的能力,而 MBPP 基准则仔细检查模型将描述转换为可执行代码的能力。
细致的基准测试工作展现了富有启发性的结果:Code Llama 超越了开源、以代码为中心的大型语言模型 (LLM),甚至超越了其前身 Llama 2。例如,在 Code Llama 34B 的情况下,出现了显着的分数 - 令人印象深刻HumanEval 基准测试结果为 53.7%,MBPP 基准测试结果为 56.2%。这些分数在同类最先进的解决方案中名列前茅,使 Code Llama 34B 与 ChatGPT 的显着功能不相上下。
notion image
图片来源:Meta AI
Code Llama 有望在不久的将来成为最重要的代码LLM之一。它无疑有助于重申跨不同领域的开源基础模型的价值。
 


评论