# モデルのデクアンタイズ

Dequantizingは、量子化された重みをbf16などの高精度なdtypeに戻す処理です。モデルを完全にファインチューニングする場合、その手法のカーネルがサポートしないハードウェアで実行する場合、または別の形式に変換する場合に、モデルをDequantizeします。結果として得られるモデルは、量子化されていないモデルと同じだけのメモリを消費し、丸めによって失われた精度は回復されません。

Transformersは、手法に応じて2つの方法でデクアンタイズを行います。

| メソッド | デクォアンタイズの方法 |
|---|---|
| [bitsandbytes](./bitsandbytes)、[HIGGS](./higgs) | 読み込み後に[dequantize()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.dequantize)を呼び出します。 |
| [compressed-tensors](./compressed_tensors)、[細粒度FP8](./finegrained_fp8)、[GGUF](./gguf)、[Metal](./metal)、[MXFP4](./mxfp4) | 読み込み時に、メソッドのconfigに`dequantize=True`を渡します。 |

その他のメソッドは、[dequantize()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.dequantize)から`NotImplementedError`をスローします。

## 読み込み後にデクアンタイズ

読み込んだモデルに対して[dequantize()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.dequantize)を呼び出します。デフォルトでは、モデルが読み込まれたときの`dtype`が使用されます。別の`dtype`を指定するには、`dtype`を渡します。

```py
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-0.6B",
    quantization_config=BitsAndBytesConfig(load_in_4bit=True),
    device_map="auto",
)
model = model.dequantize(dtype=torch.bfloat16)
```

[dequantize()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.dequantize) は `quantization_config` も削除するため、[save_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.save_pretrained) は通常のフルプレシジョンのチェックポイントを保存します。

## 読み込み時にデクアンタイズ

サポートしているメソッドの config に `dequantize=True` を渡します。重みの読み込み時にデクアンタイズされるため、クアンタイズされたカーネルは使用されません。以下の例では、gpt-oss の MXFP4 重みを bf16 で読み込んでいます。

```py
from transformers import AutoModelForCausalLM, Mxfp4Config

model = AutoModelForCausalLM.from_pretrained(
    "openai/gpt-oss-20b",
    quantization_config=Mxfp4Config(dequantize=True),
    device_map="auto",
)
```

一部のメソッドは、カーネルが実行できない場合に自動的にデクォアンタイズを行います。例えば、[GGUF](./gguf)は、ファイルのクォアンタイズ型をサポートするカーネルが存在しない場合に、デクォアンタイズにフォールバックします。

