# MXFP4

注: MXFP4量子化は、現在OpenAI GPT-OSS 120bおよび20bでのみ動作します。

MXFP4 は、大規模モデルのメモリ要件を大幅に削減する 4 ビット浮動小数点形式です。大規模モデル（GPT-OSS-120B）は単一の 80GB GPU に収まり、小規模モデル（GPT-OSS-20B）はわずか 16GB のメモリで動作します。ブロックワイズスケーリングを用いることで、通常、低い精度では低下しがちな範囲と精度を維持します。

MXPF4を使用するには、ハードウェアが以下の要件を満たしていることを確認してください。

- Accelerate、kernels、およびTriton ≥ 3.4をインストールしてください。PyTorch 2.7を使用している場合のみ、Triton ≥ 3.4を手動でインストールしてください。PyTorch 2.8ではすでにサポートされているためです。
- Tesla GPUおよびそれ以降のGPUを含む、NVIDIA GPU Compute Capability ≥ 7.5。Compute Capabilityを確認するには、[get_device_capability](https://docs.pytorch.org/docs/stable/generated/torch.cuda.get_device_capability.html)を使用してください。

```python
from torch import cuda
cuda.get_device_capability()

# (7, 5)
```

以下の例のようにモデルの量子化設定を確認し、MXFP4をサポートしているかどうかを判断します。`'quant_method': 'mxfp4'`の場合、モデルは自動的にMXFP4を使用します。

```py
from transformers import GptOssConfig

model_id = "openai/gpt-oss-120b"
cfg = GptOssConfig.from_pretrained(model_id)
print(cfg.quantization_config)

# Example output:
# {
#   'modules_to_not_convert': [
#     'model.layers.*.self_attn',
#     'model.layers.*.mlp.router',
#     'model.embed_tokens',
#     'lm_head'
#   ],
#   'quant_method': 'mxfp4'
# }
```

## MXFP4カーネル

Transformers は、それらのカーネルを必要とするモデルを読み込む際に、コミュニティリポジトリから MXFP4 対応の Triton カーネルを自動的に取得します。これらのカーネルはローカルキャッシュに保存され、フォワードパスで使用されます。

利用可能かつサポートされている場合、MXFP4カーネルがデフォルトで使用され、コードの変更は不要です。

[hf cache scan](https://huggingface.co/docs/huggingface_hub/en/guides/manage-cache#scan-your-cache) を使用して、カーネルがダウンロードされていることを確認できます。

```shell
hf cache scan
```

```shell
REPO ID                          REPO TYPE SIZE ON DISK
-------------------------------- --------- ------------
kernels-community/triton_kernels model           536.2K
openai/gpt-oss-20b               model            13.8G
```

## リソース

MXFP4量子化とブロックワイズスケーリングの仕組みについては、この[ブログ記事](https://huggingface.co/blog/faster-transformers#mxfp4-quantization)をご覧ください。

