论文调研 | 一些开源的AI代码生成模型调研及总结【更新于250313】

news2025/4/21 18:52:17

本文主要介绍主流代码生成模型,总结了基于代码生成的大语言模型,按照时间顺序排列。

在了解代码大语言模型之前,需要了解代码相关子任务

  • 代码生成

  • 文本生成代码(Text to code):根据自然语言描述生成代码

  • 重构代码(Refactoring code):在不改变其功能的情况下更改源代码的结构,通常是为了使其更加高效、可读且易于维护。

  • 代码到代码的翻译(Code-to-code):将一种编程语言编写的代码转换为另一种同功能编程语言的过程。此过程也称为代码转换、转译、代码迁移或源到源翻译。

模型论文及代码

2020.09.18_CodeBERT

CodeBERT是在2020年提出的一个大型语言模型,旨在通过预训练和微调的方式,增强源代码理解和生成的能力。

数据集Dataset

  • Stackdataset:Github code repositories(Python, Java,JavaScript, PHP, Ruby, and Go)

模型框架Model Arc

Natural Language(NL),Programming Language(PL)

Objective 1:Masked Language Modeling(MLM)

Objective 2:Replaced Token Detection(RTD)

CodeSearchNet

Code to NL

CodeSearch

2021_CodeX [未开源]

CodeX是OpenAI 在2021年推出的大型语言模型,通过在多样的编程任务上进行预训练,旨在提升源代码理解和生成的能力。

Key features(model)

  • Code-davinci-002 -> Max tokens 4000

  • code-cushman-001->Max tokens 2048

Programming languages

  • Python ,Javascript,Bash,c#...

Search Code Net

2022.02_AlphaCodeTransformer(seq2seq)

论文题目:Competition-Level Code Generation with AlphaCode

论文地址:2203.07814.pdf (arxiv.org)

代码地址:

Demo:AlphaCode (deepmind.com)

2022_Polyglot

论文题目:Polyglot: Large Language Models of Well-balanced Competence in Multi-languages

代码地址:EleutherAI/polyglot: Polyglot: Large Language Models of Well-balanced Competence in Multi-languages (github.com)

2023.01.27_PAL

论文题目:PAL: Program-aided Language Models

论文地址:[2211.10435] PAL: Program-aided Language Models (arxiv.org)

论文主要内容: 让Code LLM生成代码来解决一些NLP问题!!

摘要

大型语言模型 (LLM) 最近在测试时提供了一些示例(“小样本提示”),展示了执行算术和符号推理任务的令人印象深刻的能力。这种成功很大程度上可以归因于诸如“思维链”之类的提示方法,这些方法使用LLM来理解问题描述,将其分解为步骤,以及解决问题的每个步骤。虽然 LLM 似乎擅长这种逐步分解,但 LLM 经常在解决方案部分犯逻辑和算术错误,即使问题被正确分解。在本文中,我们提出了程序辅助语言模型(PAL):一种新颖的方法,它使用LLM来读取自然语言问题并生成程序作为中间推理步骤,但将求解步骤卸载到运行时,例如Python解释器。在PAL中,将自然语言问题分解为可运行的步骤仍然是LLM的唯一学习任务,而求解则委托给解释器。我们在 BIG-Bench Hard 和其他基准测试的 13 个数学、符号和算法推理任务中展示了神经 LLM 和符号解释器之间的这种协同作用。在所有这些自然语言推理任务中,使用 LLM 生成代码并使用 Python 解释器进行推理会产生比大型模型更准确的结果。例如,使用 Codex 的 PAL 在数学单词问题的 GSM8K 基准测试中实现了最先进的少样本精度,超过了使用思维链的 PaLM-540B,绝对是 15% 的 top-1。我们的代码和数据在此 http URL 上公开提供。

与使用自由格式文本的 CoT 不同,PAL 将解决方案步骤卸载到编程运行时,例如 python 解释器。

2023_Codegen2

CodeGen2是Salesforce开发的,可以进行infilling,并且支持更多的编程语言。这里的infilling应该是在插入代码的含义。

2023_Codet5+

Salesforce的CodeT5 + 在指令调优上的效果,以更好地使模型与自然语言指令保持一致。

模型框架(Model Architecture)

方法(Method)

  • Span Denoising

  • Causal Language Modeling (CLM)

  • Text-Code Contrastive Learning

  • Text-Code Matching

  • Text-Code Causal LM

2023_SELF-DEBUGGING

Google→ SELF-DEBUGGING

2023_StarCoder

