Diffusers documentation

Hattalar

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

Hattalar

Pipelines, bağımsız olarak eğitilmiş birden fazla model, zamanlayıcılar ve işlemciler gibi gerekli tüm bileşenleri tek bir uçtan uca sınıfında bir araya getirerek, en son nesil difüzyon modellerini çıkarım (inference) sırasında çalıştırmak için basit bir yol sunar. Pipelines esnektir ve farklı zamanlayıcılar veya hatta model bileşenleri kullanacak şekilde uyarlanabilir.

Tüm pipeline'lar, tüm bileşenlerin yüklenmesi, indirilmesi ve kaydedilmesi için temel işlevselliği sağlayan DiffusionPipeline temel sınıfından oluşturulur. from_pretrained() ile yüklenen belirli pipeline türleri (örneğin StableDiffusionPipeline) otomatik olarak algılanır ve pipeline bileşenleri yüklenerek pipeline'ın __init__ fonksiyonuna aktarılır.

Eğitim için DiffusionPipeline sınıfını kullanmamalısınız. Difüzyon boru hatlarının bireysel bileşenleri (örneğin, UNet2DModel ve UNet2DConditionModel) genellikle ayrı ayrı eğitilir, bu nedenle doğrudan bunlarla çalışmanızı öneririz.


Pipelines herhangi bir eğitim işlevselliği sunmaz. Pipeline'ların eğitim için kullanılmaması gerektiğinden, __call__() yönteminin torch.no_grad dekoratörüyle süslenerek PyTorch'un autograd'inin devre dışı bırakıldığını fark edeceksiniz. Eğitimle ilgileniyorsanız, bunun yerine Eğitim kılavuzlarına göz atmanızı öneririz!

Kenar çubuğundaki API > Pipelines bölümünü kullanarak tüm pipeline referanslarını modaliteye göre görüntüleyin. Görev odaklı iş akışları için Quickstart ile başlayın veya text-to-image, image-to-image, inpainting ya da video generation gibi bir kılavuza göz atın.

DiffusionPipeline

sınıf diffusers.DiffusionPipeline

< >

( )

Tüm boru hatları için temel sınıf.

DiffusionPipeline, difüzyon boru hatları için tüm bileşenleri (modeller, zamanlayıcılar ve işlemciler) saklar ve modelleri yükleme, indirme ve kaydetme yöntemleri sağlar. Ayrıca şu yöntemleri içerir:

  • tüm PyTorch modüllerini seçtiğiniz cihaza taşıyın
  • gürültü azaltma yinelemesi için ilerleme çubuğunu etkinleştirme/devre dışı bırakma

Sınıf özellikleri:

  • config_name (str) — Tüm difüzyon hattı bileşenlerinin sınıf ve modül adlarını saklayan yapılandırma dosya adı.
  • _optional_components (List[str]) — Çalışması için pipeline'a iletilmesi gerekmeyen tüm isteğe bağlı bileşenlerin listesi (alt sınıflar tarafından geçersiz kılınmalıdır).

__call__

( *args**kwargs )

self'yi bir fonksiyon olarak çağırın.

cihaz

< >

( ) → torch.device

Dönüş değeri

torch.device

Pipeline'in bulunduğu torch cihazı. Bileşenler cihazlar arasında bölündüğünde (örneğin, metin kodlayıcılar CPU'da çalışırken gürültü azaltma omurgası bir hızlandırıcıda çalışıyorsa), hızlandırıcı cihazı döndürülür.

'a

< >

( *args**kwargs ) → DiffusionPipeline

Parametreler

  • dtype (torch.dtype, isteğe bağlı) — Belirtilen dtype ile bir pipeline döndürür
  • device (torch.Device, isteğe bağlı) — Belirtilen device ile bir pipeline döndürür
  • silence_dtype_warnings (str, isteğe bağlı, varsayılan False) — Hedef dtype, hedef device ile uyumlu değilse uyarıların atlanıp atlanmayacağı.

Dönüş değeri

DiffusionPipeline

Pipeline, belirtilen dtype ve/veya dtype değerine dönüştürüldü.

Performs Pipeline dtype and/or device conversion. A torch.dtype and torch.device are inferred from the arguments of self.to(*args, **kwargs).

> Pipeline zaten doğru torch.dtype ve torch.device değerlerine sahipse, olduğu gibi döndürülür. Aksi halde, > döndürülen pipeline, istenen torch.dtype ve torch.device değerlerine sahip self kopyasıdır.

to çağrısının yolları şunlardır:

  • Belirtilen dtype ile bir pipeline döndürmek için to(dtype, silence_dtype_warnings=False) → DiffusionPipeline
  • Belirtilen device ile bir pipeline döndürmek için to(device, silence_dtype_warnings=False) → DiffusionPipeline
  • Belirtilen device ve dtype değerlerine sahip bir pipeline döndürmek için to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline

bileşenleri

< >

( )

self.components özelliği, ek bellek tahsis etmeden aynı ağırlıkları ve yapılandırmaları kullanarak farklı boru hatlarını çalıştırmak için faydalı olabilir.

