尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

vLLM-Omni 图生图实战:使用 image_edit.py 完成 Qwen-Image-Edit 单图与多图编辑

发布时间:2026/9/17 19:34:25

资讯中心
01
ARTICLE

vLLM-Omni 图生图实战:使用 image_edit.py 完成 Qwen-Image-Edit 单图与多图编辑

vLLM-Omni 图生图实战:使用 image_edit.py 完成 Qwen-Image-Edit 单图与多图编辑
vLLM-Omni 图生图实战使用 image_edit.py 完成 Qwen-Image-Edit 单图与多图编辑【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni本篇指南基于 vLLM-Omni 仓库的离线图生图image-to-image示例讲解如何用image_edit.pyCLI 驱动Qwen/Qwen-Image-Edit系列模型完成单图编辑与多图融合覆盖完整命令行参数、缓存加速Cache-DiT / TeaCache、CFG 并行与显存优化选项并结合仓库源码说明请求是如何从 CLI 参数被组装为扩散采样参数与多模态 prompt 的读完后你可以直接在本地复制命令运行图像编辑任务并理解每个参数背后的实现逻辑。场景与文件位置vLLM-Omni 的离线推理示例位于examples/offline_inference/下图生图任务的三个文件都在 examples/offline_inference/image_to_image 目录中image_edit.py核心 CLI 脚本负责加载模型、构造请求、执行生成并保存结果run_qwen_image_edit_2511.sh基于Qwen/Qwen-Image-Edit-2511的示例启动脚本演示了开启cache_dit缓存加速的完整命令对应文档为 docs/user_guide/examples/offline_inference/image_to_image.md。整体流程为CLI 解析参数 → 构造Omni引擎实例 → 通过build_image_to_image_prompt组装多模态 prompt → 填充OmniDiffusionSamplingParams采样参数 → 调用omni.generate()得到输出图片并落盘。单图编辑最小可运行示例1. 下载示例输入图wget https://vllm-public-assets.s3.us-west-2.amazonaws.com/omni-assets/qwen-bear.png2. 运行编辑命令默认模型即Qwen/Qwen-Image-Edit--model的默认值因此单图场景可以省略--modelpython image_edit.py \ --image qwen-bear.png \ --prompt Let this mascot dance under the moon, surrounded by floating stars and poetic bubbles such as Be Kind \ --output output_image_edit.png \ --num-inference-steps 50 \ --cfg-scale 4.0脚本执行成功时会在标准输出打印生成耗时Total generation time并将结果保存到--output指定的 PNG 路径。多图编辑Qwen-Image-Edit-2509 / 2511多图输入需要使用支持多图条件融合的Qwen/Qwen-Image-Edit-2509或Qwen/Qwen-Image-Edit-2511脚本帮助文本指出它们走QwenImageEditPlusPipeline路径。--image参数支持传入任意多个图片路径python image_edit.py \ --model Qwen/Qwen-Image-Edit-2509 \ --image img1.png img2.png \ --prompt Combine these images into a single scene \ --output output_image_edit.png \ --num-inference-steps 50 \ --cfg-scale 4.0 \ --guidance-scale 1.0脚本内部对单图与多图的区分逻辑很直接加载全部输入图后若只有一张则以单个Image对象作为条件否则以list[Image]传入见 image_edit.py。仓库提供的 run_qwen_image_edit_2511.sh 在此基础上额外开启了 Cache-DiT 加速python image_edit.py \ --model Qwen/Qwen-Image-Edit-2511 \ --image qwen_bear.png \ --prompt Add a white art board written with colorful text vLLM-Omni on grassland. Add a paintbrush in the bears hands. position the bear standing in front of the art board as if painting \ --output output_image_edit.png \ --num-inference-steps 50 \ --cfg-scale 4.0 \ --cache-backend cache_dit核心参数详解以下参数说明以 image_edit.py 中argparse定义为准默认值均摘自源码。模型与输入参数默认值说明--modelQwen/Qwen-Image-Edit模型名或本地路径。多图输入需使用Qwen/Qwen-Image-Edit-2509或更新版本--image必填输入图片路径PNG/JPG 等可指定多张脚本会先用 PIL 打开并转为--color-format指定的色彩格式--prompt必填描述要做的图像编辑的文本 prompt--negative-promptNone负向提示词与--cfg-scale 1同时存在时才真正启用 CFG--deploy-configNone部署 YAML 路径用于部署配置未被自动加载的多阶段图编辑流水线--trust-remote-code关信任并执行模型仓库中的自定义建模代码如 HunyuanImage-3.0 需要生成质量与引导强度--cfg-scale默认4.0true classifier-free guidance 强度。由cfg_scale 1且提供negative_prompt共同启用 CFG数值越高生成结果越贴近文本描述通常以画质下降为代价。--guidance-scale默认1.0即关闭面向 guidance-distilled 模型的引导强度。与 CFG 不同蒸馏模型把 guidance scale 直接作为输入参数 1时生效非蒸馏模型上该参数被忽略。--guidance-scale-2默认None图生图场景下的 image guidance scale脚本帮助文本注明其用于 I2I 生成。--num-inference-steps默认50扩散采样去噪步数步数越多质量越高、耗时越长。--seed默认0随机种子保证结果可复现脚本用它初始化与设备匹配的torch.Generator。--num-outputs-per-prompt默认1每个 prompt 生成的图片数量多输出时保存为stem_0.png、stem_1.png等。--extra-args一个 JSON 对象被拷贝进OmniDiffusionSamplingParams.extra_args例如{cfg_text_scale: 4.0}若模型声明了额外 body 参数脚本会通过apply_declared_extra_args做白名单过滤。分辨率控制--width/--height输出图像宽、高像素默认None由 pipeline 决定。--resolution取值为 640 或 1024 的分辨率桶决定条件图与输出分辨率若未提供 width/height/resolution 中任何一个脚本默认设置resolution640。三者存在互斥与优先级约束--resolution不能与--width/--height同时指定且 width/height 必须为正整数见 image_edit.py 的校验逻辑。显存优化OOM 处理首选--vae-use-slicing启用 VAE slicing 降低解码显存占用--vae-use-tiling启用 VAE tiling 降低解码显存占用--enable-cpu-offload对扩散模型启用 CPU offload--enable-layerwise-offload对 DiT 模块启用逐层blockwiseoffload--vae-patch-parallel-size默认1VAE patch/tile 并行解码使用的 GPU 数。遇到 OOM 时优先尝试同时开启--vae-use-slicing与--vae-use-tiling更大规模模型可叠加 CPU offload。并行与加速--cfg-parallel-size默认1可选 1/2/3CFG 并行分支数设为 2 即启用 CFG Parallel将 CFG 的多个分支并行到多卡上更多用法见 CFG 并行文档。--tensor-parallel-size默认1DiT 内部的张量并行TP卡数。--ulysses-degree/--ulysses-mode/--ring-degreeUlysses 与 Ring 序列并行的卡数及模式strict或advanced_uaa。--enable-expert-parallel为 MoE 层启用专家并行。--use-hsdp/--hsdp-shard-size/--hsdp-replicate-sizeHSDP混合分片数据并行开关与分片/复制规模。--enforce-eager禁用 torch.compile 强制 eager 执行注意该参数默认值为None只有显式传入时才会覆盖 per-stage 部署 YAML 中的取值。--enable-diffusion-pipeline-profiler与--profiler-config前者打印各阶段耗时后者接收 JSON如{profiler:torch,torch_profiler_dir:./perf}脚本会先调用omni.start_profile()在生成结束后stop_profile()并输出各 rank 的 trace 路径。缓存加速Cache-DiT 与 TeaCache--cache-backend可选cache_dit或tea_cache默认不启用Cache-DiTDBCache SCM TaylorSeer 组合相关参数与默认值参数默认值说明--cache-dit-fn-compute-blocks1前向计算块数针对单 transformer 模型优化--cache-dit-bn-compute-blocks0反向计算块数--cache-dit-max-warmup-steps4最大 warmup 步数对小步数模型有效--cache-dit-residual-diff-threshold0.24残差差异阈值越大缓存越激进--cache-dit-max-continuous-cached-steps3最大连续缓存步数防止精度退化--cache-dit-enable-taylorseer关启用 TaylorSeer 加速不适配小步数模型--cache-dit-taylorseer-order1TaylorSeer 多项式阶数--cache-dit-scm-steps-mask-policyNoneSCM 掩码策略slow / medium / fast / ultra--cache-dit-scm-steps-policydynamicSCM 步数策略dynamic 或 staticTeaCacheTimestep Embedding Aware Cache仅需--tea-cache-rel-l1-thresh默认0.2累积相对 L1 距离阈值回归系数按model_type使用模型特定默认值。一个典型的 cache_dit 组合用法摘自脚本头部 docstringpython image_edit.py \ --image input.png \ --prompt Edit description \ --cache-backend cache_dit \ --cache-dit-max-continuous-cached-steps 3 \ --cache-dit-residual-diff-threshold 0.24 \ --cache-dit-enable-taylorseer脚本会把上述 CLI 值组装成cache_config字典键如residual_diff_threshold、rel_l1_thresh传给Omni构造器见 image_edit.py。Layered 模型专属参数--layers默认4将输入图分解的层数--color-format默认RGBLayered 模型设为RGBA输入图的 PIL 转换色彩格式--output在 Layered 场景下作为文件前缀使用。分层输出场景示例python image_edit.py \ --model Qwen/Qwen-Image-Layered \ --image input.png \ --prompt \ --output layered \ --num-inference-steps 50 \ --cfg-scale 4.0 \ --layers 4 \ --color-format RGBA源码视角请求是如何构造的理解脚本的内部流程有助于排查多模态输入或多阶段模型的问题。核心调用链如下均在 image_edit.py组装多模态 promptbuild_image_to_image_prompt(...)按模型类名查询 vllm_omni/model_extras/registry.py 中注册的 per-model prompt builder未注册的模型回退到default_image_to_image_prompt其产物为{ prompt: prompt, multi_modal_data: {image: input_image}, # 单张 Image 或 list[Image] negative_prompt: ..., # 仅在显式提供时加入 }从源码结构看不同模型可以在 registry 中声明自定义的image_to_image_prompt_builder来改写这一封装脚本本身保持模型无关。构造扩散采样参数OmniDiffusionSamplingParams承载generator由--seed播种、true_cfg_scale、guidance_scale、guidance_scale_2、num_inference_steps、num_outputs_per_prompt、layers、resolution、height、width等字段见 image_edit.py。多阶段参数分发若引擎为多阶段模型提供default_sampling_params_list脚本会逐段克隆并把扩散段替换为上面构造的diffusion_params--extra-args中声明的键会合并进extra_args。AR 阶段输入如 HunyuanImage-3.0声明了ar_input_builder的模型会额外走_apply_ar_stage_inputs用AutoTokenizer加载字节级对齐的 HF tokenizer构造 AR prefill 与 stop tokens 并写入对应阶段tokenizer 加载失败默认直接报错fail fast只有显式加--allow-tokenizer-fallback才降级为字符串 prompt。生成与保存omni.generate(prompt_dict, sampling_params_list...)返回输出后脚本优先取output.images取不到则用extract_images_from_outputs兜底提取单图直接存--output多输出或分层输出按stem_{idx}[_{sub_idx}].png规则命名保存。常见问题与排障提示OOM按文档建议先加--vae-use-slicing --vae-use-tiling仍不足时叠加--enable-cpu-offload或--enable-layerwise-offload。结果不遵循 prompt确认--cfg-scale 1且提供了--negative-prompt否则 CFG 实际未启用蒸馏模型改用--guidance-scale 1。首次运行慢/编译问题可用--enforce-eager关闭 torch.compile 定位是否是编译路径的问题。结果不可复现检查--seed是否一致随机种子决定了torch.Generator的初始状态。延伸阅读CFG 并行等扩散并行加速细节docs/user_guide/diffusion/parallelism/cfg_parallel.md同目录的在线服务示例examples/online_serving/image_to_image图生图离线文档入口docs/user_guide/examples/offline_inference/image_to_image.md【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。