Skip to content

Model artefacts v2 — MLX

Choose a tag to compare

@nsaintot nsaintot released this 15 Aug 16:52
· 10 commits to main since this release
bf6738d

Every model artefact stemd loads, converted to safetensors for MLX, and one it
has retired.

file sha256 bytes
htdemucs.safetensors 339d267a7a6983a11eedbdc00413c602a65e9b9103f695fb5c2b2a481cd9d297 168,005,865
htdemucs_ft.safetensors 53f03b1ad4b4d211025a35da65460ba61a17547adf9c0544cad0ebcc8d7bbabb 672,024,519
bs_polarformer.safetensors 9e08a5e075204e893a4eb393ae64d47177c76f11a306686db1343d7cc7c468f6 102,201,832
bs_roformer_viperx.safetensors fa296577206144929917601636b65ccdc407b6e6c2f209e4312d9d2b7b975a8a 639,109,056

stemd pins those digests and re-checks them on every load, so a mismatch fails
the install rather than loading whatever the network returned.

Presets. Fast is htdemucs. Balanced is htdemucs_ft. Quality is
bs_polarformer for the vocals and htdemucs_ft's drums specialist for the
rest — so having Balanced installed leaves it 102 MB to fetch rather than 774.

bs_roformer_viperx was Quality's vocals half until BS PolarFormer replaced it.
It is retired rather than withdrawn: nothing in stemd loads it any more, and the
file stays so that a build pinning the digest above still installs, and so the
comparison in docs/evaluation.md stays reproducible. The two score the same on
MUSDB and run at the same speed; PolarFormer leaves 13.5 dB less voice in the
harmonics on electronic material, which no benchmark caught and a listening test
did. It is also a third the parameters, and a sixth the bytes.

Provenance

The two demucs artefacts are mlx-community/demucs-mlx,
byte-identical, mirrored here so the app depends on one release rather than on
an upstream that could move or disappear.

Neither RoFormer has an upstream: nobody publishes an MLX BS-RoFormer. Both are
converted by tools/export/convert_roformer.py with the architecture and config
from ZFTurbo/Music-Source-Separation-Training
bs_polarformer from ZFTurbo's model_bs_polarformer_float16.ckpt,
bs_roformer_viperx from viperx's model_bs_roformer_ep_317_sdr_12.9755.ckpt.
Tensor names and values are unchanged and nothing is transposed — only the
container differs.

The float16 is the checkpoint's and not the converter's: it is the only form
PolarFormer's weights are published in, which is why its 51.1M parameters land
in 102 MB where viperx's 159.8M float32 take 639. The float32 ONNX doing the
rounds is these same values widened.

None of these weights are covered by this repository's licence. demucs is
MIT; the two RoFormer checkpoints are ZFTurbo's and viperx's respectively, and
their terms are theirs to state.

models-v1 holds the retired TorchScript traces, which nothing loads any more.