Buckets:

mishig's picture
|
download
raw
8.5 kB
# AutoRound
[AutoRound](https://github.com/intel/auto-round) は高度な量子化ツールキットです。符号勾配降下法を活用し、チューニングを最小限に抑えながら、超低ビット幅(2〜4ビット)で高い精度を実現するとともに、幅広いハードウェアとの互換性を備えています。詳細については、論文 [SignRoundV1](https://arxiv.org/pdf/2309.05516) および [SignRoundV2](https://arxiv.org/abs/2512.04746) をご覧ください。
`auto-round`(バージョン ≥ 0.13.0)をインストールします:
```bash
pip install "auto-round>=0.13.0"
```
より高速な CUDA 推論のために Marlin カーネルを使用するには、`gptqmodel` をインストールしてください。
```bash
pip install "gptqmodel>=5.8.0"
```
## 量子化モデルの読み込み
`AutoRoundConfig`を[from_pretrained()](/docs/diffusers/v0.43.0/ja/api/models/overview#diffusers.ModelMixin.from_pretrained)に渡すことで、事前量子化済みのAutoRoundモデルを読み込みます。このメソッドは、[Accelerate](https://hf.co/docs/accelerate/index)経由で読み込めるモデルであれば、`torch.nn.Linear`レイヤーを持つ限りすべてで動作します。
[PipelineQuantizationConfig](/docs/diffusers/v0.43.0/ja/api/quantization#diffusers.PipelineQuantizationConfig) を使用して、パイプラインの特定のコンポーネントを量子化できます:
```python
import torch
from diffusers import DiffusionPipeline, PipelineQuantizationConfig, AutoRoundConfig
pipeline_quant_config = PipelineQuantizationConfig(
quant_mapping={"transformer": AutoRoundConfig(backend="auto")}
)
pipe = DiffusionPipeline.from_pretrained(
"INCModel/Z-Image-W4A16-AutoRound",
quantization_config=pipeline_quant_config,
dtype=torch.bfloat16,
device_map="cuda", # or "mps", "xpu", "cpu"
)
image = pipe("a cat holding a sign that says hello").images[0]
image.save("output.png")
```
または、量子化されたモデルコンポーネントを直接読み込みます:
```python
import torch
from diffusers import ZImageTransformer2DModel, ZImagePipeline, AutoRoundConfig
model_id = "INCModel/Z-Image-W4A16-AutoRound"
quantization_config = AutoRoundConfig(backend="auto")
transformer = ZImageTransformer2DModel.from_pretrained(
model_id,
subfolder="transformer",
quantization_config=quantization_config,
dtype=torch.bfloat16,
device_map="cuda", # or "mps", "xpu", "cpu"
)
pipe = ZImagePipeline.from_pretrained(
model_id,
transformer=transformer,
dtype=torch.bfloat16,
device_map="cuda",
)
image = pipe("a cat holding a sign that says hello").images[0]
image.save("output.png")
```
> [!NOTE]
> Diffusers における AutoRound は、*事前量子化済み*モデルの読み込みのみをサポートしています。モデルをゼロから量子化するには、[AutoRound CLI または Python API](https://github.com/intel/auto-round)を直接使用し、その結果を Diffusers で読み込んでください。
## torch.compile
AutoRound は、より高速な推論のために [`torch.compile`](../optimization/fp16#torchcompile) と互換性があります。パフォーマンスを向上させるために、量子化された Transformer(DiT)をコンパイルできます。
```python
import torch
from diffusers import DiffusionPipeline, PipelineQuantizationConfig, AutoRoundConfig
pipeline_quant_config = PipelineQuantizationConfig(
quant_mapping={"transformer": AutoRoundConfig(backend="auto")}
)
pipe = DiffusionPipeline.from_pretrained(
"INCModel/Z-Image-W4A16-AutoRound",
quantization_config=pipeline_quant_config,
dtype=torch.bfloat16,
device_map="cuda", # or "mps", "xpu", "cpu"
)
pipe.transformer = torch.compile(pipe.transformer, mode="default", fullgraph=False)
```
## バックエンド
AutoRound は、Weight-only 量子化モデルに対して複数の推論バックエンドをサポートしています。バックエンドは、フォワードパス中のデクォアンティゼーションをどのカーネルが処理するかを制御します。`AutoRoundConfig` の `backend` パラメータを設定して、バックエンドを選択します。
| バックエンド | 値 | デバイス | 要件 | 注記 |
|---------|-------|--------|--------------|-------|
| **Auto** | `"auto"` | すべて | — | デフォルト。利用可能な最適なバックエンドを自動的に選択します。 |
| **PyTorch** | `"torch"` | CPU / CUDA | — | 純粋なPyTorch実装。最も広い互換性。 |
| **Triton** | `"tritonv2"` | CUDA | `triton` | GPU推論用のTritonベースのカーネル。 |
| **ExllamaV2** | `"exllamav2"` | CUDA | `gptqmodel>=5.8.0` | ExllamaV2カーネルによる優れたCUDAパフォーマンス。 |
| **Marlin** | `"marlin"` | CUDA | `gptqmodel>=5.8.0` | Marlinカーネルによる最高のCUDAパフォーマンス。 |
```python
from diffusers import AutoRoundConfig
# Auto-select (default)
config = AutoRoundConfig()
# Explicit Triton backend for CUDA
config = AutoRoundConfig(backend="tritonv2")
# Marlin backend for best CUDA performance (requires gptqmodel>=5.8.0)
config = AutoRoundConfig(backend="marlin")
# ExllamaV2 backend for good CUDA performance (requires gptqmodel>=5.8.0)
config = AutoRoundConfig(backend="exllamav2")
# PyTorch backend for CPU/CUDA inference
config = AutoRoundConfig(backend="torch")
```
## 保存と読み込み
AutoRoundでは、モデルの量子化にデータキャリブレーションが必要です。これはDiffusersの外側で、[AutoRoundライブラリ](https://github.com/intel/auto-round)を直接使用して行います。
```python
from auto_round import AutoRound
autoround = AutoRound(
"Tongyi-MAI/Z-Image",
scheme="W4A16", # W4G128 symmetric
enable_torch_compile=True,
num_inference_steps=3,
guidance_scale=7.5,
dataset="coco2014",
)
autoround.quantize_and_save("Z-Image-W4A16-AutoRound")
```
キャリブレーションのオプションの詳細については、[AutoRoundのドキュメント](https://github.com/intel/auto-round)を参照してください。
```python
import torch
from diffusers import ZImageTransformer2DModel, ZImagePipeline
model_id = "INCModel/Z-Image-W4A16-AutoRound"
# The inference backend will be automatically selected.
pipe = ZImagePipeline.from_pretrained(
model_id,
dtype=torch.bfloat16,
device_map="cuda", # or "mps", "xpu", "cpu"
)
image = pipe("a cat holding a sign that says hello").images[0]
image.save("output.png")
```
### サポートされている量子化スキーム
AutoRoundは複数のSchemesをサポートしています:
- **W4A16**(bits:4,group_size:128,sym:True,act_bits:16)
- **W8A16**(bits:8,group_size:128,sym:True,act_bits:16)
- **W3A16**(bits:3,group_size:128,sym:True,act_bits:16)
- **W2A16**(bits:2,group_size:128,sym:True,act_bits:16)
- **GGUF:Q4_K_M**(llamacpp が提供するすべての Q*_K、Q*_0、Q*_1 はサポートされています)
- **NVFP4**(実験的な機能です。`llm_compressor`形式へのエクスポートを推奨します。data_type nvfp4,act_data_type nvfp4,static_global_scale,group_size 16)
- **MXFP4**(**研究機能、実用カーネルなし**、標準 MXFP4、data_type mxfp、act_data_type mxfp、bits 4、act_bits 4、group_size 32)
- **MXINT4**(**研究機能、実用カーネルなし**、Standard MXINT4、data_type mxint、act_data_type mxint、bits 4、act_bits 4、group_size 32)
- **MXFP4_RCEIL**(**研究機能、実装されたカーネルなし**、NVIDIA のバリアント、data_type mxfp、act_data_type mxfp_rceil、bits 4、act_bits 4、group_size 32)
- **MXFP8**(**研究機能、実装済みカーネルなし**、data_type mxfp、act_data_type mxfp_rceil、group_size 32)
- **FPW8A16**(**研究機能、実装済みカーネルなし**、data_type fp8、group_size 0->テンソルごと)
- **FP8_STATIC**(**研究段階の機能、実装済みカーネルなし**、data_type:fp8、act_data_type:fp8、group_size -1 ->チャンネルごと、act_group_size=0->テンソルごと)
また、`group_size`、`bits`、`sym` など、必要に応じて多くの設定を変更できますが、実際には対応するカーネルが存在しない可能性があります。
## リソース
- [Hub上の事前量子化済みAutoRoundモデル](https://huggingface.co/models?search=autoround)

Xet Storage Details

Size:
8.5 kB
·
Xet hash:
06f25bb79ec57112482a0a62a434e42d84b2d18c25f1bd04f3a30b7513394f3f

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.