CodeGeeX
130亿参数多语言代码生成模型,支持13种语言互译,配套VS Code/JetBrains免费插件,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
130亿参数多语言代码生成模型,支持13种语言互译,配套VS Code/JetBrains免费插件,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你苦于在不同编程语言之间手动翻译代码时,CodeGeeX 或许能成为你的得力助手。这个由清华大学NLP实验室(THUDM)孵化的开源项目,是一个拥有 130亿参数 的大规模多语言代码生成模型,于2023年被国际数据挖掘顶会 KDD 接收。它的核心能力是:只需输入一段自然语言描述或代码片段,就能自动生成对应语言的可执行程序,或将代码在 Python、C++、Java、JavaScript、Go 等主流语言之间相互翻译。
CodeGeeX 的诞生,源于一个朴素的观察——软件开发中,跨语言迁移代码是一个耗时且容易出错的工作。当团队需要将 Python 原型迁移到 Java 生产环境,或将遗留 C++ 系统迁移到 Go 时,开发者往往需要逐行翻译,既要理解原逻辑,又要遵循目标语言的语法规范。
为了解决这个问题,清华大学 NLP 实验室(THUDM)训练了一个基于 Transformer 架构的大规模预训练模型。项目最初在华为 Ascend 910 AI 处理器集群(1536卡)上训练超过 8500 亿个 Token,后又基于 NVIDIA Megatron-LM 框架实现了 PyTorch 兼容版本,使得更多研究者可以在 GPU 环境下使用。
CodeGeeX 的名字本身就是一个多语言翻译的隐喻——"Code Geeks"(程序员)的谐音,寓意帮助程序员跨越语言障碍。
图1:CodeGeeX 项目 Logo
项目在 2022 年 9 月开源后,迅速获得开发者社区关注,目前已在 GitHub 斩获超过 8700 颗星,并在 VS Code 和 JetBrains 全家桶(IntelliJ IDEA、Pycharm、GoLand 等十余款 IDE)中提供免费插件,让 AI 辅助编程触手可及。
CodeGeeX 采用了标准的 Transformer 解码器架构,具体配置为:
这一规模在 2022 年的代码生成模型中属于第一梯队,与当时 OpenAI 的 Codex(120亿参数)规模相当。
CodeGeeX 的训练语料来自两个主要渠道:
为了帮助模型区分不同语言,每个代码片段开头都添加了语言标记(如 # language: Python)。
图2:训练语料中各编程语言占比及训练损失曲线
量化推理:CodeGeeX 支持 INT8 权重量化,将显存需求从 27GB 降低到 15GB,使得在消费级显卡(如 RTX 3090)上运行成为可能。官方数据显示,INT8 加速版本平均推理速度低于 15ms/Token。
多卡并行:通过将模型参数分区到多张 GPU 上,可以将单卡显存需求降低到 6GB 以下,支持在多卡环境下运行。
多后端支持:原生支持华为 Ascend 910 和 NVIDIA V100/A100 两类硬件,后又集成 OneFlow 和 FasterTransformer 推理后端,进一步提升推理效率。
CodeGeeX 提供了四大核心功能,覆盖了开发者日常工作的多个场景:
用户只需用自然语言描述想要实现的功能,CodeGeeX 就能生成对应语言的代码。例如输入"实现一个快速排序算法",模型可以输出 Python、C++、Java 等多种语言的实现。相比单一语言模型,CodeGeeX 在生成前会自动添加语言标记,确保输出代码符合目标语言的语法规范。
这是 CodeGeeX 最具差异化的功能。只需一键点击,就能将一段 Python 代码翻译为 Java,或将 JavaScript 翻译为 Go,翻译准确率在 HumanEval-X 基准测试中表现优异。
图3:CodeGeeX 多语言代码生成与翻译示例
CodeGeeX 在 VS Code 和 JetBrains 全家桶中提供免费插件,支持代码补全、代码解释、代码摘要等功能。以 VS Code 为例,安装插件后,在编辑器中写注释或部分代码,CodeGeeX 会自动预测并补全后续代码。插件还支持多语言互译——选中一段代码,点击翻译按钮,选择目标语言,即可获得翻译结果。
为了推动多语言代码生成的研究,团队还发布了 HumanEval-X 基准测试集,包含 820 道人工设计的编程题,覆盖 Python、C++、Java、JavaScript、Go 五种语言,每道题配有单元测试和参考解答。这一基准已被 HuggingFace 数据集仓库收录,成为评估多语言代码模型的重要工具。
图4:跨语言代码翻译效果示意
如果只是想体验效果,可以访问官方在线 Demo(models.aminer.cn/codegeex)直接试用,无需安装任何依赖。这种方式适合快速了解模型能力,但受限于服务器资源,响应速度可能较慢。
安装 VS Code 或 JetBrains 插件是最高频的使用方式。通过 VS Code Marketplace 搜索 "codegeex" 即可一键安装,登录后即可使用代码补全和翻译功能。这种方式不需要本地 GPU,所有推理在云端完成,体验流畅。
如果对隐私有要求或需要更高定制化,可以本地部署。官方提供两种路径:
pip install -e .,然后配置模型权重路径和 GPU 参数,通过脚本推理docker pull codegeex/codegeex:latest,配合 nvidia-docker 启动容器本地部署的核心门槛是 GPU:未经量化需要单卡 27GB 显存(V100/A100),量化后可降至 15GB。此外,模型权重需要通过官网申请下载(约 26GB),无法直接通过 HuggingFace 下载。
官方提供了 Python 和 Java 的 API 调用示例,开发者可以将其集成到自己的产品中,构建定制化的代码辅助功能。
尽管 CodeGeeX 在多语言代码生成方面有独特优势,但它也存在一些客观局限:
模型权重获取不便:CodeGeeX 的模型权重并非直接开源,而是需要通过官网表单申请,审核通过后通过邮件发送下载链接(包含临时下载 URL)。这一流程增加了使用门槛,用户无法像使用 StarCoder 或 CodeLlama 那样直接从 HuggingFace 下载。相比之下,2023年发布的 CodeGeeX2 已将权重上传至 HuggingFace,使用更便捷。
功能被后续项目超越:CodeGeeX 发布于 2022 年,其后的 CodeGeeX2(2023)、CodeGeeX4 等后续版本在功能上有显著增强。当前仓库的主分支仍停留在 CodeGeeX1,代码生成质量与最新模型存在差距。对于新用户,直接使用 CodeGeeX4 可能是更好的选择。
特定领域代码生成质量有限:对于非常专业的领域(如嵌入式系统、特定框架的底层实现),CodeGeeX 生成的代码可能存在逻辑错误或不符合最佳实践的情况,仍需人工审核。
商业许可证限制:CodeGeeX 的模型权重采用自定义许可(MODEL_LICENSE),并非标准的 Apache 2.0 或 MIT 许可证,商业使用前需仔细阅读许可条款。
CodeGeeX 的价值不仅在于它是一个可用的工具,更在于它代表了一种研究路径——通过大规模预训练实现多语言代码生成与翻译。
从学术角度看,CodeGeeX 提出了 HumanEval-X 基准,推动了多语言代码生成评估的标准化。其论文被 KDD 2023 接收,也说明了大模型在软件工程领域的研究获得了顶级学术会议的认可。
从生态角度看,CodeGeeX 的插件矩阵(VS Code + 十余款 JetBrains IDE)让它触达了数百万开发者。相比纯研究项目,这种「论文 + 开源 + 产品化」的路径更具影响力。CodeGeeX2、CodeGeeX4 的持续迭代,也证明了这是一个有生命力的项目。
对于 AI 开发者而言,CodeGeeX 展示了如何在有限算力(1536 Ascend 卡)下训练大规模代码模型,以及如何通过量化、并行等技术在消费级硬件上部署。其代码仓库中关于 Megatron-LM 和 DeepSpeed 的实践,对于想训练自己代码模型的研究者具有重要参考价值。
一句话评价:CodeGeeX 是最早一批开源的大规模多语言代码生成模型之一,虽然被后续版本超越,但其多语言翻译能力和插件生态仍有独特价值,适合对跨语言代码迁移有需求的开发者。
推荐场景:
不推荐场景:
项目地址:https://github.com/zai-org/CodeGeeX 官方网站:https://codegeex.cn KDD 2023 论文:https://arxiv.org/abs/2303.17568