Spaces:
Running on Zero
Running on Zero
| """Owner-opt-in INT8 loading. Conversion is at startup, never inside a GPU job. | |
| Based on the official MiniMax-H3 Diffusers memory recipe. Kept separate because | |
| GPU/PEFT/ZeroGPU compatibility must be measured on the owner's actual runtime. | |
| """ | |
| def load_int8_transformer(repo): | |
| import torch | |
| try: | |
| from diffusers import MiniMaxH3Transformer3DModel, TorchAoConfig | |
| from torchao.quantization import Int8WeightOnlyConfig | |
| except ImportError as error: | |
| raise RuntimeError( | |
| "INT8 needs torchao==0.17.0 in the main requirements.txt. " | |
| "Use H3_QUANTIZATION=bf16 for the existing supported path." | |
| ) from error | |
| model = MiniMaxH3Transformer3DModel.from_pretrained( | |
| repo, subfolder="transformer_ref", dtype=torch.bfloat16, | |
| quantization_config=TorchAoConfig( | |
| Int8WeightOnlyConfig(version=2), | |
| modules_to_not_convert=[ | |
| "proj_in", "audio_proj_in", "context_embedder", "time_embedder", "time_proj", | |
| "token_refiner", "norm_out", "proj_out", "audio_proj_out", | |
| ], | |
| ), | |
| # The pinned Diffusers ModelMixin rejects False with a quantizer. | |
| # Accelerate is already pinned in requirements.txt for this load path. | |
| low_cpu_mem_usage=True, | |
| ) | |
| model.requires_grad_(False) | |
| return model | |