StarCoder是HuggingFace在BigCode基于GitHub数据训练的一个代码补全大模型。可以实现一个方法或者补全一行代码。

15.5B LLM for code with 8k context and trained only on permissive data in 80+ programming languages:

  • Decoder-only Transformer with Fillin-the Middle,Multi-Query-Attention,and leaned absolute position embeddings.

  • Pretrainmodel Size : 64GB → BigCode OpenRAIL-M v1

2023.7.18_LLAMA2

Meta→ 2023_LLAMA2

2023.7_CodeGeeX2

2023.8.8_StableCode

Announcing StableCode — Stability AI

stabilityai/stablecode-instruct-alpha-3b · Hugging Face

Based on Bigcode,Instruction and response

2023.8.24_Code Llama

论文题目:Code Llama: Open Foundation Models for Code

论文地址:[2308.12950] Code Llama: Open Foundation Models for Code (arxiv.org)

代码地址GitHub - facebookresearch/codellama: Inference code for CodeLlama models

官方博客:Code Llama: Llama 2 learns to code (huggingface.co)

 code llama就是在llama2模型的基础上,利用代码数据进行训练和微调,提高llama2在代码生成上的能力。

code llama提供了三种模型,每种模型包含7B,13B,34B三个尺寸,支持多种编程语言,如Python, C++, Java, PHP, Typescript (Javascript), C#, Bash等。

  • Code Llama,代码生成的基础模型;

  • Code Llama-Python,单独针对于python的模型;

  • Code Llama-Instruct,根据人工指令微调的模型。

主要讲解论文对应段落

2.3.代码补全(Infilling)

代码补全就是根据代码的上下文预测代码缺失的部分,比如在IDE中,对鼠标位置的代码自动完成,文档自动生成等。

将训练的文本序列一部分移动到结尾,然后自回归重新排序进行训练。

将文本分成<prefix>,<middle>和<suffix>三部分(前,中,后),然后按2种方式排列。

PSM:即prefix,suffix,middle的顺序,结构如下图:

编辑

 SPM:即suffix,prefix,middle的顺序,如下

<SUF>○Enc(suffix)○<PRE>○Enc(prefix)○<MID>○Enc(middle)

训练时样本一半按PSM格式,一半按SPM格式。

2.4.微调长上下文(long context fine-tuning (LCFT))

llama24096token输入改为16384token输入

为了将训练成本限制在微调,参考RoPE线性插值的思路,只不过这里没有采用插值,而是修改注意力的衰减周期。

2.5.策略微调(Instruction fine-tuning)

对于指令微调,最重要的还是构建更好的数据集。

  • 专有数据集(Proprietary dataset)

  • 指令数据集(self-instruct dataset)

2023.08.27_WizardCoder

Microsoft→WizardCoder 

代码地址:https://github.com/nlpxucan/WizardLM/tree/main/WizardCoder

Demo:WizardCoder-Python-34B-V1.0

  • WizardLM(WizardLM: An Instruction-following LLM Using Evol-Instruct)

    • Instruction Evolver :

    • Instruction Eliminator

    • Evol-Instruct(Focuses on open-domain instruction data)

  • Fine-tune Starcoder-15B based on WizardLM

2024.1.25_DeepSeekCoder

论文DeepSeek-Coder: When the Large Language Model Meets Programming -- The Rise of Code Intelligence

 DeepSeek-Coder是开源代码模型,大小从 1.3B 到 33B 不等,在 2 万亿个token上从头开始训练。这些模型在高质量的项目级代码语料库上进行了预训练,并采用具有 16K 窗口的填空任务来增强代码生成和填充。论文表明,DeepSeek-Coder 不仅在多个基准测试的开源代码模型中实现了最先进的性能,而且还超越了现有的闭源模型,如 Codex 和 GPT-3.5。

2024.11.12V3_Qwen2.5-Coder 

论文:Qwen2.5-Coder Technical Report

论文地址:https://arxiv.org/abs/2409.12186

论文代码:https://github.com/QwenLM/Qwen2.5-Coder

