Buckets:
GGUF
GGUFファイル形式は、GGMLによる推論用のモデルを保存するために一般的に使用され、ブロック単位の量子化オプションを多数サポートしています。Diffusersは、Modelクラスによるfrom_single_file読み込みを通じて、GGUF形式で事前量子化・保存されたチェックポイントの読み込みをサポートしています。Pipelines経由でのGGUFチェックポイントの読み込みは現在サポートされていません。
次の例では、FLUX.1 DEV transformer モデルを、GGUF Q2_K 量子化バリアントを使用して読み込みます。
開始する前に、環境にggufをインストールしてください
pip install -U gguf
GGUFは単一ファイル形式であるため、~FromSingleFileMixin.from_single_fileを使用してモデルを読み込み、GGUFQuantizationConfigを渡します。
GGUFチェックポイントを使用する場合、量子化された重みは低メモリdtype(通常はtorch.uint8)のまま保持され、モデル内の各モジュールのフォワードパスのたびに動的にデ量子化され、設定されたcompute_dtypeにキャストされます。GGUFQuantizationConfigを使用すると、compute_dtypeを設定できます。
動的デクアンティ化に使用される関数は、compilade による元の numpy 実装の PyTorch 移植版を作成した city96 の素晴らしい取り組みに基づいています。
import torch
from diffusers import FluxPipeline, FluxTransformer2DModel, GGUFQuantizationConfig
ckpt_path = (
"https://huggingface.co/city96/FLUX.1-dev-gguf/blob/main/flux1-dev-Q2_K.gguf"
)
transformer = FluxTransformer2DModel.from_single_file(
ckpt_path,
quantization_config=GGUFQuantizationConfig(compute_dtype=torch.bfloat16),
dtype=torch.bfloat16,
)
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
transformer=transformer,
dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()
prompt = "A cat holding a sign that says hello world"
image = pipe(prompt, generator=torch.manual_seed(0)).images[0]
image.save("flux-gguf.png")
GGUFでの最適化されたCUDAカーネルの使用
最適化された CUDA カーネルにより、GGUF 量子化モデルの推論を約 10% 高速化できます。この機能には、torch.cuda.get_device_capability が 7 より大きい互換性のある GPU とカーネルライブラリが必要です:
pip install -U kernels
インストールが完了したら、利用可能な場合は最適化されたカーネルを使用するために DIFFUSERS_GGUF_CUDA_KERNELS=true を設定してください。なお、CUDA カーネルは元の GGUF 実装と比較してわずかな数値上の差異を生じさせる可能性があり、生成される画像に微細な視覚的な変化をもたらす場合があります。CUDA カーネルの使用を無効にするには、環境変数 DIFFUSERS_GGUF_CUDA_KERNELS=false を設定してください。
GGUF カーネルは、Isotr0py/ggml リポジトリからダウンロードされます。このリポジトリの公開者は、Hub 上で信頼できるカーネル公開者ではありません。このカーネルを読み込むと、Hub からコードをダウンロードして実行するため、Diffusers では DIFFUSERS_TRUST_REMOTE_KERNELS=true を設定して明示的にオプトインする必要があります。詳細は リモートカーネルの信頼 を参照してください。
サポートされている量子化タイプ
- BF16
- Q4_0
- Q4_1
- Q5_0
- Q5_1
- Q8_0
- Q2_K
- Q3_K
- Q4_K
- Q5_K
- Q6_K
GGUFに変換
以下の Space を使用して、Diffusers のチェックポイントを推論用の GGUF 形式に変換します。変換を実行するには:
Xet Storage Details
- Size:
- 5.49 kB
- Xet hash:
- 8f3f6cd052811cfe04f1572790c3bbb7ef8f28f50a0b360e564bf59759d9c321
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.