前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多编程语言代码生成神器 CodeGeeX,编码效率提升十倍!

多编程语言代码生成神器 CodeGeeX,编码效率提升十倍!

作者头像
一行Java
发布2023-09-04 14:13:23
5920
发布2023-09-04 14:13:23
举报
文章被收录于专栏:用户9257747的专栏

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:

代码语言:javascript
复制
git clone git@github.com:THUDM/CodeGeeX.git
cd CodeGeeX
pip install -e 

模型权重

申请权重:https://models.aminer.cn/codegeex/download/request

通过申请权重,您将收到一个包含临时下载链接文件 urls.txt 的邮件。推荐使用 aria2 通过以下命令快速下载(请保证有足够的硬盘空间存放权重(~ 26GB)):

代码语言:javascript
复制
aria2c -x 16 -s 16 -j 4 --continue=true -i urls.txt

使用以下命令合并得到完整的权重:

代码语言:javascript
复制
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 序号):

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一行Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特性
    • 高精度代码生成
      • 跨语言代码翻译
        • 自动编程插件
          • 模型跨平台开源
          • 性能
          • 使用指南
            • 安装
              • 模型权重
                • 用 GPU 进行推理
                • 功能
                  • 隐匿模式
                    • 交互模式
                      • 翻译模式
                        • 提示模式(实验功能)
                        • 开源地址
                        相关产品与服务
                        GPU 云服务器
                        GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档