Project report / GitHub evidence

CodeGeeX2 — 多语言代码生成大模型

这是可索引项目报告证据页:它保留 CodeGeeX2 — 多语言代码生成大模型 的源材料入口、机制线索和限制提醒;正文仍需 reader/editor 与 academic public-copy review 后才能当作最终结论引用。

CodeGeeX2 — 多语言代码生成大模型

基本信息

字段内容
GitHubhttps://github.com/THUDM/CodeGeeX2
Stars8,000+
主要语言Python
许可证Apache-2.0(代码)/ Model License(模型权重)
开发者清华大学 KEG 实验室 / THUDM

项目简介

CodeGeeX2 是清华大学知识工程实验室(KEG)开发的多语言代码生成大模型 CodeGeeX 的第二代版本。它基于 ChatGLM2-6B 架构进行代码预训练,支持 100+ 编程语言的代码生成、补全、翻译和注释,并提供中英双语提示词交互能力。CodeGeeX 系列是学术界最具影响力的开源代码大模型之一,其原始论文发表于 KDD 2023。

CodeGeeX2-6B 作为第二代模型,在代码生成准确率和多语言支持方面报告了相对第一代(13B 参数)的提升。通过引入 ChatGLM2 的架构优化和筛选后的代码训练数据,CodeGeeX2 以更小的参数量展示了新的性能/规模取舍。项目还提供 VS Code 和 JetBrains IDE 插件,可直接在开发环境中使用模型的代码辅助能力。

目录结构

CodeGeeX2/
├── inference/               # 推理代码
│   ├── clique_inference.py  # 模型推理入口
│   └── quantization.py      # 量化推理支持
├── demo/                    # 演示应用
├── evaluation/              # 评估脚本(HumanEval-X 等)
├── quantize/                # 模型量化工具
├── README.md                # 中文文档
├── README_EN.md             # 英文文档
└── requirements.txt         # 依赖清单

核心模块分析

1. 代码生成推理引擎

CodeGeeX2 的推理模块支持多种推理后端,包括原生 PyTorch 和量化推理。模型支持 8192 token 的最大序列长度,可处理较长的代码上下文。推理引擎还集成了 INT4/INT8 量化支持,使 6B 参数模型可在消费级 GPU 上高效运行。推理模块提供统一的 API 接口,支持代码补全、代码翻译和代码注释等多种生成模式。

2. 多语言评估体系(HumanEval-X)

CodeGeeX 项目构建了 HumanEval-X 多语言代码评估基准,将 OpenAI 的 HumanEval 扩展至 5 种编程语言(Python、C++、Java、JavaScript、Go),包含测试用例和参考解答。这一评估体系已成为代码大模型多语言能力的标准测试基准之一。CodeGeeX2 在该基准上展现了优异的跨语言代码生成能力,特别是在中文提示词场景下表现突出。

3. IDE 集成插件

CodeGeeX2 提供了 VS Code 和 JetBrains 系列的 IDE 插件,实现”Ask CodeGeeX”交互式编程助手功能。插件支持实时代码补全、自然语言描述生成代码、代码翻译和代码解释等功能。通过将大模型能力嵌入开发者的日常工作流,CodeGeeX2 实现了从研究到产品化的闭环,目前已有数百万用户。

技术亮点

与 Self-Evolve 关联

CodeGeeX2 与 Self-Evolve 研究的关联体现在”AI 生成代码”这一核心能力上。Self-Evolve 的关键假设是 AI 系统能够通过代码自我改写和自我优化来实现进化,而 CodeGeeX2 所代表的多语言代码生成模型正是这一过程的基础设施。

具体而言:第一,CodeGeeX2 的多语言代码生成能力为 Self-Evolve 系统提供了”代码变异”的工具——系统可以生成不同风格的代码实现,作为进化过程中的候选个体。第二,CodeGeeX2 的代码翻译能力展示了 AI 跨语言理解代码语义的能力,这意味着 Self-Evolve 系统可以在不同编程范式之间迁移解决方案。第三,HumanEval-X 评估体系为 Self-Evolve 提供了”适应度函数”的设计参考——通过自动化测试来评估生成代码的质量。第四,CodeGeeX 系列从 v1 到 v2 到 v4 的迭代演进本身,就是一个”模型自我进化”的案例——后一代模型利用前一代模型产生的数据和技术积累来提升自身。

参考资料