Diffusers documentation
UNet
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
LoRA katmanlarını UNet2DCondtionModel içine yükleyin.
load_attn_procs
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
Parametreler
- pretrained_model_name_or_path_or_dict (
strveyaos.PathLikeveyadict) — Ş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üğü.
- Bir dize, Hub üzerinde barındırılan önceden eğitilmiş bir modelin model kimliği (örneğin
- 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ı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. - 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. - 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.
save_attn_procs
< source >( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True**kwargs )
Parametreler
- save_directory (
strveyaos.PathLike) — Dikkat işleyicisinin (attention processor) kaydedileceği dizin (varsa oluşturulur). - is_main_process (
bool, isteğe bağlı, varsayılanTrue) — 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çinis_main_process=Truedeğ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ındatorch.saveyerine başka bir yöntem kullanmanız gerektiğinde faydalıdır.DIFFUSERS_SAVE_MODEortam değişkeni ile yapılandırılabilir. - safe_serialization (
bool, isteğe bağlı, varsayılanTrue) — Modelinsafetensorsile mi yoksapickleile 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")