Views
No views yet
alignkit crate of the
coremlit workspace.softmax → log(eps = 2^-149). That epsilon is
below fp16's smallest subnormal (2^-24), so on the Apple Neural Engine the guard rounds
to zero and log(0) saturates to ≈ −45440, corrupting 16.7% of emission cells and
shifting word timings by up to 881 ms — silently, since the values are still finite and
negative. (A naive torch.log_softmax re-export reproduces the defect under coremltools
9.0.) This conversion uses an explicitly fused x − logsumexp(x) tail: the emissions
are exact log-probabilities on CPU and bounded (min > −100) on every placement.base960h_aligner.{mlpackage,mlmodelc} — encoder weights byte-identical to the
established conversion (weight.bin sha256 de51193f…); only the tail graph changed.CHECKSUMS.sha256 — per-file digests.[1, T, 29]
log-probabilities, 320-sample hop.logsumexp ≈ 0) and the fastest placement
at this model size — the recommended default.2^-24);
emissions min > −100 on ANE (−23.81) and GPU (−28.36) with real speech; word-timing parity
vs an independent ONNX implementation: median 0.0 ms on unpadded 60 s audio (367/372
boundaries within one 20 ms frame). Toolchain pinned: coremltools 9.0, torch/torchaudio
2.5.1, python 3.11.15.WAV2VEC2_ASR_BASE_960H pipeline. This is a derivative
conversion: identical weights, corrected graph numerics.