- 大模型
- 代码模型
- 基础模型
【免费下载链接】CodeGeeX2
CodeGeeX2: A More Powerful Multilingual Code Generation Model
CodeGeeX2 是智谱 AI 开源的多语言代码生成基座模型(第二代 CodeGeeX),以 60 亿参数在 HumanEval 上取得 35.9% 的 Pass@1,并支持 CPU、GPU、多卡、Mac、fastllm 与 ChatGLM.cpp 等多种推理路径。本文以仓库根目录 README.md 为主体,结合 docs/zh/inference_zh.md 推理教程与demo/、evaluation/、scripts/源码,系统讲解模型能力、transformers 快速调用、Gradio/FastAPI 服务部署、多精度与量化推理、多 GPU/Mac/fastllm/ChatGLM.cpp 加速方案,以及 HumanEval-X 评测的复现方法,读完即可在自己的环境中完成从零部署到推理服务上线再到评测验证的全流程。
一、模型概述:基于 ChatGLM2 架构的第二代代码生成基座
CodeGeeX2 是多语言代码生成模型 CodeGeeX(KDD'23)的第二代模型。与完全在国产华为昇腾芯片平台训练的一代 CodeGeeX 不同,CodeGeeX2 基于 ChatGLM2-6B 架构,通过加入代码预训练实现,得益于 ChatGLM2 的更优性能,在多项指标上取得显著提升(较 CodeGeeX 提升 +107%;仅 60 亿参数即超过 150 亿参数的 StarCoder-15B 近 10%)。
1.1 核心特性
- 更强大的代码能力:基于 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 插件(VS Code、JetBrains)后端升级,支持超过 100 种编程语言,新增上下文补全、跨文件补全等实用功能;结合 Ask CodeGeeX 交互式 AI 编程助手,支持中英文对话解决各种编程问题,包括且不限于代码解释、代码翻译、代码纠错、文档生成等。
- 更开放的协议:CodeGeeX2-6B 权重对学术研究完全开放,填写登记表申请商业使用。
从仓库文件结构可以看到,项目围绕"调用—服务—评测"三条主线组织:demo/ 提供 Gradio 交互式 DEMO(run_demo.py)与 FastAPI 服务(fastapicpu.py)及多卡加载工具(gpus.py);evaluation/ 提供生成(generation.py)、执行(execution.py)、评估(evaluation.py)与结果检查(inspect_jsonl.py)的完整评测链路;benchmark/humanevalx/ 存放六种语言的评测数据。
二、快速开始:使用 transformers 直接调用
2.1 环境准备
下载本仓库并使用 pip 安装环境依赖:
git clone https://gitcode.com/zai-org/CodeGeeX2 cd CodeGeeX2 pip install -r requirements.txtrequirements.txt 中的核心依赖包括:transformers>=4.30.2(远程代码加载需要trust_remote_code=True)、torch>=2.0、accelerate(多卡 dispatch 依赖)、sentencepiece(分词器)、cpm_kernels、gradio(DEMO 界面)与protobuf。
2.2 最小调用示例
使用transformers快速调用 CodeGeeX2-6B,首次运行将自动从 Hugging Face 下载权重:
from transformers import AutoTokenizer, AutoModel tokenizer = 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() # remember adding a language tag for better performance prompt = "# language: Python\n# write a bubble sort function\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 # write a bubble sort function def bubble_sort(list): for i in range(len(list) - 1): for j in range(len(list) - 1): if list[j] > list[j + 1]: list[j], list[j + 1] = list[j + 1], list[j] return list print(bubble_sort([5, 2, 1, 8, 4]))示例中使用 greedy decoding(top_k=1),便于检查输出结果是否对齐。若使用 CPU 推理,将device参数改为'cpu'即可。
也可以手动下载权重到本地(git clone https://huggingface.co/THUDM/codegeex2-6b),然后改为本地路径加载:
model_path = "/path/to/codegeex2-6b" tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) model = AutoModel.from_pretrained(model_path, trust_remote_code=True)2.3 Prompt 格式要点(决定补全质量的关键)
CodeGeeX2-6B 是一个基座代码生成模型,不具备聊天能力(聊天能力在插件中的 Ask CodeGeeX 中体验)。在使用其补全功能时,输入 prompt 需要遵循特定格式以获得最好效果:
- 语言标签引导:在 prompt 开头加入编程语言标签,如
# language: Python。完整语言列表定义在 evaluation/utils.py 的LANGUAGE_TAG字典中,覆盖 C、C++、Java、JavaScript、Go、Rust、TypeScript、SQL、Kotlin、Ruby、Swift、Shell 等 100 余种语言。从源码可见,不同语言使用各自注释语法书写标签,例如:// language: C++、<!--language: HTML-->、-- language: SQL、% language: Matlab,这与该语言的注释风格保持一致。 - 以注释形式写 prompt:参考 demo/run_demo.py 中
predict函数的处理逻辑——当用户选择语言时,代码会自动将LANGUAGE_TAG[lang]拼接到 prompt 之前;demo/example_inputs.jsonl 给出了跨语言示例输入,例如{"code": "# Write a quick sort function\n", "langauge": "Python"}、{"code": "// 写一个冒泡排序函数\n", "langauge": "C++"}等。
三、启动 Gradio DEMO
仓库提供了开箱即用的交互式 DEMO,基于 Gradio 构建:
python ./demo/run_demo.py usage: run_demo.py [-h] [--model-path MODEL_PATH] [--example-path EXAMPLE_PATH] [--quantize QUANTIZE] [--chatglm-cpp] [--fastllm] [--n-gpus N_GPUS] [--gpu GPU] [--cpu] [--auth] [--username yourname] [--password yourpassword] [--port PORT] [--listen ADDRESS]3.1 关键命令行参数(源自 run_demo.py)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
--model-path | str | THUDM/codegeex2-6b | 模型路径或 Hugging Face 模型名 |
--example-path | str | None(默认使用同目录example_inputs.jsonl) | 自定义示例输入文件 |
--quantize | int | None | 量化位宽,支持 4/5/8(对应 INT4/INT5/INT8) |
--chatglm-cpp | flag | 关闭 | 启用 ChatGLM.cpp 加速后端 |
--fastllm | flag | 关闭 | 启用 fastllm 加速后端 |
--n-gpus | int | 1 | 使用的 GPU 数量(>1 时走多卡加载) |
--gpu | int | 0 | 指定使用哪块 GPU(cuda:0) |
--cpu | flag | 关闭 | 强制使用 CPU 推理 |
--listen | str | 127.0.0.1 | 服务监听地址 |
--port | int | 7860 | 服务端口 |
--auth | flag | 关闭 | 启用身份验证 |
--username/--password | str | None | 配合--auth使用 |
若要启用身份验证,先启用--auth,再定义--username与--password:
python run_demo.py --auth --username user --password password # 若要监听所有地址请指定 --listen 0.0.0.03.2 后端加载逻辑
从 run_demo.py 的get_model函数可以看出模型的加载优先级:
- 多卡:
--n-gpus > 1时调用load_model_on_gpus(model_path, num_gpus=n)进行多卡分载; - ChatGLM.cpp:启用
--chatglm-cpp时构建chatglm_cpp.Pipeline,--quantize 4/5/8对应q4_0/q5_0/q8_0量化精度; - fastllm:启用
--fastllm时先用 transformers 加载,再通过llm.from_hf(model, dtype="int4"/"int8"/"float16")转换; - 纯 transformers:默认路径,
--quantize 4/8时执行model.half().quantize(quantize),并自动选择cuda:gpu、MPS(torch.backends.mps.is_built())或 CPU 设备。
Gradio 界面还提供了可调的生成参数滑杆:Seed(默认 8888)、Output Sequence Length(1~8192,默认 128)、Temperature(默认 0.2)、Top K(默认 0)、Top P(默认 0.95),以及编程语言下拉框("None" + 全部LANGUAGE_TAG语言),点击示例可一键填充输入。
四、启动 FastAPI 服务
如需以 HTTP 接口对外提供代码补全能力,可使用仓库自带的 FastAPI 服务:
python ./demo/fastapicpu.py usage: fastapicpu.py [-h] [--model-path MODEL_PATH] [--listen ADDRESS] [--port PORT] [--workders NUM] [--cpu] [--half] [--quantize QUANTIZE] [--chatglm-cpp]参数说明(源自 fastapicpu.py):--cpu启用 CPU 推理,--half启用.half()半精度,--port默认 7860,--workers默认 1。从 device() 函数可以看到,启用--chatglm-cpp时根据--half/--quantize决定f16/f32/q4_0/q5_0/q8_0精度;否则走 transformers 路径并支持.cuda().half()与 INT4/INT8 量化。
4.1 API 使用示例
服务启动后,通过 POST JSON 请求调用,接口默认监听127.0.0.1:7860:
curl -X POST "http://127.0.0.1:7860" \ -H 'Content-Type: application/json' \ -d '{"lang": "Python", "prompt": "# Write a quick sort function"}'请求体支持字段(源自 fastapicpu.py 的create_item处理逻辑):lang(编程语言,若为 "None" 则不添加语言标签)、prompt(必填)、max_length(默认 128)、top_p(默认 0.95)、temperature(默认 0.2)、top_k(默认 0)。响应为 JSON,包含response、lang、status、time字段,并在服务端打印请求日志。
五、多精度与量化推理
CodeGeeX2 使用 BF16 训练,推理时支持 BF16/FP16/INT8/INT4,可根据显卡显存选择合适的精度格式。不同精度下的显存占用(基于 PyTorch 2.0 测试,利用torch.nn.functional.scaled_dot_product_attention实现高效的 Attention 计算):
| Model | FP16/BF16 | INT8 | INT4 |
|---|---|---|---|
| CodeGeeX-13B | 26.9 GB | 14.7 GB | - |
| CodeGeeX2-6B | 13.1 GB | 8.2 GB | 5.5 GB |
默认使用 BF16 精度推理;如显卡不支持 BF16(❗️使用错误的格式推理结果将出现乱码),需要转换为 FP16:
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).half().to("cuda")5.1 INT4 量化推理
可以下载转换好的 INT4 权重,或手动转换;如果显卡不支持 BF16,也需要先转换为 FP16:
# 下载转换好的权重 model = AutoModel.from_pretrained("THUDM/codegeex2-6b-int4", trust_remote_code=True) # 手动转换权重 model = AutoModel.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True).quantize(4).to("cuda") # 如果显卡不支持 BF16,需要先转换为 FP16 格式 model = AutoModel.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True).half().quantize(4).to("cuda")量化到 INT4 后仅需约 5.5GB 显存,配合 MQA(Multi-Query Attention)与 Flash Attention 带来的推理加速,是轻量级本地化部署的推荐方案。
六、多 GPU 推理
当单卡显存不足以放下整个模型时,使用 demo/gpus.py 实现多卡分载:
from gpus import load_model_on_gpus model = load_model_on_gpus("THUDM/codegeex2-6b", num_gpus=2)从 gpus.py 源码可以看到其分载原理:模型共 30 个可分配层(transformer.embedding.word_embeddings、final_layernorm、output_layer、rotary_pos_emb、lm_head各占 1 层,transformer.encoder.layers28 层),auto_configure_device_map将 30 层均分到num_gpus张卡;其中 embedding、final_layernorm、lm_head 等被固定放在第一张卡上——这是因为在 Linux 下model.device会被设置为lm_head.device,若word_embeddings与model.device不在同一设备会导致 RuntimeError。最终通过accelerate.dispatch_model完成分发。若num_gpus < 2,则退化为.half().cuda()单卡加载。
README 中给出的多卡调用替换方式为:将默认加载代码替换为
def get_model(): tokenizer = AutoTokenizer.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True) from gpus import load_model_on_gpus # gpus文件在demo文件夹中 model = load_model_on_gpus("THUDM/codegeex2-6b", num_gpus=2) model = model.eval() return tokenizer, model tokenizer, model = get_model()七、Mac 推理(MPS 后端)
对于搭载 Apple Silicon 或 AMD GPU 的 Mac,可以使用 MPS 后端运行。参考 Apple 官方说明安装 PyTorch-Nightly(正确的版本号应为 2.x.x.dev2023xxxx,如 2.1.0.dev20230729):
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu在 MacOS 上只支持从本地加载模型(提前下载 codegeex2-6b 或 codegeex2-6b-int4 权重),支持 FP16/INT8/INT4 格式,并使用 MPS 后端:
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).half().to('mps')八、fastllm 加速推理
fastllm 是目前支持 GLM 架构的开源加速框架。首先安装 fastllm_pytools:
git clone https://github.com/ztxz16/fastllm cd fastllm mkdir build cd build # 使用GPU编译,需要添加CUDA路径:export CUDA_HOME=/usr/local/cuda/bin:$PATH,export PATH=$PATH:$CUDA_HOME/bin cmake .. -DUSE_CUDA=ON # 如果不使用GPU编译 cmake .. -DUSE_CUDA=OFF make -j cd tools && python setup.py install # 确认安装是否成功,在python中 import fastllm_pytools 不报错如出现架构不支持的报错,需要调整CMakeLists.txt,注释掉set(CMAKE_CUDA_ARCHITECTURES "native");如果是 E5 系列 CPU 可能出现inlining failed in call to 'always_inline' '__m256i _mm256_add_epi32'编译报错,将CMakeLists.txt第 20 行修改为:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread --std=c++17 -O2")将 Hugging Face 模型转换为 fastllm 格式:
# 原本的调用代码 from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True) model = AutoModel.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True) # 加入下面这两行,将huggingface模型转换成fastllm模型 from fastllm_pytools import llm model = llm.from_hf(model, tokenizer, dtype="float16") # dtype支持 "float16", "int8", "int4"fastllm 中模型接口与 Hugging Face 不完全相同,参考 demo/run_demo.py 中的实现:
model.direct_query = True outputs = model.chat(tokenizer, prompt, max_length=out_seq_length, top_p=top_p, top_k=top_k, temperature=temperature) response = outputs[0]也可以直接通过 DEMO 参数启用:python ./demo/run_demo.py --fastllm --quantize 4。
九、ChatGLM.cpp 量化推理
ChatGLM.cpp 是类似 LLaMA.cpp 的全平台量化加速方案,支持 q4_0/q4_1/q5_0/q5_1/q8_0 多种量化精度与 CPU/CUDA/Metal 多种后端,仅用一行代码实现推理加速。
首先安装 chatglm-cpp。如需使用 CUDA 加速,需要添加环境变量CMAKE_ARGS="-DGGML_CUBLAS=ON";如果仅使用 CPU 加速,将该环境变量去掉即可:
CMAKE_ARGS="-DGGML_CUBLAS=ON" pip install chatglm-cpp -v仅需一行代码即可量化加速 Hugging Face 模型,dtype可指定q4_0、q4_1、q5_0、q5_1、q8_0、f16:
>>> import chatglm_cpp >>> >>> pipeline = chatglm_cpp.Pipeline("THUDM/codegeex2-6b", dtype="q4_0") # Load HF model and quantize it into int4 Loading checkpoint shards: 100%|███████████████████████████████████████████████| 7/7 [00:09<00:00, 1.33s/it] Processing model states: 100%|█████████████████████████████████████████████| 199/199 [00:21<00:00, 9.21it/s] ... >>> print(pipeline.generate("# language: Python\n# write a bubble sort function\n", do_sample=False)) def bubble_sort(list): for i in range(len(list) - 1): for j in range(len(list) - 1): if list[j] > list[j + 1]: list[j], list[j + 1] = list[j + 1], list[j] return list print(bubble_sort([5, 4, 3, 2, 1]))ChatGLM.cpp 已集成到本仓库,DEMO 添加--quantize 4 --chatglm-cpp即可开启 int4(q4_0)量化加速:
python ./demo/run_demo.py --quantize 4 --chatglm-cppFastAPI 服务同样支持 ChatGLM.cpp 加速,添加相同参数启动:
python ./demo/fastapicpu.py --quantize 4 --chatglm-cpp测试服务接口:
curl -X POST "http://127.0.0.1:7860" \ -H 'Content-Type: application/json' \ -d '{"lang": "Python", "prompt": "# Write a bubble sort function", "max_length": 512}'十、推理性能与部署友好性
得益于 Multi-Query Attention 和 Flash Attention,CodeGeeX2 的推理速度较上一代大幅提升。在batch_size=1, max_length=2048、均使用加速框架、测试硬件为 GeForce RTX-3090 的条件下:
| Model | 推理速度 (字符/秒) |
|---|---|
| CodeGeeX-13B | 32 |
| CodeGeeX2-6B | 94 |
结合量化显存表(INT4 仅 5.5GB)可以看出,CodeGeeX2 对部署更加友好:6B 参数在 INT4 量化下仅需约 6GB 显存即可运行,适合单卡、低显存乃至 CPU 场景的轻量级本地化部署。
十一、代码能力评测与复现
CodeGeeX2 作为多语言代码生成基座模型,代码能力较上一代大幅提升。以下为 HumanEval、HumanEval-X、DS1000 基准上的评测结果(评价指标 Pass@k 定义与论文一致)。
11.1 HumanEval(Pass@1/10/100)
| Model | Pass@1 | Pass@10 | Pass@100 |
|---|---|---|---|
| CodeGen-16B-multi | 19.2 | 34.6 | 55.2 |
| CodeGeeX-13B | 22.9 | 39.6 | 60.9 |
| Codex-12B | 28.8 | 46.8 | 72.3 |
| CodeT5Plus-16B-mono | 30.9 | 51.6 | 76.7 |
| Code-Cushman-001 | 33.5 | 54.3 | 77.4 |
| LLaMA-65B | 23.7 | - | 79.3 |
| LLaMA2-70B | 29.9 | - | - |
| CodeGen2.5-7B-mono | 33.4 | 58.4 | 82.7 |
| StarCoder-15B | 33.2 | 61.0 | 84.7 |
| CodeGeeX2-6B | 35.9 | 62.6 | 88.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。
11.2 HumanEval-X(Pass@1)
| Model | Python | C++ | Java | JavaScript | Go | Rust | Overall |
|---|---|---|---|---|---|---|---|
| CodeGen-16B-multi | 19.2 | 18.1 | 15.0 | 18.4 | 13.0 | 1.8 | 14.2 |
| CodeGeeX-13B | 22.9 | 17.1 | 20.0 | 17.6 | 14.4 | 4.3 | 16.0 |
| Replit-code-v1-3B | 22.0 | 20.1 | 20.1 | 20.1 | 12.2 | 8.6 | 17.2 |
| CodeGen2.5-7B-multi | 30.6 | 24.3 | 29.0 | 27.5 | 18.9 | 20.1 | 25.1 |
| StarCoder-15B | 35.5 | 28.2 | 31.5 | 33.2 | 21.3 | 17.8 | 27.9 |
| CodeGeeX2-6B | 35.9 | 29.3 | 30.8 | 32.2 | 22.5 | 18.1 | 28.1 |
Pass@1使用
n=20, t=0.2, top_p=0.95。
11.3 DS1000(Pass@1)
| Model | Matplotlib | Numpy | Pandas | Pytorch | SciPy | Scikit-learn | TensorFlow | Overall |
|---|---|---|---|---|---|---|---|---|
| # Samples | 155 | 220 | 291 | 68 | 106 | 115 | 45 | 1000 |
| CodeGen-16B-Mono | 31.7 | 10.9 | 3.4 | 7.0 | 9.0 | 10.8 | 15.2 | 11.7 |
| code-cushman-001 | 40.7 | 21.8 | 7.9 | 12.4 | 11.3 | 18.0 | 12.2 | 18.1 |
| Codex-001 | 41.8 | 26.6 | 9.4 | 9.7 | 15.0 | 18.5 | 17.2 | 20.2 |
| CodeGeeX2-6B | 40.5 | 25.5 | 14.5 | 17.3 | 19.3 | 24.0 | 23.0 | 23.1 |
| StarCoder-15B | 51.7 | 29.7 | 11.4 | 21.4 | 20.2 | 29.5 | 24.5 | 26.0 |
| Codex-002 | 57.0 | 43.1 | 26.5 | 41.8 | 31.8 | 44.8 | 39.3 | 39.2 |
Pass@1使用
n=40, t=0.2, top_p=0.5。
11.4 使用仓库脚本复现 HumanEval-X
以上 HumanEval / HumanEval-X 结果可使用 scripts/run_humanevalx.sh 复现。脚本通过MODE环境变量控制流程(gen仅生成、eval仅评估、both生成并评估,默认both),依次对python java js cpp go rust六种语言循环执行:
MODE=gen bash ./scripts/run_humanevalx.sh脚本核心流程(源自 run_humanevalx.sh):
- 配置评测环境:设置
WORLD_SIZE、DATASET=humanevalx、MODEL_NAME=codegeex2-6b、MODEL_PATH=/pathto/codegeex2-6b/(需要按实际路径修改)、N_CPU_WORKERS=16、TIMEOUT=5;Rust 的TIMEOUT会自动调整为 300 秒。 - 配置生成参数:脚本内嵌了三组采样配置——Pass@1 greedy(
NUM_SAMPLES=1, TEMP=1.0, TOPK=1, GREEDY=1)、Pass@1 估计(NUM_SAMPLES=20, TEMP=0.2, TOPK=0, TOPP=0.95, GREEDY=0)、Pass@10/Pass@100(NUM_SAMPLES=200, MICRO_BSZ=4, TEMP=0.8, TOPK=0, TOPP=0.95, GREEDY=0),按需注释切换。 - 调用生成脚本:执行 evaluation/generation.py,传入
--model-path、--temperature、--top-p、--top-k、--greedy、--max-length、--samples-per-problem、--data-path(对应 benchmark/humanevalx/ 下的humanevalx_{python,java,js,cpp,go,rust}.jsonl.gz)等参数完成补全生成。 - 评估与检查:执行 evaluation/evaluation.py 计算 Pass@k,再通过 inspect_jsonl.py 汇总结果到 inspect 文本。
十二、AI 编程助手与协议说明
仓库还开发了支持 VS Code、IntelliJ IDEA、PyCharm、GoLand、WebStorm、Android Studio 等 IDE 的 CodeGeeX 插件,在插件中可以更直接地体验 CodeGeeX2 模型在代码生成与补全、添加注释、代码翻译及技术问答方面的能力(对应仓库资源图 resources/codegeex_demo.png 展示的插件演示界面)。欢迎在 IDE 中下载 CodeGeeX 插件获得更全面的 AI 编程体验。
在协议方面:本仓库的代码依照 Apache-2.0 协议开源(LICENSE),模型权重的使用需遵循 MODEL_LICENSE。CodeGeeX2-6B 权重对学术研究完全开放,填写登记表即可申请商业使用。
十三、使用注意事项汇总
- CodeGeeX2-6B 是基座代码生成模型,不具备聊天能力,聊天体验请前往插件中的 Ask CodeGeeX。
- 使用补全功能时,prompt 需要以语言标签(如
# language: Python)开头并以注释形式书写,可获得最好效果。 - 如果显卡不支持
bfloat16格式,推理将输出错误内容,必须将模型转换为float16:model = AutoModel.from_pretrained("THUDM/codegeex2-6b", trust_remote_code=True).half().cuda() - 多卡加载时需使用 demo/gpus.py 提供的
load_model_on_gpus,并注意 embedding/lm_head 等层会被统一放置在第一张卡以避免设备不一致错误。 - 若需对外提供服务,建议为 DEMO 配置
--auth --username --password身份验证,或使用 FastAPI 服务并通过--listen 0.0.0.0监听所有地址。
十四、引用
如果觉得我们的工作有帮助,欢迎引用以下论文:
@inproceedings{zheng2023codegeex, title={CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Benchmarking on HumanEval-X}, author={Qinkai Zheng and Xiao Xia and Xu Zou and Yuxiao Dong and Shan Wang and Yufei Xue and Zihan Wang and Lei Shen and Andi Wang and Yang Li and Teng Su and Zhilin Yang and Jie Tang}, booktitle={Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining}, pages={5673--5684}, year={2023} }- 大模型
- 代码模型
- 基础模型
【免费下载链接】CodeGeeX2
CodeGeeX2: A More Powerful Multilingual Code Generation Model
相关推荐
CodeGeeX2-6B 推理与评测实践指南:从 transformers 快速调用到多平台部署与 HumanEval-X 复现
CodeGeeX2 6B 推理与评测实践指南:从 transformers 快速调用到多平台部署与 HumanEval X 复现 CodeGeeX2 是多语言代
人工智能大模型代码模型模型评测CodeGeeX2 推理教程:CPU/多卡/Mac 多平台部署与量化加速实战
CodeGeeX2 推理教程:CPU/多卡/Mac 多平台部署与量化加速实战 CodeGeeX2 是多语言代码生成模型 CodeGeeX(KDD'23)的第二代
人工智能大模型代码模型模型评测CodeGeeX2-6B 多语言代码生成模型:推理部署、量化加速与评测实战指南
CodeGeeX2 6B 多语言代码生成模型:推理部署、量化加速与评测实战指南 CodeGeeX2 是智谱 AI 推出的多语言代码生成基座模型 CodeGeeX
人工智能大模型代码模型模型评测
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考