CodeGeeX 是一个具有 130 亿参数的多编程语言代码生成预训练模型,采用华为 MindSpore 框架实现,在鹏城实验室“鹏城云脑 II”上使用 1536 个国产昇腾 910 AI 处理器训练而成。CodeGeexX 支持十多种主流编程语言的高精度代码生成、跨语言代码翻译等功能,同时开发自动编程插件,更好的辅助程序开发和相关研究。
特性
-
「高精度代码生成:」支持生成 Python、C++、Java、JavaScript 和 Go 等多种主流编程语言的代码,在 HumanEval-X 代码生成任务上取得 47%~60%求解率,较其他开源基线模型有更佳的平均性能。 -
「跨语言代码翻译:」支持代码片段在不同编程语言间进行自动翻译转换,翻译结果正确率高,在 HumanEval-X 代码翻译任务上超越了其它基线模型。 -
「自动编程插件:」CodeGeeX 插件现已上架 VSCode 插件市场(完全免费),用户可以通过其强大的少样本生成能力,自定义代码生成风格和能力,更好辅助代码编写。 -
「模型跨平台开源:」所有代码和模型权重开源开放,用作研究用途。CodeGeeX 同时支持昇腾和英伟达平台,可在单张 昇腾 910 或 英伟达 V100/A100 上实现推理。
性能
全新多编程语言评测基准 HumanEval-X:HumanEval-X 是第一个支持功能正确性评测的多语言、多任务的基准,包含 820 个人工编写的高质量代码生成题目、测试用例与参考答案,覆盖 5 种编程语言(Python、C++、Java、JavaScript、Go),支持代码生成与代码翻译能力的评测。
使用指南
CodeGeeX 最初使用 Mindspore 框架实现,并在 昇腾 910AI 芯片 上进行训练。为适配更多平台,我们将其转换到 Megatron-LM 框架,支持 Pytorch+GPU 环境。
安装
需要 Python 3.7+ / CUDA 11+ / PyTorch 1.10+ / DeepSpeed 0.6+,通过以下命令安装 codegeex:
git clone git@github.com:THUDM/CodeGeeX.git
cd CodeGeeX
pip install -e .
或者使用CodeGeeX docker
快速搭建环境(安装 nvidia-docker):
docker pull codegeex/codegeex:latest
# To enable GPU support, clarify device ids with --device
docker run --gpus '"device=0,1"' -it --ipc=host --name=codegeex codegeex/codegeex
模型权重
申请权重:https://models.aminer.cn/codegeex/download/request
通过申请权重,您将收到一个包含临时下载链接文件 urls.txt
的邮件。推荐使用 aria2 通过以下命令快速下载(请保证有足够的硬盘空间存放权重(~ 26GB)):
aria2c -x 16 -s 16 -j 4 --continue=true -i urls.txt
使用以下命令合并得到完整的权重:
cat codegeex_13b.tar.gz.part.* > codegeex_13b.tar
tar xvf codegeex_13b.tar.gz
用 GPU 进行推理
尝试使用 CodeGeeX 模型生成第一个程序吧!首先,在配置文件 configs/codegeex_13b.sh 中写明存放权重的路径。其次,将提示(可以是任意描述或代码片段)写入文件 tests/test_prompt.txt ,运行以下脚本即可开始推理(需指定 GPU 序号):
# On a single GPU (with more than 27GB RAM)
bash ./scripts/test_inference.sh <GPU_ID> ./tests/test_prompt.txt
# With quantization (with more than 15GB RAM)
bash ./scripts/test_inference_quantized.sh <GPU_ID> ./tests/test_prompt.txt
# On multiple GPUs (with more than 6GB RAM, need to first convert ckpt to MP_SIZE partitions)
bash ./scripts/convert_ckpt_parallel.sh <LOAD_CKPT_PATH> <SAVE_CKPT_PATH> <MP_SIZE>
bash ./scripts/test_inference_parallel.sh <MP_SIZE> ./tests/test_prompt.txt
生成示例
传送门
开源协议:Apache2.0
开源地址:https://github.com/THUDM/CodeGeeX
项目合集:https://github.com/OpenTechCol/OpenTechCol
「回复【加群】加入开源技术交流群,干货很多!」
-END-
原文始发于微信公众号(开源技术专栏):具有130亿参数的多编程语言代码生成器CodeGeeX
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/145747.html