Skip to content

docs: minimax-h3 skill + RECIPES_24GB/ACCELERATION - base-model (no LoRA, int8) quality path and measured speed levers #863

Closed

Description

@dkackman

What's missing

The minimax-h3 skill and the H3 docs describe the turbo path only. They should carry the following findings (all measured on lem, 3090, 1344x768, 4 refs, 124 frames).

Quality

Rung Canvas Weights LoRA Steps Attn Extra Min (3090) Face score /5 Staging family
L0 960x544 int4 ref2v 4-step v0.1 5 sage_hub 3.5 2 turbo-4
L1 1344x768 int4 ref2v 4-step v0.1 5 sage_hub 5.4 2.5 turbo-4
L7 1344x768 int8 ref2v 4-step v0.1 5 sage_hub 7.2 3 turbo-4
L3 1344x768 int8 ref2v 8-step v1.0 768p 9 sage_hub 11.2 3 turbo-8
L4 1344x768 int8 ref2v 8-step v1.0 768p 9 native 14.5 3 turbo-8
B4 960x544 int4 none 12 sage_hub 6.6 3 base-int4
B1 960x544 int4 none 30 sage_hub 15.1 3 base-int4
B5 1344x768 int4 none 12 sage_hub 11.8 3.5 base-int4
B6 1344x768 int4 none 8 sage_hub 8.5 1.5 (duplicated a character) base-int4
B3 1344x768 int8 none 12 sage_hub 12.9 3.5 base-int8
L5 1344x768 int8 none 30 sage_hub 29.5 4 base-int8
L6 1344x768 int8 none 30 native 44.2 4 base-int8
P1 1344x768 int8 none 30 sage_hub first_block 0.05 23.1 4 base-int8
C1 / C2 (Pat close-up) 1344x768 int8 none 12 / 30 sage_hub 13.9 / 22.8 4 / 4 base-int8

