⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 github.com/THUDM/CodeGeeX 「网络」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

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

模型权重
  • 申请权重: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 序号):

bash ./scripts/test_inference.sh <GPU_ID> ./tests/test_prompt.txt

功能

隐匿模式

在该模式中,CodeGeeX将在您停止输入时,从光标处开始生成(右下角CodeGeeX图标转圈表示正在生成)。生成完毕之后会以灰色显示,按Tab即可插入生成结果。在生成多个候选的情况下,可以使用Alt/Option+[ 或 ]在几个候选间进行切换。

如果你对现有建议不满意,可以使用Alt/Option+N去获得新的候选。可以在设置中改变Candidate Num(增加个数会导致生成速度相对变慢)。

注意:生成总是从当前光标位置开始,如果您在生成结束前移动光标位置,可能会导致一些bugs。我们正在努力使生成速度变得更快以提升用户体验。

交互模式

在该模式中,按Ctrl+Enter激活交互模式,CodeGeeX将生成X个候选,并显示在右侧窗口中(X 数量可以在设置的Candidate Num中修改)。

点击候选代码上方的use code即可插入结果到为当前光标位置。

翻译模式

在当前的语言的文本编辑器中输入或者粘贴其他语言的代码,您用鼠标选择这些代码,然后按下Ctrl+Alt+T激活翻译模式,您根据提示选择该代码的语言,然后CodeGeeX会帮您把该代码翻译成匹配您当前编辑器语言的代码。

点击翻译结果上方的use code即可插入。您还可以在设置中选择您希望插入的时候如何处理被翻译的代码,您可以选择注释它们或者覆盖它们。

提示模式(实验功能)

在该模式中,您可以在输入中添加额外的提示来实现一些有趣的功能,包括并不限于代码解释、概括、以特定风格生成等。该模式的原理是利用了CodeGeeX强大的少样本生成能力。当您在输入中提供一些例子时,CodeGeeX会模仿这些例子并实现相应的功能。

比如,您可以自定义模板中提供一段逐行解释代码的例子。选择您想要解释的代码,按Alt/Option+t触发提示模式,选择您写好的模板(如explanation),CodeGeeX就会解释您输入的代码。以下我们会详细介绍如何制作模板。

开源地址

  • https://github.com/THUDM/CodeGeeX
文章目录
  1. 1. 特性
    1. 1.0.0.0.1. 高精度代码生成
    2. 1.0.0.0.2. 跨语言代码翻译
    3. 1.0.0.0.3. 自动编程插件
    4. 1.0.0.0.4. 模型跨平台开源
  • 2. 性能
  • 3. 使用指南
    1. 3.0.0.0.1. 安装
    2. 3.0.0.0.2. 模型权重
    3. 3.0.0.0.3. 用 GPU 进行推理
  • 4. 功能
    1. 4.0.0.0.1. 隐匿模式
    2. 4.0.0.0.2. 交互模式
    3. 4.0.0.0.3. 翻译模式
    4. 4.0.0.0.4. 提示模式(实验功能)
  • 4.0.1. 开源地址