Döndürür (dict): Hattın (pipeline) başlatılması için gereken tüm modülleri içeren bir sözlük.

Örnekler:

>>> from diffusers import (
...     StableDiffusionPipeline,
...     StableDiffusionImg2ImgPipeline,
...     StableDiffusionInpaintPipeline,
... )

>>> text2img = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
>>> inpaint = StableDiffusionInpaintPipeline(**text2img.components)

disable_attention_slicing

< >

( )

Dilimlenmiş dikkat hesaplamasını devre dışı bırakır. enable_attention_slicing daha önce çağrıldıysa, dikkat tek adımda hesaplanır.

disable_xformers_memory_efficient_attention

< >

( )

xFormers için bellek verimli dikkati devre dışı bırakın.

indir

< >

( pretrained_model_name**kwargs ) → os.PathLike

Parametreler

  • pretrained_model_name (str veya os.PathLike, isteğe bağlı) — Hub üzerinde barındırılan önceden eğitilmiş bir pipeline'ın depo kimliği (örneğin CompVis/ldm-text2im-large-256) olan bir dize.
  • custom_pipeline (str, isteğe bağlı) — Şunlardan biri olabilir:
    • Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir hattın depo kimliği (örneğin CompVis/ldm-text2im-large-256). Depo, özel hattı tanımlayan pipeline.py adlı bir dosya içermelidir.

    • Bir dize, GitHub'da Community altında barındırılan bir topluluk hattının dosya adı. Geçerli dosya adları, hattın betiği değil dosya adıyla eşleşmelidir (clip_guided_stable_diffusion.py yerine clip_guided_stable_diffusion). Topluluk hatları her zaman GitHub'ın güncel main dalından yüklenir.

    • Özel bir pipeline içeren bir dizin (./my_pipeline_directory/) yolunu. Dizin, özel pipeline'ı tanımlayan pipeline.py adında bir dosya içermelidir.

    > 🧪 Bu deneysel bir özelliktir ve gelecekte değişebilir.

    Özel boru hatlarını nasıl yükleyip oluşturacağınız hakkında daha fazla bilgi için Topluluk boru hattı nasıl katkıda bulunulur başlıklı makaleye göz atın.

  • force_download (bool, isteğe bağlı, varsayılan False) — Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar.
  • proxies (Dict[str, str], isteğe bağlı) — Protokole veya uç noktaya göre kullanılacak vekil sunucuların sözlüğü, örneğin {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Vekiller her istekte kullanılır.
  • output_loading_info(bool, opsiyonel, varsayılan olarak False) — Eksik anahtarlar, beklenmeyen anahtarlar ve hata mesajlarını içeren bir sözlüğü de döndürülüp döndürülmeyeceğini belirtir.
  • local_files_only (bool, isteğe bağlı, varsayılan False) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. True olarak ayarlanırsa, model Hub'dan indirilmez.
  • token (str veya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. True ise, diffusers-cli login ile oluşturulan jeton ( ~/.huggingface içinde saklanır) kullanılır.
  • revision (str, isteğe bağlı, varsayılan "main") — Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir.
  • custom_revision (str, isteğe bağlı, varsayılan "main") — Kullanılacak belirli model sürümü. Hub'dan özel bir pipeline yüklenirken revision ile benzer şekilde bir dal adı, etiket adı veya commit kimliği olabilir. GitHub'dan özel bir pipeline yüklenirken bir 🤗 Diffusers sürümü olabilir, aksi takdirde Hub'dan yüklenirken varsayılan olarak "main" kullanılır.
  • mirror (str, isteğe bağlı) — Çin'de bir model indirirken erişilebilirlik sorunlarını çözmek için kullanılacak ayna kaynağı. Kaynağın güncelliğini veya güvenliğini garanti etmiyoruz; daha fazla bilgi için lütfen ayna sitesine başvurun.
  • variant (str, isteğe bağlı) — Ağırlıkları, "fp16" veya "ema" gibi belirtilen bir varyant dosya adından yükler.
  • use_safetensors (bool, isteğe bağlı, varsayılan None) — None olarak ayarlanırsa, safetensors ağırlıkları mevcut ve safetensors kütüphanesi yüklüyse indirilir. True olarak ayarlanırsa, model zorla safetensors ağırlıklarından yüklenir. False olarak ayarlanırsa, safetensors ağırlıkları yüklenmez.
  • use_onnx (bool, isteğe bağlı, varsayılan False) — True olarak ayarlanırsa, mevcut ise ONNX ağırlıkları her zaman indirilir. False olarak ayarlanırsa, ONNX ağırlıkları asla indirilmez. Varsayılan olarak use_onnx, _is_onnx sınıf özniteliğine eşittir; bu öznitelik ONNX olmayan hatlar için False, ONNX hatlar için ise True değerini alır. ONNX ağırlıkları, .onnx ve .pb uzantılı her iki dosyayı da içerir.
  • trust_remote_code (bool, isteğe bağlı, varsayılan False) — Hub'da kendi dosyalarında tanımlanan özel pipeline ve bileşenlere izin verilip verilmeyeceğini belirtir. Bu seçenek, yalnızca güvendiğiniz ve kodunu okuduğunuz depolar için True olarak ayarlanmalıdır; çünkü Hub'da bulunan kodu yerel makinenizde çalıştırır.
  • use_flashpack (bool, isteğe bağlı, varsayılan False) — True olarak ayarlanırsa, mevcut olan FlashPack ağırlıkları her zaman indirilir. False olarak ayarlanırsa, FlashPack ağırlıkları asla indirilmez.

Dönüş değeri

os.PathLike

İndirilen pipeline'ın yolu.

Önceden eğitilmiş pipeline ağırlıklarından bir PyTorch difüzyon pipeline'ını indirin ve önbelleğe alın.

> Özel veya kısıtlı modelleri kullanmak için `hf > auth login` ile oturum açın

enable_attention_slicing

< >

( slice_size: str | int = 'auto' )

Parametreler

  • slice_size (str veya int, isteğe bağlı, varsayılan "auto") — "auto" olduğunda, dikkat başlarına giden girdi ikiye bölünür ve dikkat iki adımda hesaplanır. "max" ise, her seferinde yalnızca bir dilim çalıştırılarak maksimum miktarda bellek tasarrufu sağlanır. Bir sayı verilirse, attention_head_dim // slice_size kadar dilim kullanılır. Bu durumda attention_head_dim değeri, slice_size değerinin katı olmalıdır.

Dilimlenmiş dikkat (attention) hesaplamasını etkinleştirir. Bu seçenek etkinleştirildiğinde, dikkat modülü, dikkati birden fazla adımda hesaplamak için girdi tensörünü dilimlere böler. Birden fazla dikkat başlığı (attention head) varsa, hesaplama her başlık üzerinde sıralı olarak gerçekleştirilir. Bu, küçük bir hız kaybı karşılığında bellek tasarrufu sağlamak için kullanışlıdır.

> ⚠️ PyTorch > 2.0 veya xFormers ile zaten scaled_dot_product_attention (SDPA) kullanıyorsanız dikkat dilimlemeyi (attention slicing) etkinleştirmeyin. Bu dikkat hesaplamaları zaten çok bellek verimlidir, bu nedenle bu işlevi etkinleştirmenize gerek yoktur. SDPA veya xFormers ile dikkat dilimlemeyi etkinleştirirseniz ciddi yavaşlamalara yol açabilir!

Örnekler:

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

enable_group_offload

< >

( onload_device: deviceoffload_device: device = torch.device()offload_type: str = 'block_level'num_blocks_per_group: int | None = Nonenon_blocking: bool = Falseuse_stream: bool = Falserecord_stream: bool = Falselow_cpu_mem_usage = Falseoffload_to_disk_path: str | None = Noneexclude_modules: str | list[str] | None = None )

Parametreler

  • onload_device (torch.device) — Modüller grubunun yüklendiği cihaz.
  • offload_device (torch.device, varsayılan torch.device("cpu")) — Modül grubunun aktarıldığı cihaz. Bu genellikle CPU olmalıdır. Varsayılan değer CPU'dur.
  • offload_type (str veya GroupOffloadingType, varsayılan “block_level”) — Uygulanacak offloading türü. “block_level” veya “leaf_level” değerlerinden biri olabilir. Varsayılan değer “block_level”dir.
  • offload_to_disk_path (str, isteğe bağlı, varsayılan None) — Parametrelerin taşınacağı dizinin yolu. Bu seçeneğin ayarlanması, makul bir hız-bellek ödüşlemesi istenen sınırlı RAM ortamı ayarlarında faydalı olabilir.
  • num_blocks_per_group (int, isteğe bağlı) — offload_type=“block_level” kullanıldığında grup başına blok sayısı. offload_type=“block_level” kullanıldığında zorunludur.
  • non_blocking (bool, varsayılan False) — True ise, offloading ve onloading işlemleri bloklayıcı olmayan veri aktarımıyla yapılır.
  • use_stream (bool, varsayılan False) — True ise, offloading ve onloading işlemleri bir CUDA stream kullanılarak asenkron olarak yapılır. Bu, hesaplama ve veri aktarımının üst üste binmesini sağlayarak faydalı olabilir.
  • record_stream (bool, varsayılan False) — use_stream ile etkinleştirildiğinde, mevcut tensörün bu akış tarafından kullanıldığını işaretler. Biraz daha fazla bellek kullanımı pahasına daha hızlıdır. Daha fazla ayrıntı için PyTorch resmi belgelerine bakın.
  • low_cpu_mem_usage (bool, varsayılan False) — True ise, tensörler önceden sabitlenmek yerine anlık olarak sabitlenerek CPU bellek kullanımı en aza indirilir. Bu seçenek yalnızca akışlı CPU dışa aktarma kullanıldığında (yani use_stream=True) önem taşır. Bu, CPU belleği darboğaz oluşturduğunda faydalı olabilir ancak akışların kullanımından sağlanan avantajları azaltabilir.
  • exclude_modules (Union[str, List[str]], varsayılan None) — Offloading'dan hariç tutulacak modüllerin listesi.

Bir torch.nn.Module'ün iç katmanlarına grup offloading uygular. Grup offloading'in ne olduğunu ve nerede faydalı olduğunu anlamak için, öncelikle diğer desteklenen offloading yöntemlerinin nasıl çalıştığına dair bazı bağlam sunmamız gerekir.

Genellikle, offloading iki düzeyde yapılır:

  • Modül düzeyinde: Diffusers'ta bu, ModelMixin::enable_model_cpu_offload() yöntemi kullanılarak etkinleştirilebilir. Çalışma mantığı, bir pipeline'ın her bileşenini depolama için CPU'ya aktarmak ve hesaplama için gerektiğinde hızlandırıcı cihaza geri yüklemektir. Bu yöntem, tüm bileşenleri hızlandırıcıda tutmaktan daha bellek verimlidir, ancak bellek gereksinimleri hâlâ oldukça yüksektir. Bu yöntemin çalışabilmesi için, ileri geçişi tamamlayabilmek adına çalışma zamanı veri türündeki model boyutuna eşdeğer bellek + en büyük ara aktivasyon tensörlerinin boyutu kadar belleğe ihtiyaç vardır.
  • Yaprak düzeyi: Diffusers'ta bu, ModelMixin::enable_sequential_cpu_offload() yöntemi kullanılarak etkinleştirilebilir. Hesaplama grafiğinin en alt yaprak düzeyindeki parametrelerini depolama için CPU'ya aktararak ve hesaplama için yalnızca yaprakları hızlandırıcı cihaza yükleyerek çalışır. Bu, en düşük hızlandırıcı bellek miktarını kullanır ancak aşırı sayıda cihaz senkronizasyonu nedeniyle daha yavaş olabilir.

Grup offloading, iki yöntem arasında bir orta yol sunar. İç katman gruplarını (ya da torch.nn.ModuleList ya da torch.nn.Sequential) offload ederek çalışır. Bu yöntem, modül düzeyindeki offloading'e göre daha az bellek kullanır. Ayrıca, cihaz senkronizasyonlarının sayısı azaldığı için yaprak düzeyi/sıralı offloading'den daha hızlıdır.

CUDA cihazlarında asenkron veri aktarım akışlarını destekleyenler için desteklenen bir diğer özellik, ardışık offloading'e kıyasla genel çalışma süresini azaltmak için veri aktarımı ile hesaplamayı üst üste bindirme yeteneğidir. Bu, akışlar kullanılarak katman ön yükleme (layer prefetching) ile etkinleştirilir; yani bir sonraki çalıştırılacak katman, mevcut katman çalıştırılırken hızla hızlandırıcı cihaza onloading edilir - bu, bellek gereksinimlerini biraz artırır. Bu uygulamanın yaprak seviyesinde offloading'i de desteklediğini, ancak akışlar kullanıldığında çok daha hızlı hale gelebileceğini unutmayın.

Örnek:

>>> from diffusers import DiffusionPipeline
>>> import torch

>>> pipe = DiffusionPipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16)

>>> pipe.enable_group_offload(
...     onload_device=torch.device("cuda"),
...     offload_device=torch.device("cpu"),
...     offload_type="leaf_level",
...     use_stream=True,
... )
>>> image = pipe("a beautiful sunset").images[0]

enable_model_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )

