链载Ai

标题: 全模态大模型部署,vLLM-Omni 来了,100%开源 [打印本页]

作者: 链载Ai    时间: 3 天前
标题: 全模态大模型部署,vLLM-Omni 来了,100%开源


vLLM 是我们公众号的常客了,几乎所有关于大模型本地部署的文章都是用 vLLM 启动的

安全审核大模型,本地部署,实测
腾讯混元 OCR 大模型,本地部署,实测
大模型本地部署相关文章,我做了一个网站

但是部署多模态,尤其是最近 N 多全模态大模型,vLLM 就有点捉襟见肘了

vllm-project 团队开源了一个新框架——vLLM-Omni

https://github.com/vllm-project/vllm-omni

vLLM-Omni

  1. 什么是 vLLM-Omni? 最初,vLLM 是为大规模语言模型(LLM)的文本生成任务量身定制的。
    然而,随着需求演进,vLLM-Omni将其能力扩展到了更广阔的领域:
    全模态支持:它不仅能处理文本,还支持图像、视频和音频数据。 •非自回归架构:除了支持传统的自回归模型,它还扩展支持了DiT和其他并行生成模型。 • 异构输出**:能够实现从传统文本生成到各种多模态输出的跨越。

  2. 核心技术优势:为什么它如此之快? •高效的缓存管理:继承并优化了 vLLM 的KV 缓存管理机制。 •流水线并行执行:通过阶段执行的重叠(overlapping)来实现高吞吐量性能。 •灵活的资源调度:基于OmniConnector的全解耦架构,支持跨阶段的动态资源分配。 **高性能 (Performance)**:利用流水线阶段执行来重叠计算,确保高吞吐量性能。当一个阶段在处理时,其他阶段不会闲置。

vLLM-Omni 和 Hugging Face Transformers 对比,展示了在全模态服务中的效率提升。
  1. 易用性与生态兼容性 对于开发者而言,vLLM-Omni 极易上手且高度兼容,如果你会用 vLLM,你就会用 vLLM-Omni: •无缝集成:支持 Hugging Face 上最热门的开源模型,例如Qwen-OmniQwen-Image。 •标准接口:提供与OpenAI 兼容的 API 服务器,极大降低了集成成本。 •分布式推理:支持张量并行、流水线并行、数据并行以及专家并行(EP)。 •开发语言:该项目主要由Python (98.5%)编写,方便社区进行二次开发和贡献。
vLLM-Omni 是首批支持全模态模型服务的开源框架之一,它将 vLLM 卓越的性能扩展到了多模态和非自回归推理的世界。

目前支持的模型

N 卡上阿里 Qwen 能打的多模态模型及户全都支持,华为 NPU 也支持,只是可用模型较少


安装 vllm-omni

推荐使用 uv 进行环境管理

uv venv --python 3.12 --seed
source.venv/bin/activate
uv pip install vllm==0.12.0 --torch-backend=auto
uv pip install vllm-omni

内网部署的话,Docker 是必须的

镜像下载:https://hub.docker.com/r/vllm/vllm-omni

docker run --runtime nvidia --gpus 2 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env"HF_TOKEN=$HF_TOKEN"\
-p 8091:8091 \
--ipc=host \
vllm/vllm-omni:v0.11.0rc1 \
--model Qwen/Qwen3-Omni-30B-A3B-Instruct --port 8091

使用方法:离线推理

以下是使用Tongyi-MAI/Z-Image-Turbo模型进行文生图的简单示例:

fromvllm_omni.entrypoints.omniimportOmni

if__name__ =="__main__":
# 初始化 Omni 模型
omni = Omni(model="Tongyi-MAI/Z-Image-Turbo")

prompt ="a cup of coffee on the table"

# 生成图像
images = omni.generate(prompt)

# 保存结果
images[0].save("coffee.png")

也可以直接命令行

python text_to_image.py \
--model Tongyi-MAI/Z-Image-Turbo \
--prompt"a cup of coffee on the table"\
--seed 42 \
--cfg_scale 4.0 \
--num_images_per_prompt 1 \
--num_inference_steps 50 \
--height 1024 \
--width 1024 \
--output outputs/coffee.png

使用方法:在线推理

启动脚本:

vllm serve Qwen/Qwen-Image --omni --port 8091

Method 1: curl 调用 API

curl -s http://localhost:8091/v1/chat/completions \
-H"Content-Type: application/json"\
-d'{
"messages": [
{"role": "user", "content": "A beautiful landscape painting"}
],
"extra_body": {
"height": 1024,
"width": 1024,
"num_inference_steps": 50,
"true_cfg_scale": 4.0,
"seed": 42
}
}'| jq -r'.choices[0].message.content[0].image_url.url'| cut -d','-f2 | base64 -d > output.png

Method 2: Python Client 调用

python openai_chat_client.py --prompt"A beautiful landscape painting"--output output.png

Method 3: 使用 Gradio Demo¶

官方还提供了 Gradio 实现的前端

#https://github.com/vllm-project/vllm-omni
python gradio_demo.py

然后浏览器访问http://localhost:7860

完成脚本:https://github.com/vllm-project/vllm-omni/blob/main/examples/online_serving/text_to_image/gradio_demo.py

最后,官方还提供了一系列实用教程,涉及文生图、图生图、全模态等等:

https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/examples/online_serving/text_to_image/#example-materials

在最后,这个项目的核心开发者都是中国面孔

后续我要用 4090 实际运行 Z-Image-Turbo 并进行实测,教程后续更新








欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5