Repository navigation
QVAC-26894 feat(audiogen): add experimental full MiniMax Core ML replay - #364
Merged
Merged
Conversation
Review StatusCurrent Status: ✅ APPROVED |
GustavoA1604
approved these changes
Oct 23, 2026
mexxik
approved these changes
Oct 23, 2026
This was referenced Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MiniMax-Music3 has an experimental full Core ML replay route in C++/Objective-C++. The LM, depth decoder, feedback, conditioner, DiT and vocoder use the native Core ML API, with one selected configuration applied to all 90 resident programs:
CPU_ONLY,CPU_AND_GPU,CPU_AND_NEorALL.The route is explicitly compiled with
MM3_ANE_VALIDATION. Standard builds keep their existing native execution and optional conditioner sidecar. The replay writes stage timings separately from model loading, generated WAV/codes/latents, and initial AR probes.The exporter preserves the original F16 weights, uses stable RMS/SiLU and an unscaled gated down projection, and supports separate conversion profiles and two-block LM experiments. Compiled vocoder reuse now validates the requested precision; mismatched or unknown cached precision fails visibly. Both README levels and the validation guide document build commands, profile composition and numerical limitations.
Measured on the same caption, original weights, seed 7, eight flow steps and 150 AR frames, producing 5.99-second stereo PCM16 WAVs at 44.1 kHz:
Each configuration used a fresh process and its first generation, sequentially per Mac; OS/file/compiler caches could be reused. macOS and SDK versions differ between Macs. The final M3 CPU_ONLY run was repeated after disk-cache cleanup; the earlier disk-full attempt is excluded. The detailed measurements are checked into
engines/audiogen/docs/minimax-coreml-20261022.csv.Validation:
pr-self-reviewcompleted with the confirmed vocoder-cache finding fixed and no new High/Medium findings in the fresh pass. vcpkg baselines are preserved.Remaining experimental limitations: CPU_ONLY and the ANE configurations fail the initial numerical comparison. Full waveform equivalence and perceptual quality are unconfirmed. M1 GPU/ANE generation remains slow. The M3 CPU_AND_NE and ALL runs emitted ANE compiler diagnostics after generation; the permitted compute-unit configuration alone does not prove actual ANE placement or exclusive GPU execution.
Monorepo validation: On PR Trigger (nx), AudioGen. The workflow selects AudioGen prebuilds, C++ tests and desktop integration from the exact monorepo source commit.
All three CI branches use
QVAC-26894/minimax-full-coreml-validation:6e3f0d76aa9c7dfa294cd66bcd5ce73580d0a3c3(this PR).c45cc9cda3f25fc155bd106269d66d3a0e485cfa;speech-cppversion2026-10-21#3pins that Fabric commit and its verified archive SHA512.02171c091522f01a6ac657af32481a1bf0fa9cbf; AudioGen selects the registry branch and exact port version, preserving everyvcpkg-configuration.jsonbaseline.Registry and monorepo currently have CI branches; their PRs follow the dependency merge sequence.