
CodeGeeX深度解析130亿参数多语言代码生成模型与KDD 2023背后技术全景【免费下载链接】CodeGeeXCodeGeeX: An Open Multilingual Code Generation Model (KDD 2023)项目地址: https://gitcode.com/zai-org/CodeGeeXCodeGeeX是一个130亿参数的开源多语言代码生成模型由智谱AI与清华大学等机构联合研发论文已被顶会 KDD 2023 接收。它支持 Python、C、Java、JavaScript、Go 等 20 多种编程语言既能看描述写代码也能把一段代码自动翻译成另一种语言全部代码与模型权重均已开源。下面从架构原理、国产芯片训练、HumanEval-X 基准、评测结果到本地跑通推理带你完整看懂这个项目 一、CodeGeeX 能做什么两大核心能力 高精度代码生成输入函数声明 自然语言描述文档字符串模型自动补全函数实现。在 HumanEval-X 基准上取得47%~60% 的求解率平均性能超过同规模开源模型。跨语言代码翻译将 Python/C/Java/JS/Go 之间的代码片段自动互译翻译正确率超越基线模型。对普通用户最友好的入口是官方VS Code / JetBrains 插件完全免费支持停下来就自动补全的隐匿模式、多候选交互模式和一键翻译模式详见插件使用指南 vscode-extension/README_zh.md。二、模型架构40层Transformer的自回归解码器CodeGeeX 是一个从左到右生成的自回归解码器把代码或自然语言标识符token作为输入逐个预测下一个标识符的概率分布。核心规格如下参数数值Transformer 层数40 层自注意力隐藏层维度5120前馈层维度20480总参数量130 亿13B最大序列长度2048词表大小50400沿用 GPT-2 分词器模型结构配置可直接在 configs/codegeex_13b.sh 中查看层数、注意力头数、位置编码长度一目了然Torch 版模型实现见 codegeex/torch/codegeex_model.py分词器实现在 codegeex/tokenizer/tokenizer.py。训练数据8500亿 Token、23种语言训练语料由两部分组成开源代码数据集The Pile CodeParrot覆盖 23 种编程语言GitHub 补充爬取数据按≥1 星、10MB、未进入既有数据集等标准筛选仓库并剔除自动生成、行过长、字符多样性不足的文件。为了区分语言每个样本开头会加上# language: Python这类前缀。整个语料总计1587 亿标识符数据清洗逻辑见 codegeex/data/data_utils.py。左侧各语言占比C 28.5%、Python 26.7%、Java 15.98%右侧训练损失随 20 万步持续下降。三、国产芯片训练全景1536颗昇腾910、两个月这是 CodeGeeX 最硬核的标签——全国产训练平台基于华为MindSpore框架实现模型代码位于 codegeex/mindspore/在鹏城实验室鹏城云脑II的1536 颗昇腾910 AI 处理器192 节点上训练约两个月2022.4.18–6.22采用8 路模型并行 192 路数据并行全局批大小 3072配合 ZeRO-2 降低显存FP16 训练后模型约占 27GB 显存。团队与华为合作做了大量算子优化层归一化融合、FastGelu 融合、矩阵乘维度自动搜索调优等使同等卡数下昇腾910 对 CodeGeeX 的训练效率从 A100 的 16.7% 提升至43%千卡规模训练速度较优化前提升近 300%。为了让更多 GPU 用户能用起来官方随后把模型迁移到了Megatron-LM框架PyTorch 版实现在 codegeex/megatron/并提供 codegeex/quantization/quantize.py 量化支持显存从 27GB 降至 15GB。四、HumanEval-X衡量代码能不能跑的新基准 过去评测代码生成模型多用语义相似度如 CodeBLEU写得像不等于跑得对。CodeGeeX 团队因此构建了HumanEval-X——第一个支持功能正确性评测的多语言、多任务基准820 个人工编写的高质量题目每题含声明、描述、参考答案与隐藏测试用例覆盖 Python、C、Java、JavaScript、Go 五种语言支持两大任务代码生成声明描述 → 实现与代码翻译声明源语言实现 → 目标语言实现采用无偏passk指标n200, k∈{1,10,100}判断生成代码是否真正通过测试。红声明、绿描述、蓝解答代码生成与代码翻译任务的输入输出结构一目了然。题目数据存放在 codegeex/benchmark/humaneval-x/ 下如python/data/humaneval_python.jsonl.gz评测环境官方已打包成 Docker 镜像构建文件见 codegeex/docker/Dockerfile完整使用说明在 codegeex/benchmark/README_zh.md。五、实测结果平均性能超越更大参数量模型 5.1 多语言代码生成与 InCoder-6.7B、CodeGen-Multi-6B/16B 对比CodeGeeX-13B平均表现最佳显著超越更小的模型 7.5%~16.3%与参数量更大的 CodeGen-Multi-16B 基本持平54.76% vs 54.39%。雷达图中橙色CodeGeeX-13B在 Python、C、Go、JavaScript 上全面领先或接近领先InCoder-6.7B绿色明显落后。分语言看求解率分布pass1 约 17%~18%pass100 可达 57% 以上五种语言从易到难排列JavaScript → C → Go → Python → JavaCodeGeeX-13B橙色始终领先。5.2 跨语言代码翻译翻译任务中官方对比了未微调的 CodeGeeX-13B 与经微调的 CodeGeeX-13B-FT使用 XLCoST 翻译训练集微调。结果显示模型对目标语言存在偏好CodeGeeX 擅长翻译成 Python 与 C而 CodeGen-Multi-16B 更擅长 JavaScript 和 Go——这与各自训练语料的语言占比差异直接相关。微调后的 CodeGeeX-13B-FT 在 Python→C、Java→Python 等方向上多次拿下最高分加粗值。六、快速上手安装、推理与插件使用指南 6.1 本地安装PyTorch GPU环境要求Python 3.7 / CUDA 11 / PyTorch 1.10 / DeepSpeed 0.6依赖清单见 requirements.txt。git clone https://gitcode.com/zai-org/CodeGeeX cd CodeGeeX pip install -e .模型权重约 26GB需按官方流程申请后下载。6.2 三条推理路径把提示词写入 tests/test_prompt.txt即可按硬件条件选择场景显存需求启动脚本单卡普通推理27GBscripts/test_inference.sh单卡量化推理15GBscripts/test_inference_quantized.sh多卡模型并行每卡 6GBscripts/test_inference_parallel.sh需先用 scripts/convert_ckpt_parallel.sh 切分权重6.3 不想装环境两条更轻的路IDE 插件VS Code 商店搜索 codegeex 即可免费使用JetBrains 系 IDEIntelliJ IDEA、PyCharm、GoLand、CLion 等同样支持API 服务通过官方 API 平台申请 Key 后几行 HTTP 请求即可调用代码生成/翻译接口Python 与 Java 参考示例分别在 api/codegeex-api-example-python/generation_example.py 与 api/codegeex-api-example-java/src/main/java/cn/aminer/codegeex/example/CodeGenerationExample.java申请流程图文见 api/README_zh.md。七、仓库结构速览一份模块地图 ️目录说明codegeex/megatron/PyTorch/Megatron 版训练、推理与微调含 codegeex/megatron/tools/pretrain_codegeex.py、codegeex/megatron/tools/finetune_codegeex.pycodegeex/mindspore/昇腾 910 全国产训练实现与生成脚本codegeex/torch/、codegeex/oneflow/、codegeex/paddle/多框架推理实现Paddle 版含 codegeex/paddle/pt_to_pdparams.py 权重转换codegeex/benchmark/HumanEval-X 数据与生成/评测流水线codegeex/benchmark/generate_humaneval_x.py、codegeex/benchmark/evaluate_humaneval_x.pycodegeex/quantization/INT8 量化显存 27GB → 15GBconfigs/13B 模型配置文件scripts/推理、量化、微调、评测的一键脚本vscode-extension/VS Code 插件说明文档八、写在最后CodeGeeX 的价值不止于一个 130 亿参数模型它证明了全国产算力平台可以训练出国际第一梯队的代码大模型同时贡献了 HumanEval-X 这个以运行结果论英雄的评测标准。无论你是一名想体验 AI 补全的开发者还是研究多语言代码生成的研究者这个仓库都提供了从数据、训练、评测到推理部署的完整链路。小结13B 参数 23 语言预训练 昇腾910 全国产训练 HumanEval-X 功能级评测这正是 CodeGeeX 登上 KDD 2023 的四大支柱。想动手试试最快的路径是装一个 VS Code 插件开始写代码【免费下载链接】CodeGeeXCodeGeeX: An Open Multilingual Code Generation Model (KDD 2023)项目地址: https://gitcode.com/zai-org/CodeGeeX创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考