lato.2_mrp_mlx/lato_mlx
John d48864033e V-VAE encoder running on the real checkpoint
102/102 encoder params load with 0 missing and 0 unmapped. A synthetic voxelised
sphere shell (16,934 voxels) encodes to 56 latent voxels in 135ms on m3ultra, and the
latent comes out mean +0.05 / std 0.92 - the approximately unit-normal distribution a
KL-trained VAE should produce, which is decent evidence the graph and the sparse conv
path are right.

Architecture is inferred from tensor shapes, not constructor defaults: upstream
defaults latent_dim to 8 but the released weights say 32, and attn_mode/pe_mode
defaults are likewise overridden by the trained config. infer_config() reads it off
the checkpoint.

Also added SparseDownsample. Upstream's docstring says average pooling but the code
passes reduce='amax' - following the code.

Kernel orientation: tried latent statistics as a cheap discriminator and it does NOT
work. The flip is not a no-op (max delta 3.53) but both orientations give a plausible
near-unit-normal latent (std 0.919 vs 0.945). Recorded as a negative result; it needs
the decoder and reconstruction quality to settle.
2026-08-02 10:22:13 +10:00
..
models V-VAE encoder running on the real checkpoint 2026-08-02 10:22:13 +10:00
sparse V-VAE encoder running on the real checkpoint 2026-08-02 10:22:13 +10:00
__init__.py MLX sparse core: SubMConv3d + SparseTensor + weight converter 2026-08-02 10:04:24 +10:00
convert.py MLX sparse core: SubMConv3d + SparseTensor + weight converter 2026-08-02 10:04:24 +10:00