{"record":{"id":"027ea1eb97356e95","repo":"unslothai/unsloth","slug":"path-gguf-filename-or-name-is-the-picked","errorCode":null,"errorMessage":"'{Path(gguf_filename or '').name}' is the {picked} partition, but the load asked for {h3_task}. Pick the matching checkpoint.","messagePattern":"'(.+?)' is the (.+?) partition, but the load asked for (.+?)\\. Pick the matching checkpoint\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"studio/backend/core/inference/video.py","lineNumber":1167,"sourceCode":"                    )\n                    # Name the partition when one was asked for, so \"fp8 is unavailable\" does not\n                    # read as a claim about the whole family when it is only true of this task.\n                    task_label = f\" {h3_task}\" if h3_task else \"\"\n                    raise ValueError(\n                        f\"transformer_quant '{requested_scheme}' is unavailable for \"\n                        f\"'{fam.name}'{task_label}: its Modular Diffusers workflow builds the \"\n                        f\"denoiser itself, so only schemes with a hosted pre-quantized checkpoint \"\n                        f\"can be applied and the dense weights cannot be quantized in place. \"\n                        f\"{hint}\"\n                    )\n        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.\"","sourceCodeStart":1149,"sourceCodeEnd":1185,"githubUrl":"https://github.com/unslothai/unsloth/blob/203007d19051dcd2ae33876786d117c99f6b0368/studio/backend/core/inference/video.py#L1149-L1185","documentation":"Raised for native MiniMax-H3 loads when the GGUF checkpoint filename and the explicitly requested task partition disagree. The filename itself encodes which partition it is (h3_transformer_task(gguf_filename) derives it), and the loader would silently build the wrong pipeline if the two diverged, so the mismatch is rejected up front with both values named.","triggerScenarios":"Calling load with model_kind='gguf' on an h3-native family where gguf_filename resolves to one partition (e.g. the 'video' transformer file) while the h3_task parameter says another (e.g. 'audio'), i.e. h3_task and h3_transformer_task(gguf_filename) are both set and differ.","commonSituations":"A saved preset pairs a filename from an older UI selection with a newly added task field; hand-written config reuses one GGUF name across task changes; the frontend defaults h3_task and the user swaps the checkpoint without the task following.","solutions":["Set h3_task to the partition the file actually is (the message names it: 'picked'), or pick the GGUF file matching the requested h3_task.","Simplest: omit h3_task and let the filename determine the partition.","If driving a UI, clear/derive the task field whenever gguf_filename changes."],"exampleFix":"# before\nload(repo_id='minimax-h3', model_kind='gguf',\n     gguf_filename='H3-video-Q4_K_M.gguf', h3_task='audio')\n\n# after\nload(repo_id='minimax-h3', model_kind='gguf',\n     gguf_filename='H3-video-Q4_K_M.gguf', h3_task='video')  # or omit h3_task","handlingStrategy":"validation","validationCode":"from core.inference.video_minimax_h3 import h3_transformer_task\n\npicked = h3_transformer_task(gguf_filename or '')\nif h3_task and h3_task != picked:\n    h3_task = picked  # or reject before calling the API","typeGuard":"def task_matches_file(gguf_filename: str, h3_task: str | None) -> bool:\n    return not h3_task or h3_task == h3_transformer_task(gguf_filename or '')","tryCatchPattern":"try:\n    load(...)\nexcept ValueError as e:\n    if 'partition' in str(e):\n        # message names the file's real partition; re-issue with that task or the matching file\n        raise\n    raise","preventionTips":["Derive h3_task from the picked filename (or omit it) rather than storing them independently.","In UIs, clear or recompute the task field whenever the checkpoint selection changes."],"tags":["video","minimax-h3","gguf","validation","config"],"backgroundTag":null,"analyzedSha":"203007d19051dcd2ae33876786d117c99f6b0368","analyzedAt":"2026-08-15T02:48:39.846Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}