CodeGeeX2 更强大的多语言代码生成模型开源项目

我要开发同款
白开水不加糖2023年07月25日
79阅读
开发技术PythonSHELL
所属分类LLM(大语言模型)、人工智能
授权协议Apache-2.0

作品详情

CodeGeeX2是多语言代码生成模型 CodeGeeX (KDD’23)的第二代模型。不同于一代CodeGeeX(完全在国产华为昇腾芯片平台训练),CodeGeeX2是基于 ChatGLM2 架构注入代码实现,得益于ChatGLM2的更优性能,CodeGeeX2在多项指标上取得性能提升(+107%>CodeGeeX;仅60亿参数即超过150亿参数的StarCoder-15B近10%),更多特性包括:

更强大的代码能力:基于ChatGLM2-6B基座语言模型,CodeGeeX2-6B进一步经过了600B代码数据预训练,相比一代模型,在代码能力上全面提升,HumanEval-X 评测集的六种编程语言均大幅提升(Python+57%,C+++71%,Java+54%,JavaScript+83%,Go+56%,Rust+321%),在Python上达到35.9%的Pass@1一次通过率,超越规模更大的StarCoder-15B。更优秀的模型特性:继承ChatGLM2-6B模型特性,CodeGeeX2-6B更好支持中英文输入,支持最大8192序列长度,推理速度较一代CodeGeeX-13B大幅提升,量化后仅需6GB显存即可运行,支持轻量级本地化部署。更全面的AI编程助手:CodeGeeX插件(VSCode, Jetbrains)后端升级,支持超过100种编程语言,新增上下文补全、跨文件补全等实用功能。结合AskCodeGeeX交互式AI编程助手,支持中英文对话解决各种编程问题,包括且不限于代码解释、代码翻译、代码纠错、文档生成等,帮助程序员更高效开发。更开放的协议:CodeGeeX2-6B权重对学术研究完全开放,填写问卷申请商业使用。AI编程助手

开发了支持VSCode、IntelliJIDEA、PyCharm、GoLand、WebStorm、AndroidStudio等IDE的CodeGeeX插件。在插件中,可以更直接地体验到CodeGeeX2模型在代码生成与补全、添加注释、代码翻译及技术问答方面的能力为开发效率带来的提升。详情见CodeGeeX主页。

快速开始使用transformers快速调用CodeGeeX2-6B:

fromtransformersimportAutoTokenizer,AutoModeltokenizer=AutoTokenizer.from_pretrained("THUDM/codegeex2-6b",trust_remote_code=True)model=AutoModel.from_pretrained("THUDM/codegeex2-6b",trust_remote_code=True,device='cuda')model=model.eval()#rememberaddingalanguagetagforbetterperformanceprompt="#language:python\n#writeabubblesortfunction\n"inputs=tokenizer.encode(prompt,return_tensors="pt").to(model.device)outputs=model.generate(inputs,max_length=256,top_k=1)response=tokenizer.decode(outputs[0])>>>print(response)#language:python#writeabubblesortfunctiondefbubble_sort(list):foriinrange(len(list)-1):forjinrange(len(list)-1):iflist[j]>list[j+1]:list[j],list[j+1]=list[j+1],list[j]returnlistprint(bubble_sort([5,2,4,6,1,3]))代码能力评测CodeGeeX2作为一个多语言代码生成基座模型,代码能力较上一代大幅提升,以下是在HumanEval,HumanEval-X,DS1000基准上的评测结果(评价指标Pass@k定义与论文中一致):

HumanEval(Pass@1,10,100)ModelPass@1Pass@10Pass@100CodeGen-16B-multi19.234.655.2CodeGeeX-13B22.939.660.9Codex-12B28.846.872.3CodeT5Plus-16B-mono30.951.676.7Code-Cushman-00133.554.377.4LLaMA-65B23.7-79.3LLaMA2-70B29.9--CodeGen2.5-7B-mono33.458.482.7StarCoder-15B33.261.084.7CodeGeeX2-6B35.962.688.3

Pass@1 使用 n=20,t=0.2,top_p=0.95;Pass@10,Pass@100 使用 n=200,t=0.8,top_p=0.95。

HumanEval-X(Pass@1)ModelPythonC++JavaJavaScriptGoRustOverallCodeGen-16B-multi19.218.115.018.413.01.814.2CodeGeeX-13B22.917.120.017.614.44.316.0Replit-code-v1-3B22.020.120.120.112.28.617.2CodeGen2.5-7B-multi30.624.329.027.518.920.125.1StarCoder-15B35.528.231.533.221.317.827.9CodeGeeX2-6B35.929.330.832.222.518.128.1

Pass@1 使用 n=20,t=0.2,top_p=0.95。

以上结果可使用脚本scripts/run_humanevalx.sh复现。环境配置和说明参见评测环境。

DS1000(Pass@1)ModelMatplotlibNumpyPandasPytorchSciPyScikit-learnTensorFlowOverall#Samples15522029168106115451000CodeGen-16B-Mono31.710.93.47.09.010.815.211.7code-cushman-00140.721.87.912.411.318.012.218.1Codex-00141.826.69.49.715.018.517.220.2CodeGeeX2-6B40.525.514.517.319.324.023.023.1StarCoder-15B51.729.711.421.420.229.524.526.0Codex-00257.043.126.541.831.844.839.339.2

Pass@1 使用 n=40,t=0.2,top_p=0.5。

以上结果可使用DS1000评测代码复现。

量化推理性能CodeGeeX2与上一代相比,对部署更加友好。得益于使用Multi-QueryAttention和FlashAttention,推理速度更快,且量化后仅需6GB显存即可运行:

量化ModelFP16/BF16INT8INT4CodeGeeX-13B26.9GB14.7GB-CodeGeeX2-6B13.1GB8.2GB5.5GB

基于PyTorch2.0测试,利用torch.nn.functional.scaled_dot_product_attention实现高效的Attention计算。

推理Model推理速度(字符/秒)CodeGeeX-13B32CodeGeeX2-6B94

batch_size=1,max_length=2048,均使用加速框架,测试硬件为GeForceRTX-3090。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论