Diffusers documentation

UNet

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

UNet

Bazı eğitim yöntemleri - LoRA ve Custom Diffusion gibi - genellikle UNet’in dikkat katmanlarını hedefler, ancak bu eğitim yöntemleri diğer dikkat dışı katmanları da hedefleyebilir. Modelin tüm parametrelerini eğitmek yerine, yalnızca parametrelerin bir alt kümesi eğitilir; bu daha hızlı ve verimlidir. Bu sınıf, yalnızca ağırlıkları bir UNet’e yüklediğinizde kullanışlıdır. Ağırlıkları metin kodlayıcıya veya hem metin kodlayıcıya hem de UNet’e yüklemeniz gerekiyorsa, bunun yerine load_lora_weights() işlevini kullanmayı deneyin.

UNet2DConditionLoadersMixin sınıfı, ağırlıkları yükleme ve kaydetme, LoRA'ları birleştirme ve ayırma, LoRA'ları devre dışı bırakma ve etkinleştirme ile adaptörleri ayarlama ve silme işlevlerini sağlar.

LoRA ağırlıklarının nasıl yükleneceğini öğrenmek için LoRA kılavuzuna bakın.

UNet2DConditionLoadersMixin

sınıf diffusers.loaders.UNet2DConditionLoadersMixin

< >

( )

LoRA katmanlarını UNet2DCondtionModel içine yükleyin.

load_attn_procs

< >

( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )

Parametreler

  • pretrained_model_name_or_path_or_dict (str veya os.PathLike veya dict) — Şunlardan biri olabilir:
    • Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin google/ddpm-celebahq-256).
    • Model ağırlıklarını ModelMixin.save_pretrained() ile kaydeden bir dizine (örneğin ./my_model_directory) giden yol.
    • Bir torch durum sözlüğü.
  • cache_dir (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.
  • 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.
  • 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.
  • subfolder (str, isteğe bağlı, varsayılan "") — Hub'da veya yerel olarak daha büyük bir model deposu içindeki bir model dosyasının alt klasör konumu.
  • weight_name (str, isteğe bağlı, varsayılan None) — Seri hale getirilmiş state dict dosyasının adı.

Önceden eğitilmiş Custom Diffusion dikkat işlemci katmanlarını UNet2DConditionModel içine yükler. Dikkat işlemci katmanları attention_processor.py içinde tanımlanmış olmalı ve bir torch.nn.Module sınıfı olmalıdır. LoRA katmanlarını yüklemek için bunun yerine load_lora_adapter() kullanın.

Örnek:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")

save_attn_procs

< >

( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True**kwargs )

Parametreler

  • save_directory (str veya os.PathLike) — Dikkat işleyicisinin (attention processor) kaydedileceği dizin (varsa oluşturulur).
  • is_main_process (bool, isteğe bağlı, varsayılan True) — Bu fonksiyonu çağıran sürecin ana süreç olup olmadığı. Dağıtık eğitim sırasında ve bu fonksiyonun tüm süreçlerde çağrılması gerektiğinde kullanışlıdır. Bu durumda, yarış durumlarını önlemek için is_main_process=True değerini yalnızca ana süreçte ayarlayın.
  • save_function (Callable) — Durum sözlüğünü kaydetmek için kullanılacak işlev. Dağıtık eğitim sırasında torch.save yerine başka bir yöntem kullanmanız gerektiğinde faydalıdır. DIFFUSERS_SAVE_MODE ortam değişkeni ile yapılandırılabilir.
  • safe_serialization (bool, isteğe bağlı, varsayılan True) — Modelin safetensors ile mi yoksa pickle ile mi kaydedileceğini belirtir.

Özel Diffusion dikkat işlemci katmanlarını, load_attn_procs() yöntemiyle yeniden yüklenebilecek şekilde bir dizine kaydedin. LoRA katmanlarını kaydetmek için bunun yerine save_lora_adapter() kullanın.

Örnek:

import torch
from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
Update on GitHub