新知榜官方账号
2023-08-03 17:03:11
清华GLM技术团队发布了新的开源版本「CodeGeeX2-6B」,是多语言代码生成模型CodeGeeX的第二代模型,基于ChatGLM2架构加入代码预训练实现。CodeGeeX2具有更强大的代码能力、更优秀的模型特性、更全面的AI编程助手和更开放的协议。
GLM团队开发了支持VSCode、IntelliJIDEA、PyCharm、GoLand、WebStorm、AndroidStudio等IDE的CodeGeeX插件。使用transformers快速调用CodeGeeX2-6B:
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')
# 如使用CPU推理,device='cpu'
model = model.eval()
# CodeGeeX2支持100种编程语言,加入语言标签引导生成相应的语言
prompt = "#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)
# 示例中使用greedy decoding,检查输出结果是否对齐
response = tokenizer.decode(outputs[0])
print(response)
CodeGeeX2目前支持在多种不同平台上进行推理,包括CPU推理,多卡推理,加速推理等。
CodeGeeX2使用BF16训练,推理时支持BF16/FP16/INT8/INT4,可以根据显卡显存选择合适的精度格式:默认使用BF16精度进行推理,如显卡不支持BF16(❗️如使用错误的格式,推理结果将出现乱码),需要转换为FP16格式:
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).half().to("cuda")
用gpus.py实现多GPU推理:
from gpus import load_model_on_gpus
model = load_model_on_gpus("THUDM/codegeex2-6b", num_gpus=2)
对于搭载了AppleSilicon或者AMDGPU的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对CodeGeeX2进行加速,fastllm是目前支持GLM架构的最快开源框架。首先安装fastllm_pytools:
git clone https://github.com/ztxz16/fastllm
cd fastllm
cd build
cmake .. -DUSE_CUDA=ON # 使用GPU编译,需要添加CUDA路径:export CUDA_HOME=/usr/local/cuda/bin:$PATH,export PATH=$PATH:$CUDA_HOME/bin
cmake .. -DUSE_CUDA=OFF # 如果不使用GPU编译
make -j
cd ../cdtools && python setup.py install
确认安装是否成功,在python中import fastllm_pytools不报错
将huggingface转换成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中模型接口和huggingface不完全相同,可以参考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]
微信扫码咨询
相关工具
相关文章
推荐
阿里Accio中文版上线!一键搞定复杂采购
2025-08-19 09:13
视频“用嘴编辑”的时代来了,但钱包顶得住吗?
2025-08-15 17:59
智谱新模型GLM-4.5V全面开源,玩家们有福啦!
2025-08-12 17:56
扎心文案+AI插画=爆款!揭秘8万赞视频的制作全流程
2025-08-12 10:08
GPT-5没你想的那么好,附实测体验~
2025-08-11 11:07
一站式搞定AI绘图+视频,AI短片效率飙升的秘密在这儿!
2025-08-08 09:26
打工人新神器!10款国产AI,让你告别996!
2025-08-08 09:24
豆包视觉推理深度体验,AI也能“边看边想”了!
2025-08-08 09:19
300美元的AI男友来了!马斯克的情感生意从女友做到男友
2025-08-01 17:56
Agent智能体:2025年企业新员工,月薪仅需一度电?
2025-07-30 17:49