aiXcoder-7B: A Lightweight and Effective Large Language Model for Code Processing
作者: Siyuan Jiang, Jia Li, He Zong, Huanyu Liu, Hao Zhu, Shukai Hu, Erlu Li, Jiazheng Ding, Yu Han, Wei Ning, Gen Wang, Yihong Dong, Kechi Zhang, Ge Li
分类: cs.CL, cs.AI, cs.SE
发布日期: 2024-10-17 (更新: 2025-01-16)
备注: (1) Accepted by the 47th International Conference on Software Engineering (ICSE 2025). (2) aiXcoder-7B is available at https://github.com/aixcoder-plugin/aiXcoder-7B
💡 一句话要点
提出轻量高效的代码大语言模型aiXcoder-7B,提升代码补全精度与效率。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码补全 大语言模型 多目标训练 结构化中间填充 代码生成 轻量级模型 数据采样
📋 核心要点
- 现有代码大语言模型通常通过扩大模型规模来提升精度,但同时也降低了推理效率,影响开发者体验。
- aiXcoder-7B通过多目标训练、多样化数据采样和海量高质量数据,在70亿参数规模下实现了更高的代码补全精度。
- 实验结果表明,aiXcoder-7B在多个基准测试中优于同等规模的模型,甚至超越了更大的模型,具有显著优势。
📝 摘要(中文)
本文提出了一种轻量且高效的代码补全大语言模型aiXcoder-7B。相较于现有的大语言模型,aiXcoder-7B在更小的规模(70亿参数)下实现了更高的代码补全精度。这归功于三个关键因素:(1) 多目标训练,其中包含提出的结构化中间填充(SFIM)目标,SFIM考虑了代码的语法结构,有效提升了模型性能。(2) 多样化的数据采样策略,考虑了文件间的关系,增强了模型理解跨文件上下文的能力。(3) 大量高质量数据,建立了严格的数据收集流程,并消耗了总计1.2万亿的唯一token进行训练,使aiXcoder-7B能够学习广泛的代码分布。在五个流行的代码补全基准测试和一个新基准测试中评估了aiXcoder-7B,结果表明其优于最新的六个同等规模的大语言模型,甚至超过了四个更大的模型(如StarCoder2-15B和CodeLlama-34B),使其成为学术界和工业界轻量高效的大语言模型。最后,总结了三个有价值的见解,以帮助从业者训练下一代代码大语言模型。aiXcoder-7B已开源并受到广泛关注,截至2025年1月,已获得2226个GitHub Stars。
🔬 方法详解
问题定义:现有代码大语言模型为了提升代码补全的准确率,通常采用扩大模型规模的方式。然而,模型规模的增大导致推理效率降低,影响了开发者的使用体验和生产力。因此,如何在保证代码补全精度的前提下,降低模型规模,提升推理效率,是一个亟待解决的问题。
核心思路:本文的核心思路是通过多目标训练、多样化的数据采样策略以及使用大量高质量的数据来训练一个轻量级但高效的代码大语言模型。通过结构化的中间填充(SFIM)目标,使模型能够更好地理解代码的语法结构,从而提升代码补全的准确性。多样化的数据采样策略则增强了模型对跨文件上下文的理解能力。
技术框架:aiXcoder-7B的训练流程主要包括数据收集与清洗、多目标训练和模型评估三个阶段。首先,通过严格的数据收集流程,收集并清洗了大量高质量的代码数据。然后,采用多目标训练策略,包括传统的语言建模目标和提出的SFIM目标,对模型进行训练。最后,在多个代码补全基准测试中对模型进行评估,验证其性能。
关键创新:本文最重要的技术创新点在于提出了结构化的中间填充(SFIM)训练目标。与传统的中间填充方法不同,SFIM考虑了代码的语法结构,能够更好地引导模型学习代码的语义信息。这种方法能够显著提升模型在代码补全任务中的性能。
关键设计:在多目标训练中,SFIM损失函数的设计至关重要,它需要能够有效地衡量模型生成的代码与真实代码之间的差异,同时考虑代码的语法结构。此外,数据采样策略也需要精心设计,以保证模型能够学习到不同类型的代码模式和跨文件上下文信息。具体的参数设置和网络结构细节在论文中未详细说明,属于未知信息。
🖼️ 关键图片
📊 实验亮点
aiXcoder-7B在五个流行的代码补全基准测试和一个新基准测试中进行了评估,结果表明其性能优于最新的六个同等规模的大语言模型,甚至超过了四个更大的模型,例如StarCoder2-15B和CodeLlama-34B。这表明aiXcoder-7B在代码补全任务中具有显著的优势。
🎯 应用场景
aiXcoder-7B可应用于代码自动补全、代码生成、代码搜索等多种场景,能够有效提升开发者的编码效率和代码质量。其轻量级的特点使其易于部署和使用,具有广泛的应用前景,尤其是在资源受限的环境下,例如移动端代码编辑器。
📄 摘要(原文)
Large Language Models (LLMs) have been widely used in code completion, and researchers are focusing on scaling up LLMs to improve their accuracy. However, larger LLMs have lower inference efficiency, affecting developers' experience and productivity. In this paper, we propose a lightweight and effective LLM for code completion named aiXcoder-7B. Compared to existing LLMs, aiXcoder-7B achieves higher code completion accuracy while having smaller scales (i.e., 7 billion parameters). We attribute the superiority of aiXcoder-7B to three key factors: (1) Multi-objective training. We employ three training objectives, one of which is our proposed Structured Fill-In-the-Middle (SFIM). SFIM considers the syntax structures in code and effectively improves the performance of LLMs for code. (2) Diverse data sampling strategies. They consider inter-file relationships and enhance the capability of LLMs in understanding cross-file contexts. (3) Extensive high-quality data. We establish a rigorous data collection pipeline and consume a total of 1.2 trillion unique tokens for training aiXcoder-7B. This vast volume of data enables aiXcoder-7B to learn a broad distribution of code. We evaluate aiXcoder-7B in five popular code completion benchmarks and a new benchmark collected by this paper. The results show that aiXcoder-7B outperforms the latest six LLMs with similar sizes and even surpasses four larger LLMs (e.g., StarCoder2-15B and CodeLlama-34B), positioning aiXcoder-7B as a lightweight and effective LLM for academia and industry. Finally, we summarize three valuable insights for helping practitioners train the next generations of LLMs for code. aiXcoder-7B has been open-souced and gained significant attention. Until January 2025, aiXcoder-7B has received 2,226 GitHub Stars.