一、什么是 vLLM-Omni
vLLM 是伯克利团队推出的高性能大模型推理引擎,主打高吞吐、低延迟;vLLM-Omni 是 vLLM 官方推出的多模态扩展组件,专门面向文生图、视觉生成类模型提供统一推理与服务能力。
核心能力:
- 离线批量文生图推理,Python 原生调用;
- 一键拉起 OpenAI 兼容接口服务,直接用 curl/SDK 调用绘图;
- 原生支持扩散类图像生成模型,统一调度管线;
- 兼容 CUDA / ROCm 双硬件生态,适配主流开源图像大模型(如 Tongyi-MAI/Z-Image-Turbo)。
版本硬性要求:vLLM 主包与 vLLM-Omni 必须保持完全相同主、次版本(示例文档配套 v0.23.0),版本错位会触发警告、
--omni参数失效、推理异常。
二、前置环境要求
仅支持 Linux 系统,依赖固定版本 Python:
- OS:Linux(Windows / Mac 暂不官方支持)
- Python:3.12
- 硬件:NVIDIA CUDA GPU 或 AMD ROCm 显卡
- 工具:uv(轻量虚拟环境与包管理工具)
三、完整安装步骤(源码编译安装)
1. 创建隔离虚拟环境
bash
运行
# 创建 Python3.12 虚拟环境
uv venv --python 3.12 --seed
# 激活环境
source .venv/bin/activate
2. 安装对应版本 vLLM
方案 A:NVIDIA CUDA 用户
bash
运行
uv pip install vllm==0.23.0 --torch-backend=auto
方案 B:AMD ROCm 用户
bash
运行
uv pip install vllm==0.23.0+rocm722 --extra-index-url https://wheels.vllm.ai/rocm/0.23.0/rocm722
3. 拉取 vllm-omni 源码并本地安装
bash
运行
# 克隆官方仓库
git clone https://github.com/vllm-project/vllm-omni.git
cd vllm-omni
# 本地可编辑模式安装
uv pip install -e .
关键避坑提醒
- vLLM 与 vllm-omni 版本必须一致(均为 0.23.0),否则命令行
vllm serve --omni识别失败; - 低于 v0.23.0 的旧版 vLLM 不再劫持入口,旧兼容方案失效,直接升级即可解决参数报错;
- 安装全程保持虚拟环境激活,避免全局包冲突。
四、离线批量文生图推理(Python API)
示例 1:单提示词生成图片
python
运行
from vllm_omni.entrypoints.omni import Omni
if __name__ == "__main__":
# 加载图像生成模型
omni = Omni(model="Tongyi-MAI/Z-Image-Turbo")
prompt = "a cup of coffee on the table"
outputs = omni.generate(prompt)
# 提取图像并保存
img = outputs[0].request_output.images[0]
img.save("coffee.png")
示例 2:多提示批量生成
python
运行
from vllm_omni.entrypoints.omni import Omni
if __name__ == "__main__":
omni = Omni(model="Tongyi-MAI/Z-Image-Turbo")
prompts = [
"a cup of coffee on a table",
"a toy dinosaur on a sandy beach",
"a fox waking up in bed and yawning",
]
outputs = omni.generate(prompts)
# 循环保存所有图片
for idx, res in enumerate(outputs):
imgs = res.request_output.images
for img_idx, img in enumerate(imgs):
save_path = f"p{idx}-img{img_idx}.jpg"
img.save(save_path)
print(f"图片已保存:{save_path}")
批量推理注意事项
- 默认扩散管线
max_num_seqs=1,输入列表会自动切分为单条请求,批量性能提升有限; - 若模型原生支持批量输入,可通过
stage_configs_path指定 yaml 配置,修改engine_args.max_num_seqs调大并发; - 批量仅用于接口兼容,生产大批量绘图建议拆分任务队列。
五、在线服务:OpenAI 兼容 API 部署
1. 启动 Omni 图像服务
bash
运行
# 开启omni多模态服务,监听8091端口
vllm serve Tongyi-MAI/Z-Image-Turbo --omni --port 8091
2. curl 调用接口生成图片
bash
运行
curl -s http://localhost:8091/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "a cup of coffee on the table"}
],
"extra_body": {
"height": 1024,
"width": 1024,
"num_inference_steps": 50,
"guidance_scale": 4.0,
"seed": 42
}
}' | jq -r '.choices[0].message.content[0].image_url.url' | cut -d',' -f2 | base64 -d > coffee.png
调用逻辑说明:
- 通过
extra_body传递绘图超参:分辨率、采样步数、引导系数、随机种子; - 返回图片 base64 编码,命令行解码直接输出本地图片文件;
- 完全兼容 OpenAI 客户端,可直接用 openai Python SDK 对接服务。
六、常见问题排查
--omni参数不识别 原因:vLLM /vllm-omni 版本不一致,升级两者至 0.23.0 统一版本;- 导入模块报版本警告 核对 vLLM 版本
uv pip show vllm,重装匹配版本的 vllm-omni; - 批量生成速度无提升 当前扩散模型默认单序列推理,需自定义 stage-config.yaml 调整并发参数;
- ROCm 安装失败 使用文档指定的 rocm722 专属镜像源,不要混用默认 CUDA 安装包。
七、适用场景总结
- AI 绘图本地批量生成、数据集素材制作;
- 私有化部署文生图 API,对接自有业务系统;
- 多模态模型统一推理底座,兼容图像、视觉交互类开源模型(如 JoyAI-VL-Interaction 原生适配);
- 企业离线无网环境绘图服务私有化。
完整文档参考:https://docs.vllm.ai/projects/vllm-omni/en/latest/getting_started/quickstart/
正文完
可以使用微信扫码关注公众号(ID:xzluomor)