开发了支持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.3Pass@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.1Pass@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.2Pass@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-6B94batch_size=1,max_length=2048,均使用加速框架,测试硬件为GeForceRTX-3090。
评论