Buckets:

mishig's picture
|
download
raw
5.07 kB
# GGUF
GGUF dosya biçimi, genellikle [GGML](https://github.com/ggerganov/ggml) ile çıkarım için modelleri depolamak üzere kullanılır ve çeşitli blok bazlı kuantizasyon seçeneklerini destekler. Diffusers, Model sınıflarıyla `from_single_file` yükleme yoluyla GGUF biçiminde önceden kuantize edilmiş ve kaydedilmiş kontrol noktalarını yüklemeyi destekler. Pipelines üzerinden GGUF kontrol noktalarını yükleme şu anda desteklenmemektedir.
Aşağıdaki örnek, [FLUX.1 DEV](https://huggingface.co/black-forest-labs/FLUX.1-dev) dönüştürücü modelini GGUF Q2_K kuantizasyon varyantı kullanarak yükleyecektir.
Başlamadan önce lütfen ortamınıza gguf paketini yükleyin
```shell
pip install -U gguf
```
GGUF tek dosya formatı olduğu için modeli yüklemek için `~FromSingleFileMixin.from_single_file` kullanın ve [GGUFQuantizationConfig](/docs/diffusers/main/tr/api/quantization#diffusers.GGUFQuantizationConfig) parametresini iletin.
GGUF checkpoint'leri kullanıldığında, kuantize ağırlıklar düşük bellek `dtype`'inde (genellikle `torch.uint8`) kalır ve modeldeki her modülün ileri geçişinde dinamik olarak dequantize edilip yapılandırılan `compute_dtype`'ye dönüştürülür. `GGUFQuantizationConfig`, `compute_dtype`'yi ayarlamanıza olanak tanır.
Dinamik dequantizatasyon için kullanılan işlevler, [compilade](https://github.com/compilade) tarafından oluşturulan orijinal [`numpy`](https://github.com/ggerganov/llama.cpp/blob/master/gguf-py/gguf/quants.py) uygulamasının Pytorch portlarını hazırlayan [city96](https://github.com/city96/ComfyUI-GGUF)'nın mükemmel çalışmasına dayanmaktadır.
```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")
```
## GGUF ile Optimize Edilmiş CUDA Çekirdekleri Kullanma
Optimize edilmiş CUDA çekirdekleri, GGUF kuantize edilmiş model çıkarımını yaklaşık %10 hızlandırabilir. Bu işlev, `torch.cuda.get_device_capability` değeri 7'den büyük olan uyumlu bir GPU ve çekirdekler kütüphanesini gerektirir:
```shell
pip install -U kernels
```
Kurulum tamamlandıktan sonra, kullanılabilir olduğunda optimize çekirdekleri kullanmak için `DIFFUSERS_GGUF_CUDA_KERNELS=true` değerini ayarlayın. CUDA çekirdeklerinin, orijinal GGUF uygulamasına kıyasla küçük sayısal farklılıklara yol açabileceğini ve bu durumun üretilen görsellerde ince görsel farklılıklara neden olabileceğini unutmayın. CUDA çekirdeği kullanımını devre dışı bırakmak için `DIFFUSERS_GGUF_CUDA_KERNELS=false` ortam değişkenini ayarlayın.
GGUF çekirdekleri, Hub'da güvenilir bir çekirdek yayıncısı olmayan [`Isotr0py/ggml`](https://huggingface.co/Isotr0py/ggml) deposundan indirilir. Bu çekirdeği yüklemek, Hub'dan kod indirmesini ve çalıştırmasını gerektirdiğinden Diffusers, `DIFFUSERS_TRUST_REMOTE_KERNELS=true` değerini ayarlayarak açıkça onay vermenizi ister. Ayrıntılar için [Uzak çekirdekleri güvenme](../optimization/attention_backends#trusting-remote-kernels) bölümüne bakın.
## Desteklenen Kuantizasyon Türleri
- BF16
- Q4_0
- Q4_1
- Q5_0
- Q5_1
- Q8_0
- Q2_K
- Q3_K
- Q4_K
- Q5_K
- Q6_K
## GGUF'e dönüştür
Aşağıdaki Space'i kullanarak bir Diffusers kontrol noktasını çıkarım için GGUF biçimine dönüştürün. dönüştürmeyi çalıştırın:
<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")
```
Diffusers biçimindeki GGUF checkpoint'lerini kullanırken, model `config` yolunu belirtmek zorunludur. Model config dosyası bir `subfolder` içindeyse, bu da ayrıca belirtilmelidir.

Xet Storage Details

Size:
5.07 kB
·
Xet hash:
93cabe5e48952fb1a41893c81b2b04f03b49def5f1d6835fb0dde7b3be51bcbb

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