Instructions to use Rreitsma/minimax-music3-ensemble-blocks with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use Rreitsma/minimax-music3-ensemble-blocks with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("Rreitsma/minimax-music3-ensemble-blocks", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
import torch
from diffusers import DiffusionPipeline
# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("Rreitsma/minimax-music3-ensemble-blocks", dtype=torch.bfloat16, device_map="cuda")
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(prompt).images[0]MiniMax Music 3 β Ensemble Blocks
Render K variations of one prompt in a single batched pass β the marginal variation is nearly free.
The MiniMax Music 3 autoregressive stage reads the full 8B language model plus seven 0.6B depth-decoder passes (~23GB of weights) for every audio frame at 25fps: it is memory-bandwidth bound, and that read costs the same whether it serves one variation or four. These blocks decode K variations in lockstep (batch 2K rows), sharing the dominant cost. The flow-matching stage batches across variations too (grouped by exact frame count β no padding).
Measured with THIS block on an RTX 4090 (24GB, bf16, diffusers main, warm, 15s songs, same prompt/seeds):
| variations | total | per variation |
|---|---|---|
| 1 | 28.9s | 28.9s |
| 2 | 34.9s | 17.5s (1.65x) |
| 3 | 41.5s | 13.8s (2.1x) |
Each additional variation costs ~6s on a ~29s base β the marginal take is ~21% of a solo render. Discussion: diffusers#14486.
Usage
import torch
from diffusers.modular_pipelines import ModularPipelineBlocks, ComponentsManager
blocks = ModularPipelineBlocks.from_pretrained(
"Rreitsma/minimax-music3-ensemble-blocks", trust_remote_code=True
)
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")
pipe = blocks.init_pipeline("MiniMaxAI/MiniMax-Music3", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
out = pipe(
prompt="Genre: acoustic pop. BPM: 96. Key: C major. Warm female vocals, fingerpicked guitar.",
lyrics="[verse]\nMorning light filtering through the pine\n[chorus]\nSoftly the world begins to breathe",
audio_duration=60.0,
num_variations=3,
seed=7, # variation i uses seed + i; omit for random seeds
output="audios",
)
# out: list of float32 stereo waveforms, one per variation, 44.1kHz, (channels, samples)
Notes & honest caveats
- Quality: every variation's math is row-independent and draws from its own seeded generator using the reference sampling recipe β identical in distribution to solo generation. Batched kernels differ from solo kernels at the floating-point-ulp level, so a given seed may take a different (equally valid) trajectory than it would solo.
- Guidance is standard CFG with the checkpoint's guidance scale. For other guidance techniques, use the default MiniMax Music 3 blocks (with the guider) instead.
- VRAM scales with
duration x num_variations(KV cache). On 24GB: 3 variations up to ~1 minute is comfortable; use fewer variations for longer songs. An early EOS in one variation freezes its rows at no cost. - Deliberately plain eager PyTorch β no torch.compile, no extra dependencies β so it runs wherever diffusers runs. A further-optimized local studio (compiled AR decode, ~2.9x total on a 4090) lives at minimax-music3-studio.
License & credits
Apache-2.0 (portions derived from the diffusers MiniMax Music 3 modular pipeline, Copyright 2026 The MiniMax Team and The HuggingFace Team). Model weights are MiniMax's, CC BY 4.0, fetched separately from MiniMaxAI/MiniMax-Music3.
Built with Claude (Fable 5 Max) following a request from the diffusers maintainers in #14486.
- Downloads last month
- -