导语
Code Llama是开源模型Llama 2在代码领域的一个专有模型,作者通过在代码数据集上进行进一步训练得到了了适用于该领域的专有模型,并在测试基准中超过了同等参数规模的其他公开模型。
- 链接:https://arxiv.org/abs/2308.12950
- 机构:Meta AI
1 引言
LLMs在自然语言处理方面已达到高水平,在代码领域能够执行多种任务(例如程序合成、代码完成、调试和生成文档)。本文介绍了Code Llama,这是一系列基于Llama 2的代码生成和填充的LLMs,并以自定义宽松许可发布。
Code Llama的训练和微调过程如下:
- 从基础模型进行代码训练:与其他只在代码上训练的LLMs不同,Code Llama基于通用文本和代码数据的Llama 2预训练模型进行微调。
- 填充功能:Code Llama的7B和13B模型采用自回归和因果填充预测的多任务目标,使得模型能够在完整上下文中填充缺失的文本。
- 长输入上下文:Code Llama通过修改RoPE位置嵌入的参数,将最大上下文长度从4,096个标记扩展到100,000个标记。
- 指令微调:Code Llama - Instruct变体通过混合专有指令数据和机器生成的自指令数据集进行了进一步微调,以提高安全性和实用性。
Code Llama的不同变体:提供了三种主要变体,每种变体有三种大小(7B、13B和34B参数):
- Code Llama:基础代码生成模型。
- Code Llama - Python:专为Python定制的版本。
- Code Llama - Instruct:结合了人类指令和自生成代码合成数据的版本。
本文对模型在主要的代码生成基准测试(如HumanEval、MBPP、APPS以及多语言版本的HumanEval,即MultiPL-E)上进行了全面评估。Code Llama在这些测试中表现优异,建立了开源LLMs的新标准。