{"record":{"id":"b41723beb6ca2224","repo":"unslothai/unsloth","slug":"minimax-h3-needs-the-diffusers-revision-bundled-wi","errorCode":null,"errorMessage":"MiniMax-H3 needs the Diffusers revision bundled with this Studio version. Reinstall Studio dependencies and retry.","messagePattern":"MiniMax-H3 needs the Diffusers revision bundled with this Studio version\\. Reinstall Studio dependencies and retry\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"studio/backend/core/inference/video.py","lineNumber":1178,"sourceCode":"        from .video_minimax_h3 import is_h3_native, validate_h3_transformer_filename\n\n        if is_h3_native(fam, kind):\n            validate_h3_transformer_filename(gguf_filename or \"\")\n            # The GGUF filename and explicit task must name the same partition.\n            picked = h3_transformer_task(gguf_filename or \"\")\n            if h3_task and h3_task != picked:\n                raise ValueError(\n                    f\"'{Path(gguf_filename or '').name}' is the {picked} partition, but the \"\n                    f\"load asked for {h3_task}. Pick the matching checkpoint.\"\n                )\n        else:\n            # Refuse a too-old diffusers here rather than deep in the load.\n            from .diffusion_families import assert_pipeline_class_available\n            assert_pipeline_class_available(fam.pipeline_class, fam.name)\n            if fam.modular_workflow:\n                import diffusers\n                if not hasattr(diffusers, fam.transformer_class):\n                    raise ValueError(\n                        \"MiniMax-H3 needs the Diffusers revision bundled with this Studio \"\n                        \"version. Reinstall Studio dependencies and retry.\"\n                    )\n        if kind != \"gguf\" and not _is_trusted_video_repo(repo_id):\n            raise ValueError(\n                f\"Non-GGUF video loads are limited to unsloth/* repos, the official \"\n                f\"family base repos, and local paths; '{repo_id}' is neither.\"\n            )\n        # Companions load with from_pretrained, so a base repo is held to the non-GGUF bar: a GGUF pick must not smuggle in a remote base.\n        if base_repo and (base_repo or \"\").strip() and not _is_trusted_video_repo(base_repo):\n            raise ValueError(\n                f\"base_repo is limited to unsloth/* repos, the official family base \"\n                f\"repos, and local paths; '{base_repo}' is neither.\"\n            )\n        # A local base_repo loads as a full pipeline (needs model_index.json); reject a non-pipeline one here, before the load.\n        from core.inference.diffusion import _assert_local_base_is_pipeline\n\n        _assert_local_base_is_pipeline(base_repo)","sourceCodeStart":1160,"sourceCodeEnd":1196,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/core/inference/video.py#L1160-L1196","documentation":"Raised for modular-workflow families (MiniMax-H3) when the installed diffusers package does not expose fam.transformer_class. The Modular Diffusers path constructs the denoiser from classes in diffusers, so a too-old diffusers cannot serve the load; the check is done before the load rather than deep inside it, and the fix is to install the diffusers revision bundled with this Studio version.","triggerScenarios":"Loading a MiniMax-H3 (or other modular_workflow family) with model_kind != 'gguf' when hasattr(diffusers, fam.transformer_class) is False — typically a system/site-packages diffusers older or newer than the pinned one, or a venv built without the Studio requirements.","commonSituations":"Upgrading Studio without reinstalling dependencies; another package downgraded/upgraded diffusers in the shared environment; running inside a container whose image cached an old diffusers; using a system Python instead of the bundled venv.","solutions":["Reinstall Studio dependencies so diffusers matches the bundled revision (pip install -r requirements / Studio's setup command).","In a shared env, install Studio in its own venv so other packages cannot move diffusers.","Verify with: python -c \"import diffusers; print(hasattr(diffusers, '<transformer_class>'))\" — it must print True before retrying.","If pinning manually, take the exact diffusers version from Studio's lockfile."],"exampleFix":"# before: stale diffusers in env\npip install diffusers  # latest, lacks the H3 transformer class\n\n# after\npip install -r studio/backend/requirements.txt  # bundled revision\npython -c \"import diffusers; assert hasattr(diffusers, 'MiniMaxH3Transformer3DModel')\"","handlingStrategy":"validation","validationCode":"import diffusers\n\nif not hasattr(diffusers, fam.transformer_class):\n    raise SystemExit('Reinstall Studio dependencies: bundled diffusers revision required')","typeGuard":null,"tryCatchPattern":"try:\n    load(fam, ...)\nexcept ValueError as e:\n    if 'Diffusers revision' in str(e):\n        subprocess.run([sys.executable, '-m', 'pip', 'install', '-r', REQUIREMENTS])\n    else:\n        raise","preventionTips":["Install Studio in a dedicated venv so other packages cannot move diffusers.","After any Studio upgrade, reinstall requirements before loading H3.","Smoke-test hasattr(diffusers, transformer_class) at startup."],"tags":["video","dependency","diffusers","environment","minimax-h3"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}