哈哈哈哈哈打不过我吧,没有办法我(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的接口

arduino 复制代码
curl -s http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {"role": "user", "content": "A beautiful landscape painting"}
    ],
    "extra_body": {
      "num_inference_steps": 50,
      "seed": 42
    }
  }'

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

arduino 复制代码
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响应体字段中取值。

相关推荐
泡海椒4 小时前
SpringBoot 集成 JQuick-Curl:Spring 环境完整接入教程,第三方接口调用别再到处手写模板类
后端
落木萧萧8254 小时前
MyBatis 关联查询的四种写法,为什么最后都变回了手写 XML
java·数据库·后端
cui_hao_nan4 小时前
Spring AOP 自调用、代理与 private 方法引发的诡异 NPE
java·后端·spring·ai开发
IT_陈寒5 小时前
JavaScript的隐式转换太坑了,我的==比较怎么就炸了?
前端·人工智能·后端
程序员阿明5 小时前
spring boot4+springAI 2加redis多轮对话存储
spring boot·redis·后端
MetaLite6 小时前
SpringBoot整合FastJson2数据脱敏-接口日志与失败降级
java·spring boot·后端
xixingzhe26 小时前
SpringBoot 接口缓存实现
spring boot·后端·缓存
名字还没想好☜6 小时前
Go 时间格式化为什么用 2006-01-02:time.Format/Parse 的参考时间、时区与解析踩坑
开发语言·后端·golang·go
jyOverQ9 小时前
RabbitMQ 消息积压怎么办?Prefetch、消费者并发与扩容
分布式·后端·rabbitmq
东风破_16 小时前
从跨域到 WebSocket:前端跨域方案、SSE 与双向实时通信详解
前端·后端