Base model = lora_model_name: null, shift video 12 / audio 3. Turbo = shift per the LoRA. All Ref2VA with 4 references (2 portraits, 2 voice clips), 124 frames. Scores are face realism at native-resolution crops, judged by Claude from frames (5 = cinema-grade photographic).

  • Faces: turbo LoRAs + int4 are the cause of smeary faces, not resolution. Base model at int8 fixes it (lora_model_name: null, steps 12-30, shift video 12 / audio 3). Add to references/checkpoints-and-loras.md as a tested combination: "base, no LoRA: int8, 12-30 steps, shift 12/3".
  • Composition: attention never moves it; quantization doesn't on turbo LoRAs (L1=L7) but does on the base model (int4 vs int8); LoRA family re-stages; base step count doesn't.
  • Steps: base floor is 12. 8 steps duplicated a character (B6).
  • Prompting the base model: it invents an extra person unless every subject is placed explicitly ("Howie at frame left, Pat at the right end of the desk"). A head-count sentence ("exactly two people") alone failed three times (E3, E5, E6). Name the set dressing (chair, desk items) in every shot, or close-ups each draw their own (ep 6: Pat's chair changed between deflect and button).
  • Realism People LoRA: its safetensors header says base_model: minimax-h3-fl2va, training: text_to_video, rank 32. It is inert on Ref2VA. It worked on FL2VA/I2VA (R3: 4/5, but loses the voice/identity references). The filename h3-realism-people-t2v-i2v-r2v.safetensors says r2v - the skill should say plainly it is not for reference-to-video (see adapter-check issue).
  • LTX-2.5 refine-in-place on an H3 shot is not a face fix: cleaner edges, waxy skin, identity drift (R1 2.5/5, R2 2/5).

Speed (cinema path, tools/phases.py breakdown from the job event log)

Rung Change Load Encode Denoise s/pass Decode Total vs
B3 12 steps baseline 0.72 0.97 10.24 55.8 0.91 12.89
P2 + first_block 0.05 0.74 0.85 10.31 56.3 0.82 12.79 0%
P4 + text_kv 0.73 0.86 10.24 55.9 0.81 12.69 ~0%
P3 + compile repeated_blocks 0.72 0.85 14.02 288.6 first, 55.2 rest 0.93 16.58 +29%
L5 30 steps baseline 0.72 0.86 26.97 55.8 0.88 29.49
P1 + first_block 0.05 0.75 0.84 20.61 42.2 avg 0.81 23.06 -22%
P5 + taylorseer interval 3 order 1 OOM at 2 min
  • Denoise is 80-91% of the job; ~56 s/pass with int8 weights streamed by block-level group offload - compute-bound, not PCIe-bound.
  • sage_hub: -23% at turbo-8, -33% at base-30, visually lossless. Should be the default in the skill's advice (and see the template issue).
  • first_block 0.05: -22% at 30 base steps with identical staging and faces (PSNR 27.5 dB vs L5); skips nothing at 12 steps.
  • torch.compile: +289 s first pass, ~1% per pass after. Net loss for a single job; would need ~16 shots at one shape in one warm worker to break even.
  • text_kv: no measurable effect on Ref2VA.
  • taylorseer: OOM at this canvas with 4 refs (21.7 GB reserved before its state).

Stale doc to fix

docs/RECIPES_24GB.md MiniMax-H3 table says "cache: first_block (threshold: 0.1) on the 20-step ref2va workflows only". No template under workflows/templates/minimax/ sets a cache today (grep -l '"cache"' workflows/templates/minimax/*.json is empty), and no ref2va template defaults to 20 steps. Replace with the measured rule: first_block 0.05 pays at 30 base steps, never on turbo schedules or at 12 steps.

Open questions

  • first_block threshold 0.08-0.10 at 30 steps: more speed at what face cost?
  • first_block at 20 steps vs plain 30: which is better per minute?
  • Does P1 hold on a close-up and a second seed? (only measured on the wide two-shot)
  • MagCache for H3 needs a calibration run (no preset). Worth one?

Source: H3 quality matrix on lem (2x RTX 3090 24 GB, 125 GB host RAM), workspace h3-quality, Known Issues ep 6 shots, seed 42. Full data and per-run assessments: ~/testing/opus/known-issues/quality/matrix.json, report quality/REPORT.md; every run in h3-quality carries a note with its config, minutes and score. Related: #861 (follow-up experiments).

Activity

  1. added
    documentationImprovements or additions to documentation
    enhancementNew feature or request
    performanceTiming/perf regression flagged by the regression agent
    owner:leadFeature lead's turn (harnest R11)
    target:mini-aiFound against a non-lem server (DW_TARGET=mini-ai); Don triages
    and removed
    owner:leadFeature lead's turn (harnest R11)
    on Oct 14, 2026
  2. dkackman commented on Oct 14, 2026

    @dkackman
    OwnerAuthor

    triage: batch with #863, #864 — both are docs-only write-ups of the same H3 quality matrix (base model int8, no LoRA; first_block 0.05 at 30 steps; subject-placement/set-dressing prompt rules): #863 updates the minimax-h3 skill + RECIPES_24GB/ACCELERATION, #864 the series-episodes skill, which should point at #863's material rather than restate it. One docs pass keeps them consistent and bumps the plugin once. No engine or validation surface. Not duplicates of #861/#862/#865 (lead ideas/experiments). Note: numbers are CUDA (3090, sage_hub) measurements — say so in the docs; MPS has no sage. backend:shared (docs).

    — claude-opus-5-5 (anthropic), implementer triage

  3. added a commit that references this issue on Oct 14, 2026
  4. dkackman commented on Oct 14, 2026

    @dkackman
    OwnerAuthor

    Docs-only, merged to develop (3d0fba1, from 21a6f60); no server change, the driver refreshes the plugin copy. Batched with #864.

    • New plugins/dw/skills/minimax-h3/references/quality-and-speed.md: the quality ladder (L/B/P/C rungs), faces/composition/steps findings, base-model prompting rules (explicit placement, set dressing), what does not help (Realism People LoRA inert on Ref2VA, LTX refine), the speed table and levers (sage_hub, first_block 0.05 at 30 steps only, compile, text_kv, taylorseer OOM), open questions. States these are CUDA/3090 numbers and MPS has no sage.
    • SKILL.md: one hard rule pointing at it (kept under the 12 KiB cap).
    • references/checkpoints-and-loras.md: 'Base, no LoRA: int8, 12-30 steps, shift 12/3' as a tested combination; Realism People inert on reference-to-video despite r2v in the filename.
    • docs/RECIPES_24GB.md: the stale '0.1 on 20-step workflows' row replaced with the measured rule. docs/ACCELERATION.md: H3 measurements added under FirstBlockCache.
    • Not done: the filename/adapter-check issue itself; the plugin version is not bumped (the release script owns it).
    • tests/test_plugin_skills.py: 83 pass; the 5 TestKandinsky6Skill failures are present on the base commit too.

    Nothing to verify over MCP; a read of the served skill text is enough. Numbers are transcribed from the issue, not re-measured.

    — claude-sonnet-5-5 (anthropic), implementer

  5. dkackman commented on Oct 14, 2026

    @dkackman
    OwnerAuthor

    Verified on the mini-ai server (mps on mini-ai.lan), develop @ 3d0fba1. Every changed doc is served by the plugin or the guides, so I read each one through the consumer surface:

    • dw:minimax-h3 skill loaded from the refreshed plugin tree: Hard rules now has "Smeary faces: int8 base model, references/quality-and-speed.md".
    • references/quality-and-speed.md: the full quality ladder (L0–L7, B1–B6, P1, C1/C2) matches the issue's rows, plus the faces/composition/steps findings, the base-model prompting rules (explicit placement, since a head count alone fails; name the set dressing), Realism People inert on reference-to-video despite r2v in its name, LTX refine not being a face fix, the speed table (B3/P2/P4/P3/L5/P1/P5) and levers (sage_hub, first_block 0.05 at 30 base steps only, compile, text_kv, taylorseer OOM), and the open questions. It also says plainly that these are CUDA/3090 numbers and that MPS has no sage.
    • references/checkpoints-and-loras.md: has "Base, no LoRA: lora_model_name: null, int8, 12-30 steps (floor 12), shift…" as a tested combination, and says Realism People is inert on reference-to-video.
    • get_guide("recipes", section="MiniMax-H3"): the stale "0.1 on the 20-step ref2va workflows" row is gone. In its place: first_block 0.05 only on a ~30-step base-model run (-22%), skips nothing at 12 steps or on a turbo schedule, no template sets it, measured on a 3090 with sage_hub.
    • get_guide("acceleration", section="FirstBlockCache"): the H3 measurements are added (0.05 = -22% at 30 base steps, nothing on 12-step/turbo; compile +289 s first pass, ~1%/pass; text_kv nothing; taylorseer OOM).
    • Adjacent check: get_workflow("templates/minimax/reference-to-video") has no cache in its pipeline configuration. That matches the new "no template sets it today" wording.

    I checked the numbers against the issue's tables, not re-measured them. No regression case: this is docs text with nothing for a case to assert durably.

    — claude-opus-5-5 (anthropic), tester

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:shareddocumentationImprovements or additions to documentationenhancementNew feature or requestowner:testerTester's turn to actperformanceTiming/perf regression flagged by the regression agentstatus:verifiedTester confirmed the fix via a real MCP calltarget:mini-aiFound against a non-lem server (DW_TARGET=mini-ai); Don triagesverified-on:mps

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions