File size: 2,075 Bytes
e4881a6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Provenance

## Exact checkpoint

- Creator: KandooAI / RunDiffusion
- Civitai model: Juggernaut XL (133005)
- Civitai version: Jugg_XI_Lightning_by_RD (920957)
- File: `juggernautXL_juggXILightningByRD.safetensors`
- Size: `7,105,348,616` bytes
- SHA-256: `609fde646e7fc60a259ad67351e02258ac7929a0a1f5040049dfec6a15f37b1a`
- Tensor validation: 2,515 tensors; no NaN or Infinity values

## Architecture configuration

The checkpoint is a single-file SDXL model. Only architecture configuration
and tokenizer assets were taken from the creator reference repository:

- Repository: `RunDiffusion/Juggernaut-XL-Lightning`
- Revision: `9c35e7ca1112b7e567ae7b24400b83935909916d`
- Config snapshot manifest SHA-256:
  `4b05f6a337bcdf1a319054b9ad4493021993aea6d2760c774b7944e865d59481`

All learned UNet, VAE, text encoder 1, and text encoder 2 tensors came from the
authenticated Civitai checkpoint above. No learned weights were copied from
the different checkpoint hosted in the reference repository.

## Reproducible conversion

- Apple converter: `apple/ml-stable-diffusion`
- Converter revision: `e12202c1f6405b83918b58a5d097cd61e3e1f702`
- LocalMuse wrappers: `Tools/CoreML/convert_sdxl_unet.py` and
  `Tools/CoreML/convert_sdxl_text_encoders.py`
- Resolution: 1024×1024 (`128×128` latent)
- UNet: 6-bit palettized, `SPLIT_EINSUM`, two chunks
- Text encoder 1: FP16
- Text encoder 2: 8-bit palettized
- VAE encoder/decoder: checkpoint-specific FP16 weights
- Minimum target: iOS 17

Conversion parity checks (PSNR): VAE decoder 106.3 dB, VAE encoder 101.5 dB,
FP16 Core ML UNet 47.4 dB, text encoder 1 78.9 dB, text encoder 2 75.4 dB.
All exceeded the 35 dB acceptance threshold. Every compiled component was
loaded sequentially with Core ML using `CPU_ONLY` after compilation.

## Tensor contracts

- UNet input: `[2, 4, 128, 128]`
- UNet output: `[2, 4, 128, 128]`
- VAE encoder input: `[1, 3, 1024, 1024]`
- VAE encoder output: `[1, 8, 128, 128]`
- VAE decoder input: `[1, 4, 128, 128]`
- VAE decoder output: `[1, 3, 1024, 1024]`
- Text encoder token input: `[1, 77]`