Views
No views yet
bfloat16 weights of MiniMaxAI/MiniMax-M2.7,
reconstructed from the upstream block-FP8 (E4M3, 128×128 blocks) checkpoint
via shard-by-shard blockwise dequantization. No calibration, no rounding loss
beyond the original FP8→BF16 cast — every block is materialized exactly:bf16_block = (fp8_block.float() * scale_fp32).bfloat16()MiniMaxAI/MiniMax-M2.7 ships natively in FP8. On Ampere and earlier
(e.g. RTX A5000) FP8 tensor cores don't exist and inference engines have
to emulate FP8 through FP16 — paying double bandwidth without the speed
benefit. For further offline quantization (AWQ, GPTQ, RTN INT8, …) you
need plain BF16 weights anyway: transformers + torch_dtype=bfloat16
won't materialize the attention projections under the FP8 quant config,
which trips up llmcompressor's GPTQ tracer.model-NNNNN-of-00047.safetensorsmodel.safetensors.index.json (no *.weight_scale_inv entries)config.json with the upstream quantization_config stripped.py files copied verbatim from the FP8 sourcedequant_fp8_blockwise.py.model-XXXXX-of-00130.safetensors from the FP8 source*.weight (FP8 e4m3fn): look up *.weight_scale_inv (FP32, 128×128)model-NNNNN-of-00047.safetensors (5 GB shards)modules_to_not_convert) are passed
through with a BF16 cast.1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3m = AutoModelForCausalLM.from_pretrained(
4 "operationrange/MiniMax-M2.7-BF16",
5 torch_dtype="bfloat16",
6 device_map="auto",
7 trust_remote_code=True,
8)
9tok = AutoTokenizer.from_pretrained("operationrange/MiniMax-M2.7-BF16", trust_remote_code=True)