Code Llama 发行说明

Code Llama 是一系列最先进的、开放访问的大型语言模型家族,专门用于编码任务,基于 Llama 2 架构。这些模型旨在通过自动化代码补全、生成单元测试和编写文档来提升开发者的生产力。

模型变体和训练

Code Llama 提供三种参数规模:70亿、130亿和340亿。这些模型通过多阶段训练过程开发而成:

  • 基础模型: 从 Llama 2 初始化,并在近去重的、公开可用的代码及相关自然语言讨论的 5000亿个 token 上进行训练。
  • Python 专家版: 基础模型的一个版本在额外的 1000亿个 Python 代码 token 上进一步训练。
  • 指令微调版: 一个经过优化以理解并遵循自然语言指令的版本。该变体通过结合 Llama 2 Chat 指令调优数据集以及由 Llama 2(生成面试问题)和 Code Llama(生成解决方案和单元测试)创建的自指令数据集进行训练。

技术能力

长上下文窗口

Code Llama 支持原生 16000 token 的上下文窗口。通过长上下文微调和频率域 RoPE 缩放,模型可以外推以管理多达 100000 token 的上下文窗口。

代码填充

7B 和 13B 的基础版和指令版支持代码填充。这使得模型能够生成介于现有前缀和后缀之间的代码,这对于 IDE 中基于光标的代码助手至关重要。此功能在 34B 模型或 Python 专门版中不可用。

语言支持

这些模型在多种主要编程语言上展示了最先进的性能,包括 Python、C++、Java、PHP、C#、TypeScript 和 Bash。

部署和集成

Hugging Face 生态系统

Code Llama 已集成到 transformers 库(版本 4.33+),提供以下支持:

  • 4-bit 加载: 通过与 bitsandbytes 集成,34B 模型可以在消费级 GPU 上运行,例如 NVIDIA RTX 3090。
  • 精度选项: 虽然模型是在 bfloat16 下训练的(推荐用于微调),但可以在 float16 下运行以获得更快的推理速度,且评估指标没有明显退化。

生产推理

为了生产就绪的部署,这些模型与 Text Generation Inference (TGI) 和 Hugging Face Inference Endpoints 兼容。Inference Endpoints 推荐的硬件包括:

  • 7B 模型: 1x Nvidia A10G(GPU medium)。
  • 13B 模型: 1x Nvidia A100(GPU xlarge)。
  • 34B 模型: 1x Nvidia A100,使用 bitsandbytes 量化(GPU 1xlarge)或 2x Nvidia A100(GPU 2xlarge)。

性能评估

Code Llama 模型使用 HumanEval 和 MultiPL-E(将 HumanEval 翻译成多种语言)进行基准测试。根据发布时的多语言代码排行榜,Code Llama 家族在不同规模和变体上表现出竞争力的性能。例如,CodeLlama-34B-Instruct 模型在 Python 上获得了 50.79 分,在 JavaScript 上获得了 45.85 分,而排行榜平均分为 35.09。

Sources