code llama与starcoder论文总结

StarCoder

1、 整体流程

SatrCoder:

在这里插入图片描述

CodeLLAMA:

在这里插入图片描述

2、数据方面

2.1 StarCoder

除了一些数据安全处理操作之外,在stack数据集的358中编程语言中选择了86种,再进行下一步筛选,选出数据大于500MB的编程语言。其中还包括 json 和 yaml(占比不大,0.1左右),占比较大的是C、java、python、markdown

加入占比较大的markdown数据与CodeLLAMA在通用语言模型上进行代码训练的思想较为相似,故代码大模型的训练是需要通用语言数据的。

2.2 CodeLLAMA

基于llama2 使用500B token进行训练,代码数据占85%,8%和代码相关的自然语言, 7%自然语言。

且提出了一个self-instruct的数据自生成策略。

2.3 总结

两个模型在数据方面最大的特点即在一定程度上都加入了通用语言数据,而CodeLLAMA更是直接在通用语言模型的基础上进行代码数据微调,这也证明了代码大模型的微调训练策略是行得通的,关键即在于训练的代码数据质量

在我们自己的代码大模型数据方面:分布可以基于CodeLLAMA的数据分布作为先验知识,搜集可以基于StarCoder中的代码过滤及筛选策略,代码数据生成可以考虑CodeLLAMA中的self-instruct策略:即基于自身模型给出测试代码及答案代码,将生成结果输入测试代码进行判断。

ChatGPT作为大模型方面的SOAT,在各个方面的能力基本都成为了业内标杆,在代码领域其也有非常强的能力,除了上述两种数据策略之外,另一个有效的策略即是通过ChatGPT生成代码微调数据,以ChatGPT作为模型的“老师”,使模型能力像GPT靠近。

3、模型架构

3.1 总结

​ 模型结构方面几乎都是大同小异,且我们的训练策略基本不涉及模型结构,故此部分不再赘述。只介绍一下StarCoder中比较重要的注意力机制应用。

Starcoder模型架构是与SantaCoder相同(decoder-only transformer, MQA, 绝对位置编码)。为了训练其代码上下文补全能力,将训练的文本序列一部分移动到结尾,然后自回归重新排序进行训练,CodeLLAMA也采用了此策略。

主要介绍一下MQA,下图为常见的注意力机制原理对比,依次是MHA、GQA、MQA:

在这里插入图片描述

MQA 让所有的头之间共享同一份 Key 和 Value 矩阵,每个头只单独保留了一份 Query 参数,从而大大减少 Key 和 Value 矩阵的参数量。

4、最终模型

4.1 StarCoder

​ 如章节1中的整体结构图,首先用纯代码数据进行预训练得到StarCoderBase,在此基础上继续通过35B Python数据进行微调得到 StarCoder。

4.2 CodeLLAMA

​ 如章节1中的整体结构图,CodeLLAMA也是衍生出了三种不同的代码模型,即Code Llama基础模型、Code Llama-Python专用语言、Code Llama-instruct。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值