Code Llama 是 Llama 2 的一系列最先进的开放访问版本,专门用于代码任务,我们很高兴发布与 Hugging Face 生态系统的集成! Code Llama 已使用与 Llama 2 相同的宽松社区许可证发布,并且可用于商业用途。
今天,我们很高兴发布:
- Hub 上的模型及其模型卡和许可证
- Transformer集成
- 与文本生成推理集成,以实现快速高效的生产就绪推理
- 与推理端点集成
- 代码基准测试
代码大模型对软件工程师来说是一项令人兴奋的发展,因为他们可以通过 IDE 中的代码完成来提高生产力,处理重复或烦人的任务,例如编写文档字符串或创建单元测试。
1、什么是Code Llama?
Code Llama 版本引入了一系列包含 7、13 和 340 亿个参数的模型。 基础模型从 Llama 2 初始化,然后在 5000 亿个代码数据上进行训练。 Meta 对这些基本模型进行了两种不同风格的微调:Python 专家(1000 亿个额外令牌)和指令微调版本,可以理解自然语言指令。
这些模型在 Python、C++、Java、PHP、C#、TypeScript 和 Bash 中展示了最先进的性能。 7B 和 13B 基本和指令变体支持基于周围内容的填充,使它们非常适合用作代码助手。
Code Llama 在 16k 上下文窗口上进行训练。 此外,这三个模型变体还进行了额外的长上下文微调,使它们能够管理最多 100,000 个令牌的上下文窗口。
由于 RoPE 扩展的最新发展,将 Llama 2 的 4k 上下文窗口增加到 Code Llama 的 16k(可以推断到 100k)是可能的。 社区发现 Llama 的位置嵌入可以线性插值或在频域中插值,这可以通过微调轻松过渡到更大的上下文窗口。 在 Code Llama 的情况下,频域缩放是通过松弛完成的:微调长度是缩放的预训练长度的一小部分,从而使模型具有强大的外推能力。
所有模型最初都是在公开可用代码的近乎重复数据删除的数据集上使用 5000 亿个令牌进行训练。 该数据集还包含一些自然语言数据集,例如有关代码和代码片段的讨论。 不幸的是,没有有关该数据集的更多信息。
对于指令模型,他们使用了两个数据集:为 Llama 2 Chat 收集的指令调整数据集和自指令数据集。 自指导数据集是通过使用 Llama 2 创建面试编程问题,然后使用 Code Llama 生成单元测试和解决方案,然后通过执行测试来评估的。
2、如何使用Code Llama?
从 Transformers 4.33 版本开始,Code Llama 已在 Hugging Face 生态系统中可用。 在 Transformers 4.33 发布之前,请从主分支安装它。
可以在此空间轻松尝试 Code Llama 模型(130 亿个参数!):
3、Transformers
随着即将发布的 Transformers 4.33,你可以使用 Code Llama 并利用 HF 生态系统中的所有工具,例如:
- 训练和推理脚本和示例
- 安全文件格式(safetensors)
- 与bitsandbytes(4位量化)和PEFT(参数高效微调)等工具集成
- 使用模型运行生成的实用程序和助手
- 导出模型以进行部署的机制
在 Transformers 4.33 发布之前,请从主分支安装它。
!pip install git+https://github.com/huggingface/transformers.g