Diffusers documentation

GGUF

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GGUF

GGUF dosya biçimi, genellikle 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 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

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 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 tarafından oluşturulan orijinal numpy uygulamasının Pytorch portlarını hazırlayan city96'nın mükemmel çalışmasına dayanmaktadır.

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:

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 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 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üşümü çalıştır:

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.

Update on GitHub