【免费下载链接】Qwen-Image-Flash-bf16
Qwen-Image-Flash-bf16 是面向 Apple MLX 的文生图 AI 模型仓库:它把约 204 亿参数的MMDiT扩散主干、Qwen2.5-VL文本编码器和Qwen-Image VAE三大核心组件统一打包为 bf16(16 位浮点)格式,支持4 步快速出图。本文带你逐个拆解每个组件的参数、配置与职责,快速建立对这套"少步数"文生图模型的完整认知。
📦 仓库全景:一张表看懂模型全家福
根目录的 model_index.json 定义了整个流水线QwenImagePipeline的拼装方式,5 个组件各司其职:
| 目录 | 组件 | 参数量级 | 职责 |
|---|---|---|---|
| text_encoder/ | Qwen2.5-VL | 约 83 亿 | 把提示词编码为 3584 维文本嵌入 |
| tokenizer/ | Qwen2Tokenizer | — | 文本 ↔ Token ID 转换 |
| transformer/ | Qwen-Image MMDiT | 约 204 亿 | 在潜空间做 4 步去噪(生成核心) |
| vae/ | Qwen-Image VAE | 约 1.3 亿 | 潜空间 ↔ 像素的压缩与还原 |
| scheduler/ | FlowMatchEuler | — | 定义 4 步采样的噪声轨迹 |
数据流一句话概括:提示词 → 分词 → 文本编码 → MMDiT 联合注意力去噪 → VAE 解码出图。三大模型组件合计约 289 亿参数。
🔍 组件一:Qwen2.5-VL 文本编码器——读懂提示词的"大脑"
配置见 text_encoder/config.json,关键规格:
- 28 层 Transformer,隐藏维度 3584,28 个注意力头 + 4 个 KV 头(GQA 分组查询注意力,省显存)
- 词表 152064,支持最长 128k 上下文,采用 M-RoPE 多维旋转位置编码
- 关键设计:
hidden_size=3584与 MMDiT 的joint_attention_dim=3584完全对齐——文本嵌入可以直接参与图像 token 的联合注意力,无需额外投影层
分词由 Qwen2Tokenizer 完成,配置见 tokenizer/tokenizer_config.json。本仓库还额外提供了快速分词器 tokenizer/tokenizer.json(上游仓库只带慢速分词文件),提示词套上固定模板后,从第 34 个 token 之后截取嵌入,这个"34"正是模板前缀的 token 数。
🧠 组件二:MMDiT——204 亿参数的扩散生成核心
MMDiT(Multi-Modality Diffusion Transformer,多模态扩散 Transformer)是整套模型的算力担当,配置见 transformer/config.json:
- 60 层Transformer,24 头 × 128 维
in_channels=64/out_channels=16:输入是 16 通道潜码经 2×2 空间打包后的结果,输出仍是 16 通道潜码patch_size=2:把 128×128 的潜图切成 64×64 = 4096 个图像 token(对应 1024×1024 出图)axes_dims_rope=[16,56,56]:三维旋转位置编码,同时描述"帧位置 + 横向 + 纵向"guidance_embeds=false:模型内部已吸收 CFG 4.0 引导,推理时不再需要传 guidance 参数
权重名里成对出现的norm_q/norm_added_q暴露了 MMDiT 的灵魂:每个注意力块同时维护"图像流"和"文本流"两套 QK 归一化,两路 token 在同一个注意力矩阵里互相看见——这就是"联合注意力",也是它能精准理解复杂指令与文字排版的关键。
权重总大小约 40.86 GB(bf16),分片索引见 transformer/diffusion_pytorch_model.safetensors.index.json。
🖼️ 组件三:Qwen-Image VAE——像素与潜空间之间的"翻译官"
配置见 vae/config.json,它是"像素世界"与"生成世界"之间的唯一接口:
z_dim=16:把一张图压缩成 16 通道潜码,生成全程只在这个小空间里进行,算力省一个数量级dim_mult=[1,2,4,4]、base_dim=96:4 级下采样的编码器结构temporal_downsample=[false,true,true]:时间轴也有 4 倍压缩——同一套 VAE 还能编解码视频帧,这是 Qwen-Image 系列的"视频基因"latents_mean/latents_std:一组标定常数,采样前后必须用它做归一化/反归一化,保证潜码数值分布稳定
权重仅约 254 MB,是三大组件里最"轻"的一个,却直接决定最终画质。
⏱️ 调度器:为什么只要 4 步就能出图?
scheduler/scheduler_config.json 使用FlowMatchEulerDiscreteScheduler:
shift=3.0且use_dynamic_shifting=false:静态位移轨迹,sigmas 为[1.0, 0.9, 0.75, 0.5, 0.0]- 这套轨迹来自DMD2 蒸馏:学生模型把原本上百步的去噪路径"压缩"成 4 步,同时把 CFG 4.0 的引导效果内化进权重
所以推理只需num_inference_steps=4。实测 M5 Max 上 1024×1024 出图约 83 秒(README.md 数据)。
⚠️ 参数避坑清单:4 个最容易设置错的地方
- 步数必须为 4,且
true_cfg_scale=1.0——再叠加 CFG 等于双重引导,还会白白多算一倍 - 不要换动态 shift 调度,学生模型只在静态 shift-3 轨迹上蒸馏过,替换会明显降级
- 宽高必须能被 16 整除(官方在 1024×1024 验证)
- M5 级 GPU + mlx-swift ≤ 0.31.6:1024² 渲染可能命中 split-K GEMM 的 NaN 缺陷,出图前先验证(详见 README.md 的说明)
🚀 如何获取与快速上手
git clone https://gitcode.com/hf_mirrors/mlx-community/Qwen-Image-Flash-bf16仓库权重与上游字节级一致,专为 MLX / MLX-Swift 直接消费 diffusers 布局的 safetensors 而打包,加载时自动完成键名清洗与卷积布局转换。Swift 侧典型调用:
let response = try await package.run(T2IRequest( prompt: "A red fox in a snowy pine forest at golden hour", width: 1024, height: 1024, seed: 42)) as! T2IResponse // 4 步后 response.image 即为 1024×1024 的 PNG📜 许可与来源
- 许可证:NVIDIA Open Model License(见 NOTICE),另附 Apache License 2.0(LICENSE)
- 允许商用、衍生与再分发,但再分发时必须随附协议与 NOTICE 文件
- 模型本体是 nvidia/Qwen-Image-Flash 的 DMD2 四步蒸馏版(基于 Qwen-Image),本仓库只是面向 MLX 生态的 bf16 快照
【免费下载链接】Qwen-Image-Flash-bf16
相关推荐
ok-ww 快速上手指南:鸣潮后台自动战斗、4C 声骸刷取与一键日常实战
ok ww 快速上手指南:鸣潮后台自动战斗、4C 声骸刷取与一键日常实战 ok ww 是基于图像识别的鸣潮自动化工具,不读内存、不改文件,装好任务后由它替你登录
GetQzonehistory 完整教程:一次扫码导出全部QQ空间历史说说
GetQzonehistory 完整教程:一次扫码导出全部QQ空间历史说说 GetQzonehistory 是一个 QQ 空间历史说说导出工具:扫码登录一次后,
Qwen-Image-Flash-bf16商用合规指南:NVIDIA Open Model License与Apache 2.0许可条款全解读
Qwen Image Flash bf16商用合规指南:NVIDIA Open Model License与Apache 2.0许可条款全解读 Qwen Ima
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考