--- tags: - lora - comfyui - music --- # MiniMax Music3 Reggae LoRA — ComfyUI-native keys (rank128, checkpoint-4000) Key-converted version of [bghira/minimax-music-suno-reggae-rank128](https://huggingface.co/bghira/minimax-music-suno-reggae-rank128) (`checkpoint-4000/pytorch_lora_weights.safetensors`) for direct use with ComfyUI's native MiniMax Music3 LoRA loading. The source checkpoint is a diffusers/PEFT-format LoRA with separate `to_q`/`to_k`/`to_v`/`to_out.0` projections. ComfyUI's `MiniMaxMusic3DiT` attention module (`comfy/ldm/minimax_music/dit.py`) uses a single fused `to_qkv` Linear instead, and `comfy/lora.py` has no diffusers-format key mapping or QKV-splitting logic for this architecture — so the original file's keys never match and none of the LoRA loads. This file renames/restructures the weights to ComfyUI's native key scheme: - `to_out.0.lora_A/B.weight` → `diffusion_model.diffusion_transformer.transformer.layers.{i}.self_attn.to_out.lora_A/B.weight` (direct copy, shapes already match) - `to_q`/`to_k`/`to_v` LoRAs are fused into a single `...self_attn.to_qkv.lora_A/B.weight` pair matching the target module's combined QKV Linear (`out_features = dim * 3`). This uses a block-diagonal construction on `lora_B` (row-stacked `lora_A`, block-diagonal `lora_B`) so the merged low-rank update reproduces each of the original per-branch `B_q @ A_q`, `B_k @ A_k`, `B_v @ A_v` deltas exactly in the corresponding q/k/v output rows — verified numerically against the source weights (max abs error 0.0 in bf16). Single flat `.safetensors` file, no diffusers-style subdirectories — drop it in `ComfyUI/models/loras/` and use it with ComfyUI's `LoraLoaderModelOnly`/`LoraLoader` node against a MiniMax Music3 model.