Parametreler

  • gpu_id (int, isteğe bağlı) — Çıkarım sırasında kullanılacak hızlandırıcının kimliği. Belirtilmezse, varsayılan olarak 0 kullanılır.
  • device (torch.Device veya str, isteğe bağlı, varsayılan: None) — Çıkarım sırasında kullanılacak hızlandırıcının PyTorch cihaz türü. Belirtilmezse, kullanılabilir hızlandırıcı otomatik olarak algılanır ve kullanılır.

Tüm modelleri accelerate kullanarak CPU'ya taşır ve performansa düşük etkiyle bellek kullanımını azaltır. enable_sequential_cpu_offload ile karşılaştırıldığında, bu yöntem bir modeli forward metodu çağrıldığında tek seferde tümüyle hızlandırıcıya taşır ve model, bir sonraki model çalışana kadar hızlandırıcıda kalır. Bellek tasarrufu enable_sequential_cpu_offload ile karşılaştırıldığında daha düşüktür, ancak unet'in iteratif çalıştırılması sayesinde performans çok daha iyidir.

enable_sequential_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )

Parametreler

  • gpu_id (int, isteğe bağlı) — Çıkarım sırasında kullanılacak hızlandırıcının kimliği. Belirtilmezse, varsayılan olarak 0 kullanılır.
  • device (torch.Device veya str, isteğe bağlı, varsayılan: None) — Çıkarım sırasında kullanılacak hızlandırıcının PyTorch cihaz türü. Belirtilmezse, kullanılabilir hızlandırıcı otomatik olarak algılanır ve kullanılır.

