CodeGeeX多語言代碼生成模型
CodeGeeX是一個具有130億參數(shù)的多編程語言代碼生成預訓練模型。CodeGeeX采用華為MindSpore框架實現(xiàn),在鵬城實驗室“鵬城云腦II”中的192個節(jié)點(共1536個國產(chǎn)昇騰910 AI處理器)上訓練而成。
截至2022年6月22日,CodeGeeX 在20多種編程語言的代碼語料庫(>8500億Token)上預訓練得到。
CodeGeeX有以下特點:
- 高精度代碼生成:支持生成Python、C++、Java、JavaScript和Go等多種主流編程語言的代碼,在HumanEval-X代碼生成任務上取得47%~60%求解率,較其他開源基線模型有更佳的平均性能。代碼生成示例
- 跨語言代碼翻譯:支持代碼片段在不同編程語言間進行自動翻譯轉(zhuǎn)換,翻譯結(jié)果正確率高,在HumanEval-X代碼翻譯任務上超越了其它基線模型。代碼翻譯示例
- 自動編程插件:CodeGeeX插件現(xiàn)已上架VSCode插件市場(完全免費),用戶可以通過其強大的少樣本生成能力,自定義代碼生成風格和能力,更好輔助代碼編寫。插件下載
- 模型跨平臺開源: 所有代碼和模型權(quán)重開源開放,用作研究用途。CodeGeeX同時支持昇騰和英偉達平臺,可在單張昇騰910或英偉達V100/A100上實現(xiàn)推理。申請模型權(quán)重
全新多編程語言評測基準HumanEval-X:HumanEval-X是第一個支持功能正確性評測的多語言、多任務的基準,包含820個人工編寫的高質(zhì)量代碼生成題目、測試用例與參考答案,覆蓋5種編程語言(Python、C++、Java、JavaScript、Go),支持代碼生成與代碼翻譯能力的評測。如何使用
在HumanEval-X代碼生成任務上,與其它開源基線模型相比,CodeGeeX取得了最佳的平均性能。
使用指南
CodeGeeX最初使用Mindspore框架實現(xiàn),并在昇騰910AI芯片上進行訓練。為適配更多平臺,官方將其轉(zhuǎn)換到Megatron-LM框架,支持Pytorch+GPU環(huán)境。
安裝
需要Python 3.7+ / CUDA 11+ / PyTorch 1.10+ / DeepSpeed 0.6+,通過以下命令安裝 codegeex:
git clone [email protected]:THUDM/CodeGeeX.git cd CodeGeeX pip install -e .
模型權(quán)重
通過該鏈接申請權(quán)重,您將收到一個包含臨時下載鏈接文件urls.txt的郵件。推薦使用aria2通過以下命令快速下載(請保證有足夠的硬盤空間存放權(quán)重(~26GB)):
aria2c -x 16 -s 16 -j 4 --continue=true -i urls.txt
使用以下命令合并得到完整的權(quán)重:
cat codegeex_13b.tar.gz.part.* > codegeex_13b.tar tar xvf codegeex_13b.tar.gz
用GPU進行推理
嘗試使用CodeGeeX模型生成第一個程序吧!首先,在配置文件configs/codegeex_13b.sh中寫明存放權(quán)重的路徑。其次,將提示(可以是任意描述或代碼片段)寫入文件tests/test_prompt.txt,運行以下腳本即可開始推理(需指定GPU序號):
bash ./scripts/test_inference.sh <GPU_ID> ./tests/test_prompt.txt
VS Code插件使用指南
基于CodeGeeX 開發(fā)了一款免費的VS Code插件,在應用市場搜索“codegeex”或通過該鏈接安裝。詳細的使用指南在CodeGeeX插件使用指南.
左側(cè):CodeGeeX訓練數(shù)據(jù)中各編程語言占比。 右側(cè):CodeGeeX訓練損失函數(shù)隨訓練步數(shù)下降曲線。
