
人工智能大模型本地部署推理引擎媒体生成【免费下载链接】stable-diffusion.cppDiffusion model(SD,Flux,Wan,Qwen Image,Z-Image,...) inference in pure C/C项目地址https://gitcode.com/GitHub_Trending/st/stable-diffusion.cpp点击查看免费下载本篇技术指南聚焦 stable-diffusion.cpp 对MiniT2I一种 Diffusion Transformer 架构的文生图模型的完整支持链路从权重下载、命令行推理参数到源码中 MiniT2IConfig 自动检测、MMJiT 主干结构与 flan-t5-large 文本编码的实现细节。读完本文你将掌握如何在本项目的 examples/cli 命令行工具中运行 MiniT2I并能从源码层面理解其双流 Transformer flow matching的推理机制。MiniT2I 在 stable-diffusion.cpp 中的定位MiniT2I 是 stable-diffusion.cpp 支持的众多纯 C/C 推理模型之一官方用法文档 docs/minit2i.md 明确指出MiniT2I uses a MiniT2I diffusion transformer andgoogle/flan-t5-largeas the text encoder.即整个生成管线由两个核心部分组成扩散主干Diffusion TransformerMiniT2I 官方发布的minit2i-b-16检查点负责图像 token 的逐步去噪文本编码器Text Encodergoogle/flan-t5-large负责把自然语言提示词编码为条件向量指导扩散过程。从源码结构看MiniT2I 被归入 DiTDiffusion Transformer模型家族。src/model.h 中的sd_version_is_minit2i()判断函数以及sd_version_is_dit()列表src/model.h均将VERSION_MINIT2I纳入 DiT 体系在 src/stable-diffusion.cpp 的预测类型表中MiniT2I 对应名为minit2i_flow的 flow matching 预测模式与 SD3/Flux 的 flow 模式并列说明其训练目标属于流匹配flow matching而非传统的 epsilon 预测。权重下载两个文件缺一不可按照 docs/minit2i.md 的Download weights一节需要准备两部分权重组件来源需要的文件MiniT2I 扩散模型MiniT2I/MiniT2I仓库的minit2i-b-16/transformer目录diffusion_pytorch_model.safetensorsflan-t5-large 文本编码器google/flan-t5-large仓库model.safetensors下载后建议按如下目录组织与下文命令行示例保持一致models/ ├── minit2i/ │ └── diffusion_pytorch_model.safetensors └── flan-t5-large/ └── model.safetensors需要特别说明的是当前文档中的命令行示例直接以safetensors原始权重作为输入。stable-diffusion.cpp 的模型加载系统src/model_loader.cpp、src/model_io/safetensors_io.cpp支持直接读取这类权重若你希望转成 GGUF 使用可参考 docs/quantization_and_gguf.md 了解量化与格式转换流程但 MiniT2I 直接加载 safetensors 即可运行。另外文本编码器是必需的。在 src/conditioning/conditioner.hpp 的MiniT2IConditioner构造函数中源码会扫描权重中是否存在text_encoders.t5xxl前缀的张量若找不到 T5 编码器会打印IMPORTANT NOTICE: No MiniT2I T5 text encoder provided, cannot process prompts!并退化为零向量条件——此时生成的图片将完全失去语义控制。因此请务必同时下载 flan-t5-large。命令行推理Metal 与 CUDA 两套实战命令Mac Metal 后端原文档给出的 Metal 示例适用于 Apple Silicon Mac./bin/sd-cli \ --backend metal \ --diffusion-model ../models/minit2i/diffusion_pytorch_model.safetensors \ --t5xxl ../models/flan-t5-large/model.safetensors \ --prompt a cat \ --steps 100 \ --cfg-scale 6 \ --width 512 \ --height 512 \ --seed 42 \ --sampling-method euler \ --rng cpu \ --output minit2i_metal.png \ --threads 8CUDA 后端 扩散闪存注意力原文档给出的 CUDA 示例NVIDIA GPU开启--diffusion-fa以启用 diffusion flash attention./bin/sd-cli \ --diffusion-model ../models/minit2i/diffusion_pytorch_model.safetensors \ --t5xxl ../models/flan-t5-large/model.safetensors \ --prompt a cat \ --steps 100 \ --cfg-scale 6 \ --width 512 \ --height 512 \ --seed 42 \ --sampling-method euler \ --diffusion-fa \ --output minit2i_cuda.png命令中涉及的参数含义如下参数作用说明--backend metal选择 Metal 后端仅 macOS 可用CUDA 示例不写该参数时默认使用 CUDA 后端--diffusion-model指定 MiniT2I 扩散模型权重指向diffusion_pytorch_model.safetensors--t5xxl指定 T5 文本编码器权重指向 flan-t5-large 的model.safetensors对应源码中的MiniT2IConditioner--prompt生成提示词示例为a cat--steps采样步数示例为 100对应MiniT2IConfig::n_T 100的训练默认步数--cfg-scaleClassifier-Free Guidance 强度示例为 6CFG 区间由cfg_interval_start/cfg_interval_end默认 0.0~1.0控制--width/--height输出图像尺寸示例为 512×512与MiniT2IConfig::image_size 512一致--seed随机种子示例为 42保证可复现--sampling-method euler采样器示例使用 Euler--rng cpu随机数发生器Metal 示例指定为 CPU 端 RNG--diffusion-fa开启 diffusion 阶段的 flash attentionCUDA 示例用于加速注意力计算--output输出图片路径示例分别为minit2i_metal.png/minit2i_cuda.png--threads 8CPU 线程数Metal 示例设置为 8--t5xxl参数名虽然带着 xxl 字样但在 MiniT2I 场景中它实际加载的是 flan-t5-large 权重——源码MiniT2IConditioner内部使用T5Runner并以text_encoders.t5xxl.transformer为前缀加载张量src/conditioning/conditioner.hpp说明该参数是项目中面向 T5 家族文本编码器的通用入口不限定模型尺寸。源码级原理从配置自动检测到 MMJiT 主干配置自动检测无需手动指定超参stable-diffusion.cpp 为 MiniT2I 实现了从权重自动推断模型配置的能力。src/model/diffusion/minit2i.hpp 中的MiniT2IConfig::detect_from_weights()会扫描权重张量名来还原网络结构由img_embedder.proj1.weight/proj2.weight推断patch_size、in_channels、pca_channels、hidden_size由txt_embedder.weight推断txt_input_size1024与txt_hidden_size768由double_blocks.N.img_qkv.weight推断num_heads768 维时 12 头、1248 维时 24 头与head_dim64 或 52通过遍历double_blocks./txt_preamble_blocks.编号统计depth_double默认 17与txt_preamble_depth默认 2的层数。该结构体的默认值完整对应minit2i-b-16检查点image_size512、patch_size16、in_channels3、txt_input_size1024、hidden_size768、txt_hidden_size768、cond_vec_size768、depth_double17、txt_preamble_depth2、num_heads12、head_dim64、mlp_ratio≈2.6667、pca_channels128、prompt_length256、n_T100src/model/diffusion/minit2i.hpp。从这些默认值可以确认MiniT2I 是一个 patch 化16×16的 DiT文本侧与图像侧共享 768 维隐藏空间属于中小规模的轻量文生图模型。MMJiT 主干双流 Transformer 联合注意力模型主干类名为MMJiTsrc/model/diffusion/minit2i.hpp其结构自上而下包括BottleneckPatchEmbed图像嵌入器先用patch_size步长的卷积把图像切成 patch 并降维到pca_channels128再用 1×1 卷积投影到hidden_sizesrc/model/diffusion/minit2i.hpptxt_embedder文本嵌入器将 T5 输出1024 维线性投影到 768 维t_embedder/pooled_embedder时间步与全局条件TimestepEmbedder用正弦时间步嵌入 SiLU MLP 生成条件向量src/model/diffusion/minit2i.hpptxt_preamble_blocks2 层纯文本 Transformer在图文融合前对文本 token 进行预编码内部采用 RMSNorm Q/K 归一化 RoPE 的注意力结构PlainTextTransformerBlocksrc/model/diffusion/minit2i.hppdouble_blocks17 层双流 DiT 块图像流与文本流分别过 QKV 投影后将 Q/K/V 拼接成联合序列执行联合注意力joint attention再把输出切回两流分别过残差 SwiGLU MLPDoubleStreamDiTBlocksrc/model/diffusion/minit2i.hpp。这种双流输入、联合注意力、输出分流的设计与 SD3/Flux 等 MMDiT 思路同源FinalLayerDiT::unpatchify将最后的联合表示切片出图像部分线性投影后重新拼回像素空间src/model/diffusion/minit2i.hpp。值得注意的是MMJiT::forward中每个 preamble 块和 double 块都调用了sd::ggml_graph_cut::mark_graph_cut做图切分标记src/model/diffusion/minit2i.hpp这意味着 MiniT2I 的深层网络可以借助 layer split 机制在多层设备/多后端间切分执行属于项目图优化能力的直接受益者。三种位置编码与缓存机制MiniT2I 在推理时需要三种位置编码src/model/diffusion/minit2i.hpppos_embed图像侧 2D sincos 位置嵌入按网格坐标生成make_2d_sincos_pos_embedtxt_pe文本侧 RoPE 编码make_text_ropejoint_pe联合注意力用由文本 RoPE 与图像 2D 轴频率 RoPEmake_vision_rope拼接而成。MiniT2IRunner::ensure_position_cache()以img_side × txt_len为 key 缓存这组嵌入只要图像尺寸与文本长度不变化位置编码只计算一次并常驻显存/内存标记为GGML_BACKEND_BUFFER_USAGE_WEIGHTS显著减少重复计算。条件编码与掩码机制文本条件由 src/conditioning/conditioner.hpp 的MiniT2IConditioner负责使用T5UniGramTokenizer对提示词分词再交给前缀为text_encoders.t5xxl.transformer的T5Runner前向计算得到 1024 维 hidden states所有序列统一 pad 到prompt_length 256真实 token 的掩码为 1.0padding 位置为 0.0src/conditioning/conditioner.hpp掩码同时作为c_vector传入扩散模型在MMJiT::apply_text_mask()中padding 位置会被替换为可学习的mask_tokensrc/model/diffusion/minit2i.hpp并在 T5 侧将 padding 位置的注意力分数置为-HUGE_VALF确保编码器只关注真实文本。构建与调度在 src/pipeline/model_builders.cpp 中MiniT2I 版本被组装为MiniT2IConditioner文本编码与MiniT2IRunner扩散主干权重前缀model.diffusion_model.model.net的组合MiniT2IRunner::build_graph以MINIT2I_GRAPH_SIZE 196608的图容量构建前向计算图src/model/diffusion/minit2i.hpp。去噪循环使用minit2i_flow预测模式配合--sampling-method euler等采样器完成从随机噪声到图像的生成。快速上手建议按上文目录下载两个 safetensors 权重文件从源码构建sd-cli构建方式参考 examples/cli/README.md 与根目录 README.md在 Apple Silicon Mac 上使用 Metal 示例在 NVIDIA GPU 上使用 CUDA 示例可加--diffusion-fa加速验证输出minit2i_metal.png/minit2i_cuda.png是否与提示词语义一致——若图像完全随机优先检查--t5xxl权重是否正确加载。深入阅读官方用法文档docs/minit2i.md扩散主干实现src/model/diffusion/minit2i.hpp文本编码器实现src/conditioning/conditioner.hpp模型装配逻辑src/pipeline/model_builders.cpp模型版本与预测模式定义src/model.h、src/stable-diffusion.cpp命令行工具examples/cli/README.md相关后端与加速说明docs/backend.md、docs/sd3.md同属 flow matching DiT 家族赞分享人工智能大模型本地部署推理引擎媒体生成【免费下载链接】stable-diffusion.cppDiffusion model(SD,Flux,Wan,Qwen Image,Z-Image,...) inference in pure C/C项目地址https://gitcode.com/GitHub_Trending/st/stable-diffusion.cpp点击查看免费下载相关推荐在 stable-diffusion.cpp 中部署 Stable Diffusion 3.5 Large权重下载、CLI 推理与 MMDiT 架构解析在 stable diffusion.cpp 中部署 Stable Diffusion 3.5 Large权重下载、CLI 推理与 MMDiT 架构解析 st人工智能大模型本地部署推理引擎媒体生成stable-diffusion.cpp 运行 ERNIE-ImageTurbo/标准版权重获取、CLI 推理参数与 4GB 显存实战指南stable diffusion.cpp 运行 ERNIE ImageTurbo/标准版权重获取、CLI 推理参数与 4GB 显存实战指南 本篇技术指南聚焦于人工智能大模型本地部署推理引擎媒体生成computer 项目性能基准解读computerd FUSE 挂载在元数据密集与大规模 I/O 场景下的实测数据computer 项目性能基准解读computerd FUSE 挂载在元数据密集与大规模 I/O 场景下的实测数据 导读 本篇文章围绕 docs/19_per人工智能大模型本地部署推理引擎媒体生成上一篇Sarama版本兼容性终极指南安全升级与生产环境维护的完整实践下一篇Proton-GE vs Valve Proton为什么硬核游戏玩家需要选择定制版本创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考