阿里巴巴的Qwen2.5-Coder 是特定于代码的 Qwen 大型语言模型(以前称为 CodeQwen)的最新系列。截至目前,Qwen2.5-Coder 已覆盖 0.5、1.5、3、7、14、320 亿个参数的六大主流模型大小,满足不同开发者的需求。Qwen2.5-Coder 在 CodeQwen1.5 的基础上带来了以下改进:

  • 在代码生成、代码推理和代码修复方面有显著改进。基于强大的 Qwen2.5,我们将训练代币扩展到 5.5 万亿,包括源代码、文本代码接地、合成数据等。Qwen2.5-Coder-32B 已成为当前最先进的开源 codeLLM,其编码能力与 GPT-4o 相匹配。

  • 为实际应用程序(如 Code Agent)提供更全面的基础。不仅提高了编码能力,而且保持了其在数学和一般能力方面的优势。

  • 长上下文支持高达 128K 个令牌。

2025.01.07V3_OpenCodeInterpreter

论文:OpenCodeInterpreter: Integrating Code Generation with Execution and Refinement将代码生成与执行和优化集成

论文地址:https://arxiv.org/pdf/2402.14658

论文代码:https://github.com/OpenCodeInterpreter/OpenCodeInterpreter

DEMO:https://opencodeinterpreter.github.io/


SOTA模型 


想要了解更多内容,可在小程序搜索🔍AI Pulse,获取更多最新内容。

参考文献

【1】Big Code Models Leaderboard - a Hugging Face Space by bigcode

【2】codefuse-ai/Awesome-Code-LLM: [TMLR] A curated list of language modeling researches for code (and other software engineering activities), plus related datasets.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2314705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity Timeline 扩展

这里认为大家已经会timeline的基本使用了&#xff0c;只介绍怎么自定义扩展。 第一步.自定义Track 首先要自定义一条轨道。剪辑是要在轨道里跑的&#xff0c;系统自带的轨道我们加不了自定义剪辑&#xff0c;得新建自己用的。这个很简单。 [TrackClipType(typeof(TransformTw…

qt介绍信号槽一

信号和槽时qt框架中事件处理的一种机制&#xff0c;qt是基于窗口框架的程序&#xff0c;基于窗口框架额程序都是基于事件的&#xff0c;本质信号对应的就是一个事件&#xff0c;槽对应事件处理的动作。信号槽机制类似于设计模式力的观察者模式。观察者模式就是我一直观察是否有…

【linux】解决 Linux 系统中 root 用户无法打开图形界面问题

【linux】解决 Linux 系统中 root 用户无法打开图形界面问题 问题描述&#xff1a; 在 Linux 系统中&#xff0c;当我们远程SSH尝试以 root 用户身份运行需要图形界面的应用程序时&#xff0c;可能会遇到以下错误信息&#xff1a; MoTTY X11 proxy: Unsupported authorisati…

【开源项目-爬虫】Firecrawl

看到其他项目引用了这个项目 Firecrawl 用免费额度试了一下&#xff0c;这个项目和之前的 https://r.jina.ai/ 很像&#xff08;类似的还有 https://www.scrapingbee.com/&#xff1f;&#xff09;&#xff0c;将爬取到的网页转换为 markdown 格式&#xff0c;这样大语言模型用…

【已解决】电脑空间告急?我的 Ollama、Docker Desktop软件卸载清理全记录

一、卸载 Ollama、Windows SDK 和 Docker Desktop的原因 最近电脑总提示空间不足&#xff0c;前段时间想本地部署大模型而安装的 Ollama、多个 Windows SDK 以及暂时用不到的 Docker Desktop 占用了不少空间。果断动手卸载&#xff0c;现在把过程整理成博客&#xff0c;分享给同…

便利店商品推荐数字大屏:基于python和streamlit

基于python和streamlit实现的便利店商品推荐大屏&#xff0c;针对选择困难症消费者。 import streamlit as st import pandas as pd import numpy as np import altair as alt from datetime import datetime, timedelta import time# 模拟数据生成 def generate_data():np.ra…

OpenAI智能体初探:使用 OpenAI Responses API 在 PDF 中实现检索增强生成(RAG)

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 欢迎关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 引子 在信息爆炸的时代,从大量 PDF 文档中快速准确地检索信息…

【实战-解决方案】Webpack 打包后很多js方法报错:not defined

问题分析 在不打包的情况下&#xff0c;方法&#xff08;如 checkLoginStatus、filterSites、initProgressBar 等&#xff09;可以正常运行&#xff0c;而经过 Webpack 打包后报 is not defined 错误&#xff0c;通常有以下几个可能的原因&#xff1a; 全局变量丢失 在 Webpac…

【大模型基础_毛玉仁】2.3 基于 Encoder-only 架构的大语言模型