🤗 Accelerate kullanılarak tüm modeller CPU'ya aktarılır ve bellek kullanımı önemli ölçüde azaltılır. Çağrıldığında, self._exclude_from_cpu_offload içindekiler hariç olmak üzere tüm torch.nn.Module bileşenlerinin durum sözlükleri (state dicts) CPU'ya kaydedilir, ardından torch.device('meta') konumuna taşınır ve yalnızca ilgili alt modülün forward metodu çağrıldığında hızlandırıcıya (accelerator) yüklenir. Aktarma işlemi alt modül bazında gerçekleşir. Bellek tasarrufu enable_model_cpu_offload ile karşılaştırıldığında daha yüksektir, ancak performans daha düşüktür.

enable_xformers_memory_efficient_attention

< >

( attention_op: typing.Optional[typing.Callable] = None )

Parametreler

  • attention_op (Callable, isteğe bağlı) — memory_efficient_attention() fonksiyonunun op argümanı olarak kullanılacak varsayılan None operatörünü geçersiz kılar.

xFormers ile bellek verimli dikkati etkinleştirin. Bu seçenek etkinleştirildiğinde, GPU bellek kullanımının daha düşük olduğunu ve çıkarım sırasında olası bir hızlanmayı gözlemlemelisiniz. Eğitim sırasında hızlanma garanti edilmemektedir.

