Diffusers documentation
Hattalar
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önteminintorch.no_graddekoratö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
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).
cihaz
< source >( ) → 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
< source >( *args**kwargs ) → DiffusionPipeline
Parametreler
- dtype (
torch.dtype, isteğe bağlı) — Belirtilendtypeile bir pipeline döndürür - device (
torch.Device, isteğe bağlı) — Belirtilendeviceile bir pipeline döndürür - silence_dtype_warnings (
str, isteğe bağlı, varsayılanFalse) — Hedefdtype, hedefdeviceile uyumlu değilse uyarıların atlanıp atlanmayacağı.
Dönüş değeri
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
dtypeile bir pipeline döndürmek içinto(dtype, silence_dtype_warnings=False) → DiffusionPipeline - Belirtilen
deviceile bir pipeline döndürmek içinto(device, silence_dtype_warnings=False) → DiffusionPipeline - Belirtilen
devicevedtypedeğerlerine sahip bir pipeline döndürmek içinto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline
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)Dilimlenmiş dikkat hesaplamasını devre dışı bırakır. enable_attention_slicing daha önce çağrıldıysa, dikkat tek adımda hesaplanır.
xFormers için bellek verimli dikkati devre dışı bırakın.
indir
< source >( pretrained_model_name**kwargs ) → os.PathLike
Parametreler
- pretrained_model_name (
strveyaos.PathLike, isteğe bağlı) — Hub üzerinde barındırılan önceden eğitilmiş bir pipeline'ın depo kimliği (örneğinCompVis/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ımlayanpipeline.pyadlı 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.pyyerineclip_guided_stable_diffusion). Topluluk hatları her zaman GitHub'ın güncelmaindalından yüklenir. -
Özel bir pipeline içeren bir dizin (
./my_pipeline_directory/) yolunu. Dizin, özel pipeline'ı tanımlayanpipeline.pyadı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ılanFalse) — 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 olarakFalse) — 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ılanFalse) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir.Trueolarak ayarlanırsa, model Hub'dan indirilmez. - token (
strveya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise,diffusers-cli loginile oluşturulan jeton (~/.huggingfaceiç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üklenirkenrevisionile 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ılanNone) —Noneolarak ayarlanırsa, safetensors ağırlıkları mevcut ve safetensors kütüphanesi yüklüyse indirilir.Trueolarak ayarlanırsa, model zorla safetensors ağırlıklarından yüklenir.Falseolarak ayarlanırsa, safetensors ağırlıkları yüklenmez. - use_onnx (
bool, isteğe bağlı, varsayılanFalse) —Trueolarak ayarlanırsa, mevcut ise ONNX ağırlıkları her zaman indirilir.Falseolarak ayarlanırsa, ONNX ağırlıkları asla indirilmez. Varsayılan olarakuse_onnx,_is_onnxsınıf özniteliğine eşittir; bu öznitelik ONNX olmayan hatlar içinFalse, ONNX hatlar için iseTruedeğerini alır. ONNX ağırlıkları,.onnxve.pbuzantılı her iki dosyayı da içerir. - trust_remote_code (
bool, isteğe bağlı, varsayılanFalse) — 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çinTrueolarak ayarlanmalıdır; çünkü Hub'da bulunan kodu yerel makinenizde çalıştırır. - use_flashpack (
bool, isteğe bağlı, varsayılanFalse) —Trueolarak ayarlanırsa, mevcut olan FlashPack ağırlıkları her zaman indirilir.Falseolarak 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
< source >( slice_size: str | int = 'auto' )
Parametreler
- slice_size (
strveyaint, 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_sizekadar dilim kullanılır. Bu durumdaattention_head_dimdeğeri,slice_sizedeğ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
< source >( 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ılantorch.device("cpu")) — Modül grubunun aktarıldığı cihaz. Bu genellikle CPU olmalıdır. Varsayılan değer CPU'dur. - offload_type (
strveyaGroupOffloadingType, 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ılanNone) — 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ılanFalse) — True ise, offloading ve onloading işlemleri bloklayıcı olmayan veri aktarımıyla yapılır. - use_stream (
bool, varsayılanFalse) — 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ılanFalse) —use_streamile 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ılanFalse) — 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 (yaniuse_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ılanNone) — 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
< source >( 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.Deviceveyastr, 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
< source >( 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.Deviceveyastr, 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
< source >( attention_op: typing.Optional[typing.Callable] = None )
Parametreler
- attention_op (
Callable, isteğe bağlı) —memory_efficient_attention()fonksiyonununopargümanı olarak kullanılacak varsayılanNoneoperatö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
< source >( pipeline**kwargs ) → DiffusionPipeline
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.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs )
Parametreler
- pretrained_model_name_or_path (
strveyaos.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
- Hub'da barındırılan önceden eğitilmiş bir pipeline'ın repo id'si (örneğin
- dtype (
torch.dtypeveyadict[str, Union[str, torch.dtype]], isteğe bağlı) — Varsayılantorch.dtypedeğerini geçersiz kılar ve modeli başka bir dtype ile yükler. Alt modelleri farklı dtype'lerle yüklemek için birdictiletin (örneğin{'transformer': torch.bfloat16, 'vae': torch.float16}). Belirtilmeyen bileşenler için varsayılan dtype'idefaultile ayarlayın (örneğin{'transformer': torch.bfloat16, 'default': torch.float16}). Bir bileşen belirtilmemiş ve varsayılan bir değer ayarlanmamışsa,torch.float32kullanı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.pyyerineclip_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ımlayanpipeline.pyadı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.
- Bir dize, Hub üzerinde barındırılan özel bir hattın repo id'si (örneğin
- force_download (
bool, isteğe bağlı, varsayılanFalse) — 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 olarakFalse) — 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ılanFalse) — Yalnızca yerel model ağırlıkları ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir.Trueolarak ayarlanırsa, model Hub'dan indirilmez. - token (
strveya bool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise,diffusers-cli loginile oluşturulan jeton (~/.huggingfaceiç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üklerkenrevisionile 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_mapdesteklenmektedir. 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 (
strveyaos.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ı) —Trueise, 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 olarakTrueolur. - low_cpu_mem_usage (
bool, isteğe bağlı, varsayılan olarak torch sürümü >= 1.9.0 iseTrue, aksi haldeFalse) — 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ıTrueolarak ayarlamak bir hata verecektir. - use_safetensors (
bool, isteğe bağlı, varsayılanNone) —Noneolarak ayarlanırsa, safetensors ağırlıkları mevcut ve safetensors kütüphanesi yüklüyse indirilir.Trueolarak ayarlanırsa, model zorla safetensors ağırlıklarından yüklenir.Falseolarak ayarlanırsa, safetensors ağırlıkları yüklenmez. - use_onnx (
bool, isteğe bağlı, varsayılanNone) —Trueolarak ayarlanırsa, mevcut ise ONNX ağırlıkları her zaman indirilir.Falseolarak ayarlanırsa, ONNX ağırlıkları asla indirilmez. Varsayılan olarakuse_onnx,_is_onnxsınıf özniteliğine eşittir; bu öznitelik ONNX olmayan hatlar içinFalse, ONNX hatlar için iseTruedeğerini alır. ONNX ağırlıkları,.onnxve.pbuzantı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 loginile 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 = schedulerAşağıdakileri gerçekleştiren yöntem:
- Tüm bileşenleri taşır.
enable_model_cpu_offloadkullanı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.
Bir NumPy görüntüsünü veya görüntü grubunu bir PIL görüntüsüne dönüştürür.
enable_sequential_cpu_offload veya enable_model_cpu_offload kullanılırken eklenen tüm kanca (hook)ları kaldırır.
Cihaz haritalarını (varsa) None olarak sıfırlar.
save_pretrained
< source >( 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 (
strveyaos.PathLike) — Bir pipeline'ın kaydedileceği dizin. Var değilse oluşturulur. - safe_serialization (
bool, isteğe bağlı, varsayılanTrue) — Modelinsafetensorsile mi yoksa geleneksel PyTorch yöntemiylepicklekullanılarak mı kaydedileceğini belirtir. - variant (
str, isteğe bağlı) — Belirtilirse, ağırlıklarpytorch_model.<variant>.binbiçiminde kaydedilir. - max_shard_size (
intveyastr, varsayılanNone) — 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ındiffusers'ı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ğintransformersveaccelerate) bu argüman için ortak bir varsayılan boyut belirlemeyi amaçlamaktadır. - push_to_hub (
bool, isteğe bağlı, varsayılanFalse) — Modelinizi kaydettikten sonra Hugging Face model hub'ına gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyurepo_idile belirtebilirsiniz (varsayılan olarak ad alanınızdakisave_directoryadı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
< source >( 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.
Etkinse, FreeU mekanizmasını devre dışı bırakır.
PushToHubMixin
Bir model, zamanlayıcı veya hattı Hugging Face Hub'a göndermek için bir Mixin.
push_to_hub
< source >( 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_idayrı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 (~/.huggingfaceiçinde saklanır). - create_pr (
bool, isteğe bağlı, varsayılanFalse) — 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ılanTrue) — Model ağırlıklarınınsafetensorsbiçimine dönüştürülüp dönüştürülmeyeceği. - variant (
str, isteğe bağlı) — Belirtilirse, ağırlıklarpytorch_model.<variant>.binbiç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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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.