当前位置: 首页 > news >正文

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).
在这里插入图片描述

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 提供了广泛的代码生成能力,适用于多种不同的编程语言。

其他能力

该模型还可以做代码问题解答:
在这里插入图片描述
可以生成注释
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • STM32外部中断事件控制器-EXTI
  • 【AI学习】在魔塔社区玩Ollama:部署GLM4和CodeGeeX4
  • 切换JDK版本
  • CSS3页面布局-三栏-固定宽度布局
  • TCP协议(1)
  • Ubuntu上搭建Nginx环境
  • Golang | Leetcode Golang题解之第368题最大整除子集
  • 面试被面试官问:3D目标检测预处理优化策略有哪些?
  • 计算机网络模型
  • kafak集群搭建-基于zookeeper方式
  • 七牛云文件存储
  • 大模型在应用开发安全左移实践
  • 【C/C++】Sleep()函数详解
  • GPIO(通用输入/输出)、中断(hal库)
  • Chrome 中的 RCE 会在 JIT 编译器中产生不正确的副作用
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 《深入 React 技术栈》
  • 2017 年终总结 —— 在路上
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Docker下部署自己的LNMP工作环境
  • Java应用性能调优
  • js数组之filter
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • laravel 用artisan创建自己的模板
  • oschina
  • react 代码优化(一) ——事件处理
  • uva 10370 Above Average
  • Webpack 4 学习01(基础配置)
  • 编写高质量JavaScript代码之并发
  • 缓存与缓冲
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何实现 font-size 的响应式
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 数组的操作
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​浅谈 Linux 中的 core dump 分析方法
  • #QT(串口助手-界面)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (03)光刻——半导体电路的绘制
  • (HAL库版)freeRTOS移植STMF103
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .net操作Excel出错解决
  • .net访问oracle数据库性能问题
  • .NET命令行(CLI)常用命令
  • [000-01-011].第2节:持久层方案的对比
  • [Android]如何调试Native memory crash issue
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [c++] 自写 MyString 类
  • [C++][数据结构][算法]单链式结构的深拷贝