ERNIE-Image-Turbo ncnn 权重
这是 baidu/ERNIE-Image-Turbo 的 C++/ncnn FP32 部署模型,配套代码位于 everythingfornothing/ernie-image-ncnn-vulkan。模型包包含 Tokenizer、Text Encoder、36 层 DiT、VAE Decoder 和官方 seed=42 回归 latent。
主要能力
| 能力 | 说明 |
|---|---|
| C++ 文生图 | 串联 Tokenizer、Text Encoder、DiT、Scheduler、VAE 和 PNG 写出 |
| CPU / Vulkan | 同一套权重支持 ncnn CPU 与 Vulkan 后端 |
| 动态 Prompt | 按实际 token 数在运行时生成文本 RoPE、Attention Mask 和联合序列 |
| 动态分辨率 | 图片宽高可分别设置,并在运行时生成 latent、图像 token、RoPE 和 VAE shape |
| Turbo 加速 | 使用 ERNIE-Image-Turbo,按官方 FlowMatch 配置仅需 8 个去噪步骤 |
| 可重复生成 | 支持官方 seed=42 reference 模式和接受任意 seed 的 portable 模式 |
下载与运行
hf download Coderdw/ernie-image-ncnn-vulkan \
--local-dir models/ernie-image-turbo
./build/ernie_image_cli \
--model-dir models/ernie-image-turbo \
--device vulkan \
--gpu-index 0 \
--rng-mode portable \
--seed 123 \
--width 1376 \
--height 768 \
--prompt '一只黑白相间的中华田园犬在草地上奔跑' \
--output image.png
图片宽高默认为 1024×1024,必须为正数且均为 16 的倍数;动态分辨率使用 portable RNG。同一套权重已完整运行 1024×1024、1376×768、768×1376 和 528×784,并支持运行时动态文本长度。reference RNG 仅用于官方 1024×1024、seed=42 回归。
模型目录结构:
tokenizer/ tokenizer.json
text_encoder/ embedding 与 layers 0-24(见下方层编号说明)
dit/ frontend、layers 0-35 与 output head
vae/ decoder 与归一化常量
rng/ 官方 CUDA/BF16 seed=42 回归 latent
Text Encoder 层编号说明
官方 text_encoder/config.json 中的 num_hidden_layers 为 26,对应 Transformer Block layers.0–25。官方 Diffusers ErnieImagePipeline 在文本编码时启用 output_hidden_states=True,并按训练路径选择 outputs.hidden_states[-2] 作为 DiT 的文本条件;该边界对应 layers.24 的输出。
因此,本部署包包含 embedding 和 layers.0–24 共 25 个实际参与文生图 conditioning 的 Transformer Block。官方模型中的 layers.25 与末端 RMSNorm 位于所选 hidden-state 边界之后,不参与该生成路径,所以没有收入 ncnn 权重包。这是对官方 Pipeline 执行边界的复现,不是权重缺失或层编号错误。
当前模型包采用 FP32,约为 43 GiB,固定 batch=1 和 Turbo 8-step,不包含 Prompt Enhancer。请使用配套代码仓库内置的 ncnn 源码,其中 Vulkan GELU 与 SDPA mask 行为属于已验证运行契约。
这些文件转换自 baidu/ERNIE-Image-Turbo revision bc68c81e2a1730a394d5fc9fae70713dee940140,遵循 Apache-2.0 许可证。
Model tree for Coderdw/ernie-image-ncnn-vulkan
Base model
baidu/ERNIE-Image-Turbo