GLM-Image 是一种采用混合自回归(autoregressive)+ 扩散(diffusion)解码器架构的图像生成模型,本文记录了该模型的开箱适配过程。在整体图像生成质量方面,GLM-Image 与主流的潜在扩散方法相当,但在文本渲染和知识密集型生成场景中展现出显著优势。它在需要精确语义理解和复杂信息表达的任务中表现尤为出色,同时在高保真度和细粒度细节生成方面也保持了强大的能力。除了文生图(text-to-image)生成外,GLM-Image 还支持丰富的图生图(image-to-image)任务,包括图像编辑、风格迁移、身份保持生成以及多主体一致性等。
| 配套 | 版本 | 环境准备指导 |
|---|---|---|
| Python | Python 3.11.14 | - |
| torch | 2.9.0 | - |
| torch_npu | 2.9.0 | - |
| vLLM- Ascend | 0.14.0rc1 | |
| CANN | 8.5.0 |
整机:Atlas 800T A2
NPU:910B昇腾
部署方式:单卡部署
操作系统:openEuler 22.03 (LTS-SP2), ARM
docker pull quay.io/ascend/vllm-ascend:v0.14.0rc1mkdir -p /opt/data/models/ZhipuAI/GLM-Image
modelscope download --model ZhipuAI/GLM-Image --local_dir /opt/data/models/ZhipuAI/GLM-Imageexport IMAGE=quay.io/ascend/vllm-ascend:v0.14.0rc1
docker run --rm \
--name vllm-omni-npu-v14 \
--shm-size=1g \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-v /opt/data/models:/opt/data/models \
-v /home/workDir:/home/workDir \
-it $IMAGE bash第3步已经进入了容器,下面的操作是在容器中完成
cd /vllm-workspace
git clone -b v0.14.0 https://github.com/vllm-project/vllm-omni.git
cd vllm-omni对于npu不需要安装fa3-fwd,需要注释掉pyproject.toml文件中对fa3-fwd依赖的声明,否则在执行npu pip install -v -e .时会报错

VLLM_OMNI_TARGET_DEVICE=npu
pip install -v -e .
# OR pip install -v -e . --no-build-isolation
export VLLM_WORKER_MULTIPROC_METHOD=spawncd /vllm-workspace
git clone https://atomgit.com/atomgit-cast/zai-org-GLM-Image.git
cd /vllm-workspace/zai-org-GLM-Image/diffusers
pip install -e .
cd /vllm-workspace/zai-org-GLM-Image/transformers
pip install -e .当使用的diffusers或者transformers版本过高,可能造成版本不兼容,确认安装的版本如下:

vllm serve /opt/data/models/ZhipuAI/GLM-Image --omni --port 8091启动成功后如下图所示:

curl http://localhost:8091/v1/images/generations \
-H "Content-Type: application/json" \
-d '{
"model": "ZhipuAI/GLM-Image",
"prompt": "a beautiful girl with glasses.",
"n": 1,
"response_format": "b64_json",
"size": "1024x1024"
}' | python3 -c "import sys, json, base64; open('output_t2i.png', 'wb').write(base64.b64decode(json.load(sys.stdin)['data'][0]['b64_json']))"该调用过程共花费2分钟左右,最终会得到一个名为output_t2i.png的图片,如下图所示:
