--- license: apache-2.0 library_name: mlx tags: - mlx - mlx-swift - super-resolution - image-upscaling - diffusion - quantized - apple-silicon pipeline_tag: image-to-image --- # SeedVR2-3B (MLX-Swift) — int8 **int8-quantized** MLX-Swift weights for **SeedVR2-3B** (ByteDance, ICLR 2026) — one-step diffusion **super-resolution**. The **on-device** variant: ~half the size, near-lossless. For the [`seedvr2-mlx-swift`](https://github.com/xocialize/seedvr2-mlx-swift) package (MLXEngine / ForgeUpscaler). fp16 base: [`SeedVR2-3B-mlx`](https://huggingface.co/mlx-community/SeedVR2-3B-mlx). - **Quantization:** transformer DiT Linears int8, group size 64 (the small `vid_in.proj` and the VAE are kept fp16). Declared in `config.json` (`"quantization": {"bits": 8, "group_size": 64}`); the loader applies it automatically. - **Files:** `transformer.safetensors` (int8, **~3.9 GB** vs 7.9 GB fp16) · `vae.safetensors` (fp16) · `pos_emb.safetensors` · `config.json`. - **Quality:** int8 `t_out` cosine vs fp16 = **0.9999749** (near-lossless; int4 by contrast degrades this model to ~22.7 dB — use int8 on-device). Reload round-trip cosine **1.0**. ## Usage ```swift import SeedVR2MLX let upscaler = try SeedVR2Upscaler(directory: weightsDir) // detects int8 from config, applies quantize on load let out = upscaler.upscale(processedImage: img, seed: 42) ``` ## Provenance & license **ByteDance Seed** (*SeedVR2*, ICLR 2026, [ByteDance-Seed/SeedVR](https://github.com/ByteDance-Seed/SeedVR), **Apache-2.0**) → fp16 [`numz/SeedVR2_comfyUI`](https://huggingface.co/numz/SeedVR2_comfyUI) → MLX ref [`filipstrand/mflux`](https://github.com/filipstrand/mflux) → MLX-Swift port + int8 conversion by **MVS Collective (xocialize)**. Format/precision-converted weights (not a new model); Apache-2.0 applies.