哈哈哈哈哈打不过我吧,没有办法我(vllm)就是这么强大!

前文在微信公众号平台爆了 ,接近1w自然阅读,文生文已经满足不了博主的分享欲,今天记录vllm咧一个文生图模型。

在文本生成领域,99%的应用都基于自回归模型(Autoregressive Models),也就是我们熟知的GPT系列、LLaMA等。

文本(Text)是离散的,由词元(Token)组成;而图像、视频是连续的像素或信号。扩散模型天生擅长处理连续数据, 故文生图和文生视频的是当前扩散模型的核心战场。

什么是扩散模型diffusion models?

使用文生图工具时,内部真实发生的"魔法":

起点:你看到的完全随机的噪声图。这相当于前向过程走到了终点。

反向去噪第一步:

模型看着这张纯噪声图,结合你的提示词,预测出"这张图上现在应该被加上了什么噪声"。

然后,从当前图片中减去这个预测出的噪声。

结果得到一张噪声少了一点点的、略微能看出模糊轮廓的图片。

循环往复:把上一步得到的、稍微清晰一点的图片作为新的输入,再次让模型预测并减去噪声。

终点:重复几十步后,噪声被逐步移除干净,一张清晰的、符合你描述的图片就诞生了。

这个一步步预测并减去噪声的循环,从方向上看是前向加噪的"反向",从动作上看就是在"去噪"。

vllm旗下的子项目vllm-omni提供了简单、快速且低成本的多模态模型服务。

Z-Image是阿里开源的完整版本、未经蒸馏的的 Transformer 文生图模型, 10.26B权重参数, 20.55GB GPU显存, 专为高质量、强生成多样性、广泛的风格覆盖能力以及精准的提示词遵循而设计。

启动推理服务器:

vllm serve Tongyi-MAI/Z-Image --omni --port 8000 --tensor-parallel-size 2

注意: 不是用原生vllm(对应的docker镜像是vllm-openai)带omni参数, 而是要一个包含omni扩展的多模态vllm (对应的docker镜像是vllm-omni)。

支持两种接口, 都是兼容openai的接口

输出的二进制图片被base64 编码,解码可得图片。

复制代码
curl -X POST http://localhost:8000/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "a dragon laying over the spine of the Green Mountains of Vermont",
    "size": "1024x1024",
    "seed": 42
  }' | jq -r '.data[0].b64_json' | base64 -d > dragon.png

jq 是json格式化和取值工具, 从json响应体字段中取值。