Views
No views yet
Capabilities (from upstream): character animation from a reference image + driving video, cross-identity character replacement, zero-shot animal-driving, end-to-end and pose-rendered driving, and (experimental) multi-reference. Image output isnum_frames == 1.
model/1/fsdp2_rank_0000_checkpoint.pt, an FSDP2/SAT checkpoint) was key-remapped to the SCAIL2Model parameter naming using the upstream convert.py contract (fused query_key_value→q/k/v, key_value→k/v, clip_feature_key_value_list→k_img/v_img), cast fp32 → bf16, then pre-quantized to group-wise-affine Q4 on disk → dit.safetensors. The attention (q/k/v/o + I2V k_img/v_img) and FFN (ffn.0/ffn.2) Linears are packed (weight u32 codes + scales + biases via MLX quantize, byte-equal to nn.quantize, group size 64); the patch/text/time/image embeddings, norms, and output head stay dense bf16. A config.json quantization block marks the snapshot so the loader builds the quantized Linears directly from the packs (no dense bf16 materialized at load). Bit-faithful key remap (987 source keys → 1307 model keys; exact key+shape match against SCAIL2Model.from_config(config-14b.json)).Wan2.1_VAE.pth, the stock Wan2.1 z16 VAE) → vae.safetensors (f32, channels-last conv transpose, keys unchanged — the sanitize_wan_vae_weights contract shared with Bernini/wan). Loaded by mlx_gen_wan::WanVae.umt5-xxl/models_t5_umt5-xxl-enc-bf16.pth, stock UMT5-XXL) → t5_encoder.safetensors (bf16, sole rename .ffn.gate.0.→.ffn.gate_proj.). Loaded by mlx_gen_wan::Umt5Encoder with tokenizer.json.models_clip_...onlyvisual.pth, open-CLIP XLM-RoBERTa ViT-H/14) → clip.safetensors (f32, de-prefixed visual.* keys). Loaded by mlx_gen_scail2::ScailClip (32-layer visual tower, use_31_block penultimate features).| file | source | loader | notes |
|---|---|---|---|
dit.safetensors | converted | Scail2Dit | SCAIL-2 14B DiT, Q4 packed (attn + FFN) + dense bf16 (embeds/norms/head), ~8.9 GB |
vae.safetensors | converted | WanVae | Wan2.1 z16 VAE, f32, stride (4,8,8) (~0.5 GB) |
t5_encoder.safetensors | converted | Umt5Encoder | UMT5-XXL encoder, bf16 (~11 GB) |
clip.safetensors | converted | ScailClip | open-CLIP ViT-H/14 visual tower, f32, 1280-dim (~2.5 GB) |
tokenizer.json | upstream, stock | load_tokenizer | UMT5-XXL HF tokenizer (root copy) |
config.json | upstream configs/config-14b.json + quantization block | Scail2Config | model_type: i2v, dim 5120, ffn 13824, 40 layers/heads, in_dim 20, mask_dim 28, out_dim 16; quantization: {bits 4, group_size 64} |
bias-aware-dpo-lora.pt | upstream, stock | mlx_gen_scail2 (sc-5451) | optional Bias-Aware DPO refinement LoRA |
Wan2.1_VAE.pth, umt5-xxl/models_t5_...pth, models_clip_...onlyvisual.pth) have been pruned — they are reproducible from the upstream release and the Rust loaders never used them.replace_flag flips the reference H-shift, toggling animation vs. replacement). The reference image is encoded by the CLIP visual tower and injected via Wan-I2V image cross-attention. Sampling is plain CFG (guide 5.0), flow-matching UniPC/DPM++.