Primal VAE — CMF

Ostris Primal VAE — a deterministic convolutional autoencoder that compresses an image 2× spatially into 1 or 2 channels whose values are already unit normal (no scaling or shift factor; patchify by 4 for the 16- or 32-channel 8× layout of the Flux.1 / Flux.2 VAEs) — packaged as single CMF files. They run with cortiq, a Rust inference engine with no Python and no ML framework: the whole encode or decode runs on the GPU (Vulkan/DX12 on NVIDIA, AMD and Intel, Metal on Apple silicon) in one submission, or on the CPU.

English · Русский · 中文

Quick start

cargo install cortiq-cli
hf download infosave/primal_vae-cmf primal_vae_2x2.cmf --local-dir .
cortiq vae --model primal_vae_2x2.cmf --mode roundtrip --input photo.png --output recon.png

Use cortiq 0.8.51 or later; prebuilt binaries for Linux, macOS and Windows are on the releases page. Image sides must be multiples of 16.

Files

file latent patch 4 = size PSNR on the card's three images
primal_vae_2x2.cmf 2 channels at 2× 32 ch at 8× (Flux.2 layout) 160,948,224 B (161 MB) 37.5 / 27.1 / 27.4 dB
primal_vae_2x1.cmf 1 channel at 2× 16 ch at 8× (Flux.1 layout) 160,944,128 B (161 MB) 32.1 / 22.1 / 21.3 dB

Both are the same 80 M-parameter network with 16-bit kernels (biases and norm weights exact). Against the original float32 model in PyTorch on the same images, the reconstructions have the same PSNR to 0.01 dB and the latents differ by at most 0.14 % of their range.

Usage

cortiq vae --model primal_vae_2x2.cmf --mode encode --input photo.png --output latent.npy   # [1, 2, H/2, W/2]
cortiq vae --model primal_vae_2x2.cmf --mode decode --input latent.npy --output image.png
cortiq vae --model primal_vae_2x2.cmf --mode roundtrip --input photo.png --output recon.png  # prints the PSNR

The latent is a float32 .npy of shape [1, C, H/2, W/2], ~N(0, 1) per image and channel — feed it to a diffusion model as it is, or patchify by 4 (pixel_unshuffle) for the 8× token grid. decode accepts [1, C, h, w] or [C, h, w]; the image size is the latent's ×2. CMF_GPU=0 forces the CPU.

Performance

cortiq 0.8.51, cortiq vae (weights loaded once, the GPU run is one submission):

device 512×512 encode / decode 1024×1024 encode / decode
NVIDIA A40 (Vulkan) 0.20 s / 0.08 s 0.40 s / 0.29 s
Apple M4 (Metal) 0.34 s / 0.32 s 1.27 s / 1.23 s
CPU (A40 host) 3.9 s / 3.6 s 13.3 s / 12.6 s

Verify

sha256sum -c primal_vae_2x2.cmf.sha256
2e81d119d8985bab6ed03f707992d44c0ce23e5e12d096766160adc6d5b4dc8d  primal_vae_2x2.cmf
979db68b6902aba6906d442f2034b0b8846e9e08f848f85c1d5cd065b5157eb9  primal_vae_2x1.cmf

Reproduce

hf download ostris/primal_vae --local-dir primal_vae
cortiq convert --model primal_vae/primal_vae_2x2.safetensors --output primal_vae_2x2.cmf
cortiq convert --model primal_vae/primal_vae_2x1.safetensors --output primal_vae_2x1.cmf

License

Apache-2.0, as the original release; the weights were converted to CMF by cortiq.


Документация на русском

Primal VAE от Ostris — детерминированный свёрточный автоэнкодер: сжимает изображение в 2 раза по сторонам до 1 или 2 каналов, распределённых как N(0, 1) (без scaling/shift; patchify 4 даёт 16- или 32-канальную раскладку 8× VAE Flux.1 / Flux.2). Здесь он упакован в одиночные файлы CMF для cortiq — движка на Rust без Python: кодирование и декодирование целиком идут на GPU (Vulkan/DX12, Metal) одной отправкой, либо на CPU.

cargo install cortiq-cli
hf download infosave/primal_vae-cmf primal_vae_2x2.cmf --local-dir .
cortiq vae --model primal_vae_2x2.cmf --mode roundtrip --input photo.png --output recon.png

Нужен cortiq 0.8.51 или новее. Стороны картинки кратны 16.

файл латент размер PSNR на трёх картинках карточки
primal_vae_2x2.cmf 2 канала, 2× 160,948,224 B (161 MB) 37,5 / 27,1 / 27,4 дБ
primal_vae_2x1.cmf 1 канал, 2× 160,944,128 B (161 MB) 32,1 / 22,1 / 21,3 дБ

Ядра свёрток 16-битные, смещения и веса норм точные; против исходной модели float32 в PyTorch PSNR совпадает до 0,01 дБ, латенты отличаются не более чем на 0,14 % диапазона. --mode encode пишет латент [1, C, H/2, W/2] в .npy, --mode decode собирает картинку обратно, roundtrip печатает PSNR.

Скорость (cortiq 0.8.51): кодирование / декодирование 1024×1024 — 0.40 / 0.29 с на NVIDIA A40 (Vulkan), 1.27 / 1.23 с на Apple M4 (Metal), около 13 с на CPU.


中文说明

Ostris Primal VAE 是一个确定性卷积自编码器: 把图像在空间上压缩 2 倍,得到 1 或 2 个通道、本身即服从 N(0, 1) 的潜变量(无需 scaling/shift;按 4 做 patchify 即得到 Flux.1 / Flux.2 VAE 的 16 / 32 通道 8× 布局)。 这里打包为单个 CMF 文件,由 Rust 推理引擎 cortiq 运行(无 Python):整个编码或解码在 GPU 上一次提交完成(Vulkan/DX12、Metal), 也可在 CPU 上运行。

cargo install cortiq-cli
hf download infosave/primal_vae-cmf primal_vae_2x2.cmf --local-dir .
cortiq vae --model primal_vae_2x2.cmf --mode roundtrip --input photo.png --output recon.png

需要 cortiq 0.8.51 或更高版本,图像边长须为 16 的倍数。

文件 潜变量 大小 卡片三张图的 PSNR
primal_vae_2x2.cmf 2 通道,2× 160,948,224 B (161 MB) 37.5 / 27.1 / 27.4 dB
primal_vae_2x1.cmf 1 通道,2× 160,944,128 B (161 MB) 32.1 / 22.1 / 21.3 dB

卷积核为 16 位,偏置与归一化权重保持精确;与 PyTorch 中的原始 float32 模型相比, PSNR 相差不超过 0.01 dB,潜变量差异不超过其范围的 0.14%。

速度(cortiq 0.8.51):1024×1024 编码 / 解码在 NVIDIA A40(Vulkan)上为 0.40 / 0.29 s, 在 Apple M4(Metal)上为 1.27 / 1.23 s,CPU 约 13 s。

Downloads last month
10
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for infosave/primal_vae-cmf

Quantized
(1)
this model