> ⚠️ Hem bellek verimli dikkat hem de dilimlenmiş dikkat etkinleştirildiğinde, bellek verimli dikkat > önceliklidir.

Örnekler:

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

from_pipe

< >

( pipeline**kwargs ) → DiffusionPipeline

Parametreler

  • pipeline (DiffusionPipeline) — Yeni bir pipeline oluşturulacak olan pipeline.

Dönüş değeri

DiffusionPipeline

pipeline ile aynı ağırlıklara ve yapılandırmalara sahip yeni bir pipeline.

Verilen bir pipeline'dan yeni bir pipeline oluşturun. Bu yöntem, ek bellek tahsis etmeden mevcut pipeline bileşenlerinden yeni bir pipeline oluşturmak için kullanışlıdır.

Örnekler:

>>> from diffusers import StableDiffusionPipeline, StableDiffusionSAGPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> new_pipe = StableDiffusionSAGPipeline.from_pipe(pipe)

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike**kwargs )

Parametreler

  • pretrained_model_name_or_path (str veya os.PathLike, isteğe bağlı) — Şu olabilir:
    • Hub'da barındırılan önceden eğitilmiş bir pipeline'ın repo id'si (örneğin CompVis/ldm-text2im-large-256) olan bir dize.
    • save_pretrained() kullanılarak kaydedilen pipeline ağırlıklarını içeren bir dizin (örneğin ./my_pipeline_directory/) yoluna
  • dtype (torch.dtype veya dict[str, Union[str, torch.dtype]], isteğe bağlı) — Varsayılan torch.dtype değerini geçersiz kılar ve modeli başka bir dtype ile yükler. Alt modelleri farklı dtype'lerle yüklemek için bir dict iletin (örneğin {'transformer': torch.bfloat16, 'vae': torch.float16}). Belirtilmeyen bileşenler için varsayılan dtype'i default ile ayarlayın (örneğin {'transformer': torch.bfloat16, 'default': torch.float16}). Bir bileşen belirtilmemiş ve varsayılan bir değer ayarlanmamışsa, torch.float32 kullanılır.
  • custom_pipeline (str, isteğe bağlı) —

    > 🧪 Bu deneysel bir özelliktir ve gelecekte değişebilir.

    Şunlardan biri olabilir:

    • Bir dize, Hub üzerinde barındırılan özel bir hattın repo id'si (örneğin hf-internal-testing/diffusers-dummy-pipeline). Depo, özel hattı tanımlayan pipeline.py adında bir dosya içermelidir.
    • Bir dize, GitHub'da Community altında barındırılan bir topluluk hattının dosya adı. Geçerli dosya adları, hattın betiği değil dosya adıyla eşleşmelidir (clip_guided_stable_diffusion.py yerine clip_guided_stable_diffusion). Topluluk hatları her zaman GitHub'ın güncel ana dalından yüklenir.
    • Özel bir pipeline içeren bir dizine (./my_pipeline_directory/) giden yol. Dizin, özel pipeline'ı tanımlayan pipeline.py adında bir dosya içermelidir.

    Özel boru hatlarını nasıl yükleyip oluşturacağınız hakkında daha fazla bilgi için Özel Boru Hatlarını Yükleme ve Ekleme bölümüne göz atın.

  • force_download (bool, isteğe bağlı, varsayılan False) — Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar.
  • cache_dir (Union[str, os.PathLike], isteğe bağlı) — Standart önbellek kullanılmıyorsa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alındığı dizinin yolu.
  • proxies (Dict[str, str], isteğe bağlı) — Protokole veya uç noktaya göre kullanılacak vekil sunucuların sözlüğü, örneğin {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Vekiller her istekte kullanılır.
  • output_loading_info(bool, opsiyonel, varsayılan olarak False) — Eksik anahtarlar, beklenmeyen anahtarlar ve hata mesajlarını içeren bir sözlüğü de döndürülüp döndürülmeyeceğini belirtir.
  • local_files_only (bool, isteğe bağlı, varsayılan False) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. True olarak ayarlanırsa, model Hub'dan indirilmez.
  • token (str veya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. True ise, diffusers-cli login ile oluşturulan jeton ( ~/.huggingface içinde saklanır) kullanılır.
  • revision (str, isteğe bağlı, varsayılan "main") — Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir.
  • custom_revision (str, isteğe bağlı) — Kullanılacak belirli model sürümü. Hub'dan özel bir pipeline yüklerken revision ile benzer şekilde bir dal adı, etiket adı veya commit kimliği olabilir. Varsayılan olarak en son kararlı 🤗 Diffusers sürümüdür.
  • mirror (str, isteğe bağlı) — Çin'de bir model indirirken erişilebilirlik sorunlarını çözmek için kullanılacak ayna kaynağı. Kaynağın güncelliğini veya güvenliğini garanti etmiyoruz; daha fazla bilgi için lütfen ayna sitesine başvurun.
  • device_map (str, isteğe bağlı) — Bir pipeline'ın farklı bileşenlerinin kullanılabilir cihazlara nasıl yerleştirileceğini belirleyen strateji. Şu anda yalnızca “balanced” device_map desteklenmektedir. Daha fazla bilgi için buraya bakın.
  • max_memory (Dict, isteğe bağlı) — Maksimum bellek için bir sözlük cihaz tanımlayıcısı. Ayarlanmazsa, varsayılan olarak her GPU için kullanılabilir maksimum bellek ve kullanılabilir CPU RAM'i olur.
  • offload_folder (str veya os.PathLike, isteğe bağlı) — "disk" değerini içeren bir device_map varsa, ağırlıkların taşınacağı yol.
  • offload_state_dict (bool, isteğe bağlı) — True ise, CPU state dict + checkpoint'in en büyük shard'ı sığmıyorsa CPU RAM'inin dolmasını önlemek için CPU state dict'i geçici olarak sabit diske taşır. Disk offload varsa varsayılan olarak True olur.
  • low_cpu_mem_usage (bool, isteğe bağlı, varsayılan olarak torch sürümü >= 1.9.0 ise True, aksi halde False) — Modeli yalnızca önceden eğitilmiş ağırlıkları yükleyerek ve ağırlıkları başlatmadan yüklemeyi hızlandırır. Bu, model yüklenirken (tepe bellek dahil) CPU belleğinde model boyutunun 1 katından fazlasını kullanmamaya da çalışır. Yalnızca PyTorch >= 1.9.0 için desteklenir. PyTorch'un daha eski bir sürümünü kullanıyorsanız, bu argümanı True olarak ayarlamak bir hata verecektir.
  • use_safetensors (bool, isteğe bağlı, varsayılan None) — None olarak ayarlanırsa, safetensors ağırlıkları mevcut ve safetensors kütüphanesi yüklüyse indirilir. True olarak ayarlanırsa, model zorla safetensors ağırlıklarından yüklenir. False olarak ayarlanırsa, safetensors ağırlıkları yüklenmez.
  • use_onnx (bool, isteğe bağlı, varsayılan None) — True olarak ayarlanırsa, mevcut ise ONNX ağırlıkları her zaman indirilir. False olarak ayarlanırsa, ONNX ağırlıkları asla indirilmez. Varsayılan olarak use_onnx, _is_onnx sınıf özniteliğine eşittir; bu öznitelik ONNX olmayan hatlar için False, ONNX hatlar için ise True değerini alır. ONNX ağırlıkları, .onnx ve .pb uzantılı her iki dosyayı da içerir.
  • kwargs (geri kalan anahtar kelime argümanları sözlüğü, isteğe bağlı) — Yükleme ve kaydedilebilir değişkenleri (belirli pipeline sınıfının pipeline bileşenlerini) geçersiz kılmak için kullanılabilir. Geçersiz kılınan bileşenler doğrudan pipeline'ın __init__ yöntemine iletilir. Daha fazla bilgi için aşağıdaki örneğe bakın.
  • variant (str, isteğe bağlı) — Ağırlıkları, "fp16" veya "ema" gibi belirtilen bir varyant dosya adından yükler.
  • disable_mmap (‘bool’, isteğe bağlı, varsayılan ‘False’) — Bir Safetensors modeli yüklenirken mmap'in devre dışı bırakılıp bırakılmayacağı. Model bir ağ biriminde veya sabit diskte olduğunda, bu ortamın mmap'in sıklıkla konum değiştirme (seek) gerektiren doğasını iyi yönetememesi nedeniyle bu seçenek daha iyi performans gösterebilir.

Önceden eğitilmiş pipeline ağırlıklarından bir PyTorch difüzyon pipeline'ı örnekleyin.

Hattın varsayılan olarak değerlendirme modunda (model.eval()) ayarlanır.

Aşağıdaki hata mesajını alıyorsanız, aşağı akış göreviniz için ağırlıkları ince ayar yapmanız gerekir:

Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.

> Özel veya korumalı modelleri kullanmak için hf > auth login ile oturum açın.

Örnekler:

>>> from diffusers import DiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")

>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")

>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler

>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler

maybe_free_model_hooks

< >

( )

Aşağıdakileri gerçekleştiren yöntem:

  • Tüm bileşenleri taşır.
  • enable_model_cpu_offload kullanılırken eklenen tüm model kancalarını kaldırır ve ardından onları yeniden uygular. Model taşınmamışsa, bu işlev hiçbir şey yapmaz.
  • register_hook() ile eklendilerse, denoiser bileşenlerinin durumlu diffusers kancalarını sıfırlar.

__call__ işlevinizin sonuna bu işlevi eklediğinizden emin olun, böylece enable_model_cpu_offload uygulandığında doğru şekilde çalışsın.

numpy_to_pil

< >

( images )

Bir NumPy görüntüsünü veya görüntü grubunu bir PIL görüntüsüne dönüştürür.

remove_all_hooks

< >

( )

enable_sequential_cpu_offload veya enable_model_cpu_offload kullanılırken eklenen tüm kanca (hook)ları kaldırır.

reset_device_map

< >

( )

Cihaz haritalarını (varsa) None olarak sıfırlar.

save_pretrained

< >

( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = Falseuse_flashpack: bool = False**kwargs )

Parametreler

  • save_directory (str veya os.PathLike) — Bir pipeline'ın kaydedileceği dizin. Var değilse oluşturulur.
  • safe_serialization (bool, isteğe bağlı, varsayılan True) — Modelin safetensors ile mi yoksa geleneksel PyTorch yöntemiyle pickle kullanılarak mı kaydedileceğini belirtir.
  • variant (str, isteğe bağlı) — Belirtilirse, ağırlıklar pytorch_model.<variant>.bin biçiminde kaydedilir.
  • max_shard_size (int veya str, varsayılan None) — Parçalanmadan önce bir kontrol noktasının (checkpoint) alabileceği en büyük boyut. Parçalanan kontrol noktalarının her biri bu boyuttan küçük olacaktır. Dize olarak ifade ediliyorsa, rakamların ardından birim (ör. "5GB") gelmelidir. Tamsayı olarak ifade ediliyorsa birim bayttır. Belirli bir süre sonra (Ekim 2024'ten itibaren) kullanıcıların diffusers'ın en son sürümüne yükselmesini sağlamak için bu sınırın düşürüleceğini unutmayın. Bu, Hugging Face ekosistemindeki farklı kütüphaneler arasında (örneğin transformers ve accelerate) bu argüman için ortak bir varsayılan boyut belirlemeyi amaçlamaktadır.
  • push_to_hub (bool, isteğe bağlı, varsayılan False) — Modelinizi kaydettikten sonra Hugging Face model hub'ına gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyu repo_id ile belirtebilirsiniz (varsayılan olarak ad alanınızdaki save_directory adını kullanır).
  • kwargs (Dict[str, Any], isteğe bağlı) — push_to_hub() yöntemine iletilen ek anahtar kelime argümanları.

Hattın (pipeline) tüm kaydedilebilir değişkenlerini bir dizine kaydeder. Bir hat değişkeni, sınıfı hem bir kaydetme hem de bir yükleme yöntemi uyguluyorsa kaydedilebilir ve yüklenebilir. Hat, from_pretrained() sınıf yöntemi kullanılarak kolayca yeniden yüklenebilir.

diffusers.StableDiffusionMixin.enable_freeu

< >

( s1: floats2: floatb1: floatb2: float )

Parametreler

  • s1 (float) — 1. aşama için, atlanan özelliklerin katkılarını azaltmak üzere kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki “aşırı yumuşatma etkisini” (oversmoothing effect) hafifletmek için yapılır.
  • s2 (float) — 2. aşama için, atlanan özelliklerin katkılarını azaltmak üzere kullanılan ölçekleme faktörü. Bu, iyileştirilmiş gürültü azaltma sürecindeki “aşırı yumuşatma etkisini” (oversmoothing effect) hafifletmek için yapılır.
  • b1 (float) — Omurga özelliklerinin katkılarını artırmak için 1. aşamanın ölçekleme çarpanı.
  • b2 (float) — Omurga özelliklerinin katkılarını artırmak için 2. aşamanın ölçekleme çarpanı.

https://huggingface.co/papers/2309.11497 makalesinde olduğu gibi FreeU mekanizmasını etkinleştirir.

Ölçekleme katsayılarının sonundaki ekler, bu katsayıların uygulandığı aşamaları temsil eder.

Stable Diffusion v1, v2 ve Stable Diffusion XL gibi farklı pipeline'lar için iyi çalıştığı bilinen değer kombinasyonları için resmi depoya bakın.

diffusers.StableDiffusionMixin.disable_freeu

< >

( )

Etkinse, FreeU mekanizmasını devre dışı bırakır.

PushToHubMixin

sınıf diffusers.utils.PushToHubMixin

< >

( )

Bir model, zamanlayıcı veya hattı Hugging Face Hub'a göndermek için bir Mixin.

push_to_hub

< >

( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )

Parametreler

  • repo_id (str) — Model, zamanlayıcı veya pipeline dosyalarınızı yüklemek istediğiniz depoyun adı. Bir organizasyona yüklerken organizasyon adınızı içermelidir. repo_id ayrıca yerel bir dizine giden bir yol da olabilir.
  • commit_message (str, isteğe bağlı) — İterken iletilecek mesaj. Varsayılan değer "Upload {object}".
  • private (bool, isteğe bağlı) — Deponun özel yapılıp yapılmayacağı. None (varsayılan) ise, organizasyonun varsayılanı özel değilse depo herkese açık olacaktır. Depo zaten mevcutsa bu değer yok sayılır.
  • token (str, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. hf auth login çalıştırıldığında oluşturulan jeton (~/.huggingface içinde saklanır).
  • create_pr (bool, isteğe bağlı, varsayılan False) — Yüklenen dosyalarla bir PR oluşturulup oluşturulmayacağı veya doğrudan commit atılıp atılmayacağı.
  • safe_serialization (bool, isteğe bağlı, varsayılan True) — Model ağırlıklarının safetensors biçimine dönüştürülüp dönüştürülmeyeceği.
  • variant (str, isteğe bağlı) — Belirtilirse, ağırlıklar pytorch_model.<variant>.bin biçiminde kaydedilir.

Model, zamanlayıcı veya boru hattı dosyalarını 🤗 Hugging Face Hub'a yükleyin.

Örnekler:

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")

Geri Çağrılar

sınıf diffusers.callbacks.PipelineCallback

< >

( cutoff_step_ratio = 1.0cutoff_step_index = None )

Bir pipeline'da kullanılan tüm resmi geri çağrılar (callbacks) için temel sınıf. Bu sınıf, özel geri çağrılar (callbacks) uygulaması için bir yapı sağlar ve tüm geri çağrıların (callbacks) tutarlı bir arayüze sahip olmasını garanti eder.

Lütfen şunları uygulayın: tensor_inputs: Bu, geri çağırmanız için özel gergilik girdileri listesini döndürmelidir. Sadece hattınız sınıfının ._callback_tensor_inputs özniteliğinde listelenen değişkenleri dahil edebilirsiniz. callback_fn: Bu yöntem, geri çağırmanızın çekirdek işlevselliğini tanımlar.

sınıf diffusers.callbacks.SDCFGCutoffCallback

< >

( cutoff_step_ratio = 1.0cutoff_step_index = None )

Stable Diffusion Pipelines için geri çağırma (callback) işlevi. Belirli bir adım sayısından sonra (cutoff_step_ratio veya cutoff_step_index ile ayarlanır), bu geri çağırma işlevi CFG'yi devre dışı bırakır.

Not: Bu geri çağrı, kesme adımından sonra _guidance_scale özniteliğini 0.0 olarak değiştirerek hattı değiştirir.

sınıf diffusers.callbacks.SDXLCFGCutoffCallback

< >

( cutoff_step_ratio = 1.0cutoff_step_index = None )

Temel Stable Diffusion XL Pipelines için geri çağırma (callback) işlevi. Belirli bir adım sayısından sonra (cutoff_step_ratio veya cutoff_step_index ile ayarlanır), bu geri çağırma işlevi CFG'yi devre dışı bırakır.

Not: Bu geri çağrı, kesme adımından sonra _guidance_scale özniteliğini 0.0 olarak değiştirerek hattı değiştirir.

sınıf diffusers.callbacks.SDXLControlnetCFGCutoffCallback

< >

( cutoff_step_ratio = 1.0cutoff_step_index = None )

Controlnet Stable Diffusion XL Pipelines için geri çağırma (callback) işlevi. Belirli bir adım sayısından sonra (cutoff_step_ratio veya cutoff_step_index ile ayarlanır), bu geri çağırma işlevi CFG'yi devre dışı bırakır.

Not: Bu geri çağrı, kesme adımından sonra _guidance_scale özniteliğini 0.0 olarak değiştirerek hattı değiştirir.

sınıf diffusers.callbacks.IPAdapterScaleCutoffCallback

< >

( cutoff_step_ratio = 1.0cutoff_step_index = None )

IPAdapterMixin sınıfından türeyen herhangi bir pipeline için geri çağrı (callback) işlevi. Belirli bir adım sayısından sonra (cutoff_step_ratio veya cutoff_step_index ile ayarlanır), bu geri çağrı IP Adapter ölçeğini 0.0 olarak ayarlar.

Not: Bu geri çağrı, kesme adımından sonra ölçeği 0.0 olarak ayarlayarak IP Adapter dikkat işleyicilerini değiştirir.

sınıf diffusers.callbacks.SD3CFGCutoffCallback

< >

( cutoff_step_ratio = 1.0cutoff_step_index = None )

Stable Diffusion 3 Pipelines için geri çağırma (callback) işlevi. Belirli bir adım sayısından sonra (cutoff_step_ratio veya cutoff_step_index ile ayarlanır), bu geri çağırma işlevi CFG'yi devre dışı bırakır.

Not: Bu geri çağrı, kesme adımından sonra _guidance_scale özniteliğini 0.0 olarak değiştirerek hattı değiştirir.

Update on GitHub