更多内容&#xff1a;XiaoJ的知识星球 目录 2.3 基于Encoder-only 架构的大语言模型2.3.1 Encoder-only 架构2.3.2 BERT 语言模型1&#xff09;BERT 模型结构2&#xff09;BERT 预训练方式3&#xff09;BERT 下游任务 2.3.3 BERT 衍生语言模型1&#xff09;RoBERTa 语言模型2&a…

链表所有节点值的和

class Node:# 节点类&#xff0c;每个节点包含数据(data)和指向下一个节点的引用(next)def __init__(self, data):self.data data # 存储节点的数据self.next None # 指向下一个节点&#xff0c;默认值为None&#xff0c;表示没有下一个节点class LinkedList:# 链表类&…

STM32 F407ZGT6开发板

#ifndef _tftlcd_H #define _tftlcd_H #include "system.h" //定义LCD彩屏的驱动类型 可根据自己手上的彩屏背面型号来选择打开哪种驱动 //#def…

c# txt文档的实时显示,用来查看发送接收指令

通讯历史按钮 private void uiButton1_Click(object sender, EventArgs e){try{logf new logF();logf.Show();}catch (Exception){throw;} }主页面关闭函数&#xff08;点击保存就为true true就不删除&#xff09; private void page1_FormClosed(object sender, FormClos…

Excel 数据转换为SQL语句

文章目录 一、制作公式二、示例图 一、制作公式 1、找一列空白的&#xff0c;选中一个单元格&#xff0c;输入""&#xff0c;在双引号中写入INSERT语句脚本&#xff0c;然后回车。 // 数字代表行数 “INSERT INTO PayList (product, rmb) VALUES (”&A10&“…

SpringMVC (一)基础

目录 SpringMVC 一 简单使用 1 新建模块选择指定参数 2 创建实现类 3 将项目启动 4 运行结果&#xff1a;在浏览器当中响应执行 二 RequestMapping 三 请求限定 SpringMVC SpringMVC是Spring的web模块&#xff0c;用来开发Web应用&#xff0c;SpringMVC应用最终作为B/…

windows第十二章 MFC控件常用消息

文章目录 控件反射消息机制文本框控件EN_CHANGE消息EN_UPDATE消息EN_SETFOCUS消息EN_KILLFOCUS消息EN_MAXTEXT消息EN_ERRSPACE消息EN_HSCROLL消息 按钮控件BN_CLICKED消息BN_DOUBLECLICKED消息BN_SETFOCUS消息BN_KILLFOCUS消息 单选按钮BN_CLICKED 消息 复选框BN_CLICKEDBN_DOU…

基于C语言的简单HTTP Web服务器实现

1. 概述 本案例使用C语言实现了一个简单的HTTP服务器&#xff0c;能够处理客户端的GET请求&#xff0c;并返回静态文件&#xff08;如HTML、图片等&#xff09;。在此案例中案例&#xff0c;我们主要使用的知识点有&#xff1a; Socket编程&#xff1a;基于TCP协议的Socket通信…

ZYNQ初识13(zynq_7020)hdmi和串口板载功能的验证

&#xff08;1&#xff09;另&#xff1a;首先需要确认供电模块&#xff0c;电压转换模块没有问题&#xff0c;测量后上电防止出现短路。通过vivado下载bit流文件检测JTAG下载口是否正常&#xff0c;如可正常检测&#xff0c;才可进行下一步验证。 &#xff08;2&#xff09;以…

ollama下载的DeepSeek的模型(Model)文件在哪里?(C盘下)

目录 一、下载大模型&#xff08;DeepSeek&#xff09; 2. 安装 Ollama 3. 检查安装是否成功 二、拉取大模型&#xff08;DeepSeek&#xff09; 1. 打开命令行 2. 下载模型 3. 测试下载 4. 等待下载完成 三.模型存放路径 这个位置&#xff01;&#xff01; 在人工智能…

docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)

文章目录 前言第一部分&#xff1a;镜像获取&#x1f680; 方式一&#xff1a;切换国内下载镜像✅1. 下载anythingllm✅ 2. 下载open-webui &#x1f680;方式二&#xff1a;下载我分享的百度云✅ anythingllm压缩包百度云链接❎ open-webui压缩包 第二部分&#xff1a;下载之后…

父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法

提示&#xff1a;父组件中循环生成多个子组件时&#xff0c;有且只有最后一个子组件的watch对象生效问题及解决办法 文章目录 [TOC](文章目录) 前言一、问题二、解决方法——使用function函数代替箭头函数()>{}总结 前言 ‌‌‌‌‌问题&#xff1a;子组件用that解决watch无…