Code Llama: Open Foundation Models for Code论文阅读

整体介绍

Code Llama 发布了3款模型,包括基础模型、Python 专有模型和指令跟随模型,参数量分别为 7B、13B、34B 和 70B。这些模型在长达 16k tokens 的序列上训练。都是基于 Llama 2。

作者针对infilling (FIM) 、长上下文、指令专门做了微调 long-context fine-tuning (LCFT).
Code Llama: Open Foundation Models for Code论文阅读_第1张图片

codellama细节

Code Llama 模型家族

  • 初始化: 所有 Code Llama 模型均以 Llama 2 模型权重初始化。
  • 训练数据: 训练使用了500B tokens,而70B模型使用了1T tokens。
  • 填充能力: 7B、13B和70B模型支持基于上下文的填充(infill)。

数据集

Code Llama 模型的训练数据集由公开可用的代码组成,其中8%的样本数据来自与代码相关的自然语言数据集。这些数据集包含代码讨论和代码片段,有助于模型理解自然语言。

  • 数据集: 训练数据主要来自公开可用的代码数据,以及与代码相关的自然语言数据。
  • 标记化: 使用与 Llama 2 相同的标记器进行标记化处理。

Infilling(填充)

填充是预测程序中缺失部分的任务,Code Llama 模型通过特定的训练方法来实现这一功能。训练使用了因果掩码(causal masking)技术,将训练序列的部分移动到序列末尾,并自回归地预测重排序列。

  • 分割: 训练文档在字符级别上分割为前缀、中间部分和后缀。
  • 掩码: 以一定概率应用掩码转换,只对不超过模型上下文长度的文档进行操作。

长上下文微调(Long context fine-tuning)

长上下文微调阶段是专门提出来提高模型处理长序列的能力。通过修改RoPE位置嵌入的参数,将模型的最大上下文长度从4,096 tokens扩展到100,000 tokens。

  • 序列长度: 训练时使用的序列长度为16,384 tokens。
  • RoPE调整: 调整了旋转嵌入的频率,以适应更长的序列。

指令微调(Instruction fine-tuning)

Code Llama - Instruct 模型在 Code Llama 的基础上,通过三种额外的数据进行微调,以更好地回答问题。
三种不同类型的数据:

  • 专有数据集: 使用 Llama 2 的RLHF V5 指令微调数据集。提高模型输出的安全性,增强模型对用户指令的响应能力。
  • 自指导数据集: 通过执行反馈选择数据,构建自指导数据集。使用llama2 70B生产指令问题,coda llama 7B回答问题,选择对的作为最后的数据集。
  • 复述: 防止模型在一般编码和语言理解能力上退步,使用代码数据集和自然语言数据集的一小部分进行训练。

2.6 训练细节

  • 优化器: 使用 AdamW 优化器,并采用余弦调度策略。
  • 学习率: 根据模型大小调整学习率。

能力对比

三种的能力对比:

  • Code Llama (基础模型)
    代码生成: 用于广泛的代码生成任务。
    多语言支持: 不局限于单一编程语言,能够处理多种编程语言的代码。
    参数规模: 提供7B、13B、34B和70B参数的模型。
    长上下文处理: 经过特别微调,能够处理长达100k tokens的输入上下文。
  • Code Llama - Python (Python 专有模型)
    Python 语言优化: 专为Python编程语言设计,提高在Python代码生成任务上的性能。
    参数规模: 同样提供7B、13B、34B和70B参数的模型。
    长上下文与填充: 支持长上下文处理,并且7B、13B和34B参数的模型支持代码填充。
  • Code Llama - Instruct (指令跟随模型)
    指令跟随: 经过额外的微调,以更好地遵循自然语言指令来生成代码。
    安全性与有用性: 通过在包含安全和有帮助响应的数据集上的训练,提高了模型的安全性和有用性。
    参数规模: 目前提供7B、13B和34B参数的模型。
    自生成数据: 使用自生成的单元测试和解决方案来训练模型,增强了代码生成和理解的能力。

所有这些模型都是在大量代码数据上训练的,并且都经过了优化以提高在代码生成和理解任务上的性能。Code Llama - Python 专注于Python语言的代码生成,而 Code Llama - Instruct 专注于提高对自然语言指令的遵循能力,并增强了模型的安全性。基础模型 Code Llama 提供了广泛的代码生成能力,适用于多种不同的编程语言。

其他能力

该模型还可以做代码问题解答:
Code Llama: Open Foundation Models for Code论文阅读_第2张图片
可以生成注释

你可能感兴趣的:(大模型,llama,codellama)