Buckets:
| # LoRA | |
| > [!WARNING] | |
| > Bu deneyseldir ve API gelecekte değişebilir. | |
| [LoRA (Low-Rank Adaptation of Large Language Models)](https://hf.co/papers/2106.09685), eğitilebilir parametre sayısını önemli ölçüde azaltan popüler ve hafif bir eğitim tekniğidir. Modelin içine daha az sayıda yeni ağırlık ekleyerek ve yalnızca bunları eğiterek çalışır. Bu sayede LoRA ile eğitim çok daha hızlı ve bellek verimli hale gelir; ayrıca depolaması ve paylaşması daha kolay olan daha küçük model ağırlıkları (birkaç yüz MB) üretilir. LoRA, eğitimi hızlandırmak için DreamBooth gibi diğer eğitim teknikleriyle de birleştirilebilir. | |
| > [!TIP] | |
| > LoRA çok yönlüdür ve [DreamBooth](https://github.com/huggingface/diffusers/blob/main/examples/dreambooth/train_dreambooth_lora.py), [Kandinsky 2.2](https://github.com/huggingface/diffusers/blob/main/examples/kandinsky2_2/text_to_image/train_text_to_image_lora_decoder.py), [Stable Diffusion XL](https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora_sdxl.py) ve [metinden görüntüye](https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py) için desteklenmektedir. | |
| Bu kılavuz, [train_text_to_image_lora.py](https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py) betiğini inceleyerek onu daha yakından tanımanıza ve kendi kullanım senaryonuza nasıl uyarlayabileceğinize yardımcı olacaktır. | |
| Betik çalıştırmadan önce, kütüphanenin kaynak kodundan yüklendiğinden emin olun: | |
| ```bash | |
| git clone https://github.com/huggingface/diffusers | |
| cd diffusers | |
| pip install . | |
| ``` | |
| Eğitim betiği içeren örnek klasörüne gidin ve kullandığınız betiğin gerektirdiği bağımlılıkları yükleyin: | |
| ```bash | |
| cd examples/text_to_image | |
| pip install -r requirements.txt | |
| ``` | |
| > [!TIP] | |
| > 🤗 Accelerate, birden fazla GPU/TPU ile veya karma hassasiyetle eğitim yapmanıza yardımcı olmak için tasarlanmış bir kütüphanedir. Donanımınıza ve ortamınıza göre eğitim kurulumunuzu otomatik olarak yapılandırır. Daha fazla bilgi edinmek için 🤗 Accelerate [Hızlı tur](https://huggingface.co/docs/accelerate/quicktour) sayfasına göz atın. | |
| Bir 🤗 Accelerate ortamı başlatın: | |
| ```bash | |
| accelerate config | |
| ``` | |
| Herhangi bir yapılandırma seçmeden varsayılan bir 🤗 Accelerate ortamı kurmak için: | |
| ```bash | |
| accelerate config default | |
| ``` | |
| Ya da ortamınız, bir notebook gibi, etkileşimli bir kabuğu desteklemiyorsa, şunu kullanabilirsiniz: | |
| ```py | |
| from accelerate.utils import write_basic_config | |
| write_basic_config() | |
| ``` | |
| Son olarak, kendi veri setiniz üzerinde bir model eğitmek istiyorsanız, eğitim scriptiyle uyumlu bir veri seti oluşturma yöntemini öğrenmek için [Eğitim için veri seti oluşturma](create_dataset) kılavuzuna göz atın. | |
| > [!TIP] | |
| > Aşağıdaki bölümler, betiğin nasıl değiştirileceğini anlamak için önemli olan eğitim betiğinin kısımlarını vurgular, ancak betiğin her yönünü ayrıntılı olarak kapsamaz. Daha fazla bilgi edinmek isterseniz, [betiği](https://github.com/huggingface/diffusers/blob/main/examples/text_to_image/train_text_to_image_lora.py) okumaktan çekinmeyin ve herhangi bir sorunuz veya endişeniz varsa bize bildirin. | |
| ## Betik parametreleri | |
| Eğitim betiği, eğitim çalışmanızı özelleştirmenize yardımcı olmak için birçok parametreye sahiptir. Tüm parametreler ve açıklamaları [`parse_args()`](https://github.com/huggingface/diffusers/blob/dd9a5caf61f04d11c0fa9f3947b69ab0010c9a0f/examples/text_to_image/train_text_to_image_lora.py#L85) fonksiyonunda bulunur. Çoğu parametre için oldukça iyi çalışan varsayılan değerler sağlanmıştır, ancak isterseniz kendi değerlerinizi eğitim komutunda da ayarlayabilirsiniz. | |
| Örneğin, eğitim için epoch sayısını artırmak için: | |
| ```bash | |
| accelerate launch train_text_to_image_lora.py \ | |
| --num_train_epochs=150 \ | |
| ``` | |
| Çok temel ve önemli parametreler [Metinden görüntüye](text2image#script-parameters) eğitim kılavuzunda anlatıldığından, bu kılavuz yalnızca LoRA ile ilgili parametrelere odaklanmaktadır: | |
| - `--rank`: eğitilecek düşük rütbeli matrislerin iç boyutu; daha yüksek rütbe, daha fazla eğitilebilir parametre anlamına gelir | |
| - `--learning_rate`: varsayılan öğrenme oranı 1e-4'tür ancak LoRA ile daha yüksek bir öğrenme oranı kullanabilirsiniz | |
| ## Eğitim betiği | |
| Veri seti ön işleme kodu ve eğitim döngüsü [`main()`](https://github.com/huggingface/diffusers/blob/dd9a5caf61f04d11c0fa9f3947b69ab0010c9a0f/examples/text_to_image/train_text_to_image_lora.py#L371) fonksiyonunda bulunur ve eğitim betiğini uyarlamanız gerekiyorsa değişikliklerinizi burada yaparsınız. | |
| Betik parametrelerinde olduğu gibi, eğitim betiğinin adım adım açıklaması [Metinden görüntüye](text2image#training-script) eğitim kılavuzunda sunulmaktadır. Bunun yerine bu kılavuz, betiğin LoRA ile ilgili kısımlarına odaklanmaktadır. | |
| Diffusers, LoRA adaptörünün parametrelerini (örneğin rank, alpha ve LoRA ağırlıklarının hangi modüllere yerleştirileceği) ayarlamak için [PEFT](https://hf.co/docs/peft) kütüphanesinden [LoraConfig](https://huggingface.co/docs/peft/main/en/package_reference/lora#peft.LoraConfig) sınıfını kullanır. Adaptör UNet'e eklenir ve `lora_layers` içinde yalnızca LoRA katmanları optimizasyon için filtrelenir. | |
| ```py | |
| unet_lora_config = LoraConfig( | |
| r=args.rank, | |
| lora_alpha=args.rank, | |
| init_lora_weights="gaussian", | |
| target_modules=["to_k", "to_q", "to_v", "to_out.0"], | |
| ) | |
| unet.add_adapter(unet_lora_config) | |
| lora_layers = filter(lambda p: p.requires_grad, unet.parameters()) | |
| ``` | |
| Diffusers, gerektiğinde (örneğin Stable Diffusion XL (SDXL) için ince ayar yaparken) [PEFT](https://hf.co/docs/peft) kütüphanesiyle metin kodlayıcısının LoRA ile ince ayarını da destekler. [LoraConfig](https://huggingface.co/docs/peft/main/en/package_reference/lora#peft.LoraConfig), LoRA adaptörünün parametrelerini yapılandırmak için kullanılır; bu parametreler metin kodlayıcıya eklenir ve eğitim için yalnızca LoRA katmanları filtrelenir. | |
| ```py | |
| text_lora_config = LoraConfig( | |
| r=args.rank, | |
| lora_alpha=args.rank, | |
| init_lora_weights="gaussian", | |
| target_modules=["q_proj", "k_proj", "v_proj", "out_proj"], | |
| ) | |
| text_encoder_one.add_adapter(text_lora_config) | |
| text_encoder_two.add_adapter(text_lora_config) | |
| text_lora_parameters_one = list(filter(lambda p: p.requires_grad, text_encoder_one.parameters())) | |
| text_lora_parameters_two = list(filter(lambda p: p.requires_grad, text_encoder_two.parameters())) | |
| ``` | |
| [optimizer](https://github.com/huggingface/diffusers/blob/e4b8f173b97731686e290b2eb98e7f5df2b1b322/examples/text_to_image/train_text_to_image_lora.py#L529), yalnızca optimize edilecek ağırlıklar olduğu için `lora_layers` ile başlatılır: | |
| ```py | |
| optimizer = optimizer_cls( | |
| lora_layers, | |
| lr=args.learning_rate, | |
| betas=(args.adam_beta1, args.adam_beta2), | |
| weight_decay=args.adam_weight_decay, | |
| eps=args.adam_epsilon, | |
| ) | |
| ``` | |
| LoRA katmanlarını yapılandırmak dışında, eğitim scripti büyük ölçüde train_text_to_image.py ile aynıdır! | |
| ## Betik başlat | |
| Tüm değişikliklerinizi yaptıysanız veya varsayılan yapılandırmayla sorununuz yoksa, eğitim betiğini başlatmaya hazırsınız! 🚀 | |
| Kendi Naruto karakterlerinizi üretmek için [Naruto BLIP captions](https://huggingface.co/datasets/lambdalabs/naruto-blip-captions) veri setinde eğitim yapalım. `MODEL_NAME` ve `DATASET_NAME` ortam değişkenlerini sırasıyla model ve veri setine ayarlayın. Ayrıca modelin nereye kaydedileceğini `OUTPUT_DIR` ile ve Hub'a kaydedilecek modelin adını `HUB_MODEL_ID` ile belirtmelisiniz. Betik, repozitorinize aşağıdaki dosyaları oluşturur ve kaydeder: | |
| - kaydedilen model denetim noktaları | |
| - `pytorch_lora_weights.safetensors` (eğitilmiş LoRA ağırlıkları) | |
| Birden fazla GPU üzerinde eğitim yapıyorsanız, `accelerate launch` komutuna `--multi_gpu` parametresini ekleyin. | |
| > [!WARNING] | |
| > Tam bir eğitim çalışması, 11 GB VRAM'li bir 2080 Ti GPU üzerinde yaklaşık 5 saat sürer. | |
| ```bash | |
| export MODEL_NAME="stable-diffusion-v1-5/stable-diffusion-v1-5" | |
| export OUTPUT_DIR="/sddata/finetune/lora/naruto" | |
| export HUB_MODEL_ID="naruto-lora" | |
| export DATASET_NAME="lambdalabs/naruto-blip-captions" | |
| accelerate launch --mixed_precision="fp16" train_text_to_image_lora.py \ | |
| --pretrained_model_name_or_path=$MODEL_NAME \ | |
| --dataset_name=$DATASET_NAME \ | |
| --dataloader_num_workers=8 \ | |
| --resolution=512 \ | |
| --center_crop \ | |
| --random_flip \ | |
| --train_batch_size=1 \ | |
| --gradient_accumulation_steps=4 \ | |
| --max_train_steps=15000 \ | |
| --learning_rate=1e-04 \ | |
| --max_grad_norm=1 \ | |
| --lr_scheduler="cosine" \ | |
| --lr_warmup_steps=0 \ | |
| --output_dir=${OUTPUT_DIR} \ | |
| --push_to_hub \ | |
| --hub_model_id=${HUB_MODEL_ID} \ | |
| --report_to=wandb \ | |
| --checkpointing_steps=500 \ | |
| --validation_prompt="A naruto with blue eyes." \ | |
| --seed=1337 | |
| ``` | |
| Eğitim tamamlandıktan sonra, modelinizi çıkarım için kullanabilirsiniz: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", dtype=torch.float16).to("cuda") # or "mps", "xpu", "cpu" | |
| pipeline.load_lora_weights("path/to/lora/model", weight_name="pytorch_lora_weights.safetensors") | |
| image = pipeline("A naruto with blue eyes").images[0] | |
| ``` | |
| ## Sonraki adımlar | |
| LoRA ile yeni bir model eğittiğiniz için tebrikler! Yeni modelinizi nasıl kullanacağınızı öğrenmek için aşağıdaki kılavuzlar size yardımcı olabilir: | |
| - Kohya ve TheLastBen gibi topluluk eğitimcileri kullanılarak eğitilmiş [farklı LoRA biçimlerini](../tutorials/using_peft_for_inference) nasıl yükleyeceğinizi öğrenin. | |
| - PEFT ile çıkarım için birden fazla LoRA'yı nasıl kullanıp [birleştireceğinizi](../tutorials/using_peft_for_inference) öğrenin. | |
Xet Storage Details
- Size:
- 10.1 kB
- Xet hash:
- 7b167358521a73df6ce23a7c20766ac497dd3e8b1e65028d5c8e973d0b6b7f88
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.