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

深度学习:代码预训练模型

自动代码生成

如Coplilot、CodeGeeX等代码补全插件现在以及支持对代码自动生成,提升开发者效率。代码生成主要包括:代码生成、注释生产/代码解释和代码翻译等工作。

 代码与训练模型介绍

代码预训练具有如下特点:多语言能力掌握、代码特殊格式处理。评测代码预训练结果主要考虑:追求正确性、功能、逻辑正确实现、实现用户意图。

基于Transformer的代码与训练模型

CodeBERT

模型架构:Encoder架构模型

训练数据:自然语言-代码对 CodeSearchNet数据集

预训练任务:掩码预测、替换Token检测

下游任务:代码搜索、检测,(附加解码器)进行文档生成 

GraphCodeBERT

在CodeBERT基础上引入代码结构信息:数据流图,表示变量的相互引用关系。

 输入:文本+代码+变量符号

变量符号的注意力:GraphCodeBERT通过数据流图的边关系来影响注意力机制的计算。文本与代码间可以相互计算注意力,但是变量符号间,有边的变量才可以相互计算注意力。同时,代码段中的变量可以与变量符号序列中的变量计算注意力,因为他们本质是一样的。

预训练任务:掩码预测、数据流图连边预测、代码与变量符号关联预测 

大规模预训练模型

CodeX

首个大规模代码生成模型,基于GPT-3 12B进行微调。159GB Python代码数据训练,编程题目微调。

CodeGeeX

基于MindSpore实现的13B多语言代码生成预训练模型。

训练数据分为两个部分:开源数据集(代码子集,多语言)、CodeParrot(Python),额外爬取的数据集:GitHub上优质的开源仓库。总共包含23种编程语言。

数据清洗

按照完全匹配去重文件,根据长度、字符取出无效文件。

在文件开头以注释形式标记语言。如 # language:Python,添加一些其他的元信息(InCoder工作)。

基于自然语言分词器:GPT-2 BPE Tokenizer进行分词。对于代码中特有的连续空格编码成为特殊空格字符,减少空格编码数。

每个文件切分为2048长度的序列作为训练样本,不足最大长度使用终止符补齐。

模型架构

基于GPT架构的自回归模型,由40层Transformer Decoder组成,模型规模为13B。

TopQueryEmb是由一个独立的位置编码生成的一个可学习的Embedding,作为Top Query Layer的Q。

更多内容可参考MindSpore官方视频:第六课:代码预训练_哔哩哔哩_bilibili


http://www.kler.cn/a/414310.html

相关文章:

  • Golang项目:实现生产者消费者模式
  • uniapp 安卓和ios震动方法,支持息屏和后台震动,ios和安卓均通过测试
  • 数据结构与算法(排序算法)
  • STM32-C语言基础知识
  • TheadLocal出现的内存泄漏具体泄漏的是什么?弱引用在里面有什么作用?什么情景什么问题?
  • 水母形状电池:助力机器人性能提升
  • 【西瓜书】决策树
  • 网络空间安全之一个WH的超前沿全栈技术深入学习之路(13-2)白帽必经之路——如何用Metasploit 渗透到她的心才不会让我释怀
  • 力扣刷题--42.接雨水【图文详解|超级详细】
  • JAVA项目-------医院挂号系统
  • 鸿蒙征文|鸿蒙技术分享:使用到的开发框架和技术概览
  • 一些k8s和docker的命令
  • javaweb-day03-前端零碎
  • golang 实现比特币内核:如何接入 RPC 后端获得特定交易的二进制数据
  • wxFormBuilder:可视化设计、学习wxWidgets自带UI控件的好工具
  • ML 系列:第 32节 — 机器学习中的统计简介
  • 33 基于单片机的智能窗帘控制系统
  • 分布式链路追踪系统
  • elasticsearch单节点模式部署
  • SAP开发语言ABAP开发入门