Buckets:

mishig's picture
|
download
raw
4.73 kB
# GGUF
Format file GGUF biasanya digunakan untuk menyimpan model untuk inferensi dengan [GGML](https://github.com/ggerganov/ggml) dan mendukung berbagai opsi kuantisasi per blok. Diffusers mendukung pemuatan checkpoint yang telah dikuantisasi sebelumnya dan disimpan dalam format GGUF melalui pemuatan `from_single_file` dengan kelas Model. Pemuatan checkpoint GGUF melalui Pipelines saat ini belum didukung.
Contoh berikut akan memuat model transformer [FLUX.1 DEV](https://huggingface.co/black-forest-labs/FLUX.1-dev) menggunakan varian kuantisasi GGUF Q2_K.
Sebelum memulai, silakan instal gguf di lingkungan Anda
```shell
pip install -U gguf
```
Karena GGUF adalah format file tunggal, gunakan `~FromSingleFileMixin.from_single_file` untuk memuat model dan lewati [GGUFQuantizationConfig](/docs/diffusers/v0.43.0/id/api/quantization#diffusers.GGUFQuantizationConfig).
Saat menggunakan checkpoint GGUF, bobot terkuantisasi tetap berada dalam `dtype` memori rendah (biasanya `torch.uint8`) dan secara dinamis didekuantisasi serta di-cast ke `compute_dtype` yang dikonfigurasi selama setiap forward pass modul melalui model. `GGUFQuantizationConfig` memungkinkan Anda mengatur `compute_dtype`.
Fungsi yang digunakan untuk dekuantisasi dinamis didasarkan pada karya luar biasa yang dilakukan oleh [city96](https://github.com/city96/ComfyUI-GGUF), yang membuat port Pytorch dari implementasi [`numpy`](https://github.com/ggerganov/llama.cpp/blob/master/gguf-py/gguf/quants.py) asli oleh [compilade](https://github.com/compilade).
```python
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")
```
## Menggunakan Kernel CUDA yang Dioptimalkan dengan GGUF
Kernel CUDA yang dioptimalkan dapat mempercepat inferensi model kuantisasi GGUF sekitar 10%. Fungsi ini memerlukan GPU yang kompatibel dengan `torch.cuda.get_device_capability` lebih dari 7 dan pustaka kernel:
```shell
pip install -U kernels
```
Setelah terpasang, atur `DIFFUSERS_GGUF_CUDA_KERNELS=true` untuk menggunakan kernel yang dioptimalkan saat tersedia. Perhatikan bahwa kernel CUDA dapat memperkenalkan perbedaan numerik kecil dibandingkan implementasi GGUF asli, yang berpotensi menyebabkan variasi visual halus pada gambar yang dihasilkan. Untuk menonaktifkan penggunaan kernel CUDA, atur variabel lingkungan `DIFFUSERS_GGUF_CUDA_KERNELS=false`.
Kernel GGUF diunduh dari repositori [`Isotr0py/ggml`](https://huggingface.co/Isotr0py/ggml), yang penerbitnya bukan penerbit kernel yang tepercaya di Hub. Memuatnya akan mengunduh dan mengeksekusi kode dari Hub, sehingga Diffusers mengharuskan Anda untuk secara eksplisit mengaktifkannya dengan mengatur `DIFFUSERS_TRUST_REMOTE_KERNELS=true`. Lihat [Mengpercayaan kernel jarak jauh](../optimization/attention_backends#trusting-remote-kernels) untuk detailnya.
## Jenis Kuantisasi yang Didukung
- BF16
- Q4_0
- Q4_1
- Q5_0
- Q5_1
- Q8_0
- Q2_K
- Q3_K
- Q4_K
- Q5_K
- Q6_K
## Konversi ke GGUF
Gunakan Space di bawah untuk mengonversi checkpoint Diffusers ke format GGUF untuk inferensi. jalankan konversi:
<iframe src="https://diffusers-internal-dev-diffusers-to-gguf.hf.space" frameborder="0" width="850" height="450"
>
```py
import torch
from diffusers import FluxPipeline, FluxTransformer2DModel, GGUFQuantizationConfig
ckpt_path = (
"https://huggingface.co/sayakpaul/different-lora-from-civitai/blob/main/flux_dev_diffusers-q4_0.gguf"
)
transformer = FluxTransformer2DModel.from_single_file(
ckpt_path,
quantization_config=GGUFQuantizationConfig(compute_dtype=torch.bfloat16),
config="black-forest-labs/FLUX.1-dev",
subfolder="transformer",
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")
```
Saat menggunakan checkpoint GGUF format Diffusers, Anda wajib menyediakan path `config` model. Jika config model berada di `subfolder`, hal tersebut juga harus ditentukan.

Xet Storage Details

Size:
4.73 kB
·
Xet hash:
c1298894812b5c01d12b0e7a0b1a3c759ea7fc3a07ca668d12cf67b0a8a42ea7

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