Buckets:

hf-doc-build/doc / diffusers /main /tr /training /unconditional_training.md
mishig's picture
|
download
raw
8.73 kB
# Koşulsuz görüntü üretimi
Koşulsuz görüntü üretim modelleri, eğitim sırasında metin veya görüntülerle koşullandırılmaz. Sadece eğitim veri dağılımına benzeyen görüntüler üretir.
Bu kılavuz, [train_unconditional.py](https://github.com/huggingface/diffusers/blob/main/examples/unconditional_image_generation/train_unconditional.py) eğitim betiğini inceleyerek onu tanımanıza ve kendi kullanım senaryonuza nasıl uyarlayabileceğinizi gösterir.
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 .
```
Ardından, eğitim betiğini içeren örnek klasörüne gidin ve gerekli bağımlılıkları yükleyin:
```bash
cd examples/unconditional_image_generation
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.
## Betik parametreleri
> [!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/unconditional_image_generation/train_unconditional.py) okumaktan çekinmeyin ve herhangi bir sorunuz veya endişeniz varsa bize bildirin.
Eğitim betiği, eğitim çalışmanızı özelleştirmenize yardımcı olmak için birçok parametre sunar. Tüm parametreler ve açıklamaları [`parse_args()`](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L55) fonksiyonunda bulunur. Eğitim komut boyutu ve öğrenme oranı gibi her parametre için varsayılan değerler sağlar, ancak isterseniz eğitim komutunda kendi değerlerinizi de ayarlayabilirsiniz.
Örneğin, bf16 biçimini kullanarak karma hassasiyetle eğitimi hızlandırmak için eğitim komutuna `--mixed_precision` parametresini ekleyin:
```bash
accelerate launch train_unconditional.py \
--mixed_precision="bf16"
```
Belirtilmesi gereken bazı temel ve önemli parametreler şunlardır:
- `--dataset_name`: Hub'daki veri setinin adı veya eğitim için kullanılacak veri setine yerel bir yol
- `--output_dir`: eğitilen modelin kaydedileceği yer
- `--push_to_hub`: eğitilen modelin Hub'a gönderilip gönderilmeyeceği
- `--checkpointing_steps`: modelin eğitimi sırasında bir checkpoint'in kaydedilme sıklığı; eğitim yarıda kesilirse, eğitim komutunuza `--resume_from_checkpoint` ekleyerek bu checkpoint'ten eğitime devam edebilirsiniz
Veri setinizi getirin ve geri kalan her şeyi eğitim betiğine bırakın!
## Eğitim betiği
Veri setini ön işleme ve eğitim döngüsüne ait kod, [`main()`](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L275) fonksiyonunda bulunur. Eğitim betiğini uyarlaması gerekiyorsa, değişiklikleri burada yapmanız gerekir.
`train_unconditional` betiği, bir model yapılandırması sağlamadığınızda [`UNet2DModel` başlatır](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L356). İsterseniz UNet'i burada yapılandırabilirsiniz:
```py
model = UNet2DModel(
sample_size=args.resolution,
in_channels=3,
out_channels=3,
layers_per_block=2,
block_out_channels=(128, 128, 256, 256, 512, 512),
down_block_types=(
"DownBlock2D",
"DownBlock2D",
"DownBlock2D",
"DownBlock2D",
"AttnDownBlock2D",
"DownBlock2D",
),
up_block_types=(
"UpBlock2D",
"AttnUpBlock2D",
"UpBlock2D",
"UpBlock2D",
"UpBlock2D",
"UpBlock2D",
),
)
```
Ardından, betik bir [scheduler](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L418) ve [optimizer](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L429) başlatır:
```py
# Initialize the scheduler
accepts_prediction_type = "prediction_type" in set(inspect.signature(DDPMScheduler.__init__).parameters.keys())
if accepts_prediction_type:
noise_scheduler = DDPMScheduler(
num_train_timesteps=args.ddpm_num_steps,
beta_schedule=args.ddpm_beta_schedule,
prediction_type=args.prediction_type,
)
else:
noise_scheduler = DDPMScheduler(num_train_timesteps=args.ddpm_num_steps, beta_schedule=args.ddpm_beta_schedule)
# Initialize the optimizer
optimizer = torch.optim.AdamW(
model.parameters(),
lr=args.learning_rate,
betas=(args.adam_beta1, args.adam_beta2),
weight_decay=args.adam_weight_decay,
eps=args.adam_epsilon,
)
```
Ardından [bir veri seti yükler](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L451) ve nasıl [ön işleme](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L455) yapılacağını belirleyebilirsiniz:
```py
dataset = load_dataset("imagefolder", data_dir=args.train_data_dir, cache_dir=args.cache_dir, split="train")
augmentations = transforms.Compose(
[
transforms.Resize(args.resolution, interpolation=transforms.InterpolationMode.BILINEAR),
transforms.CenterCrop(args.resolution) if args.center_crop else transforms.RandomCrop(args.resolution),
transforms.RandomHorizontalFlip() if args.random_flip else transforms.Lambda(lambda x: x),
transforms.ToTensor(),
transforms.Normalize([0.5], [0.5]),
]
)
```
Son olarak, [eğitim döngüsü](https://github.com/huggingface/diffusers/blob/096f84b05f9514fae9f185cbec0a4d38fbad9919/examples/unconditional_image_generation/train_unconditional.py#L540), görüntülere gürültü ekleme, gürültü artığını tahmin etme, kaybı hesaplama, belirtilen adımlarda denetim noktalarını (checkpoint) kaydetme ve modeli Hub'a kaydedip gönderme gibi diğer tüm işlemleri ele alır. Eğitim döngüsünün nasıl çalıştığını daha ayrıntılı öğrenmek isterseniz, gürültü azaltma sürecinin temel kalıbını açıklayan [Pipeline'ları, modelleri ve zamanlayıcıları anlama](../using-diffusers/write_own_pipeline) eğitim materyaline göz atabilirsiniz.
## 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! 🚀
> [!WARNING]
> Tam bir eğitim çalışması 4xV100 GPU'larda 2 saat sürer.
```bash
accelerate launch train_unconditional.py \
--dataset_name="huggan/flowers-102-categories" \
--output_dir="ddpm-ema-flowers-64" \
--mixed_precision="fp16" \
--push_to_hub
```
Birden fazla GPU ile eğitim yapıyorsanız, eğitim komutuna `--multi_gpu` parametresini ekleyin:
```bash
accelerate launch --multi_gpu train_unconditional.py \
--dataset_name="huggan/flowers-102-categories" \
--output_dir="ddpm-ema-flowers-64" \
--mixed_precision="fp16" \
--push_to_hub
```
Eğitim betiği, depolamanızda bir kontrol noktası dosyası oluşturur ve kaydeder. Şimdi eğittiğiniz modeli yükleyip çıkarım için kullanabilirsiniz:
```py
from diffusers import DiffusionPipeline
import torch
pipeline = DiffusionPipeline.from_pretrained("anton-l/ddpm-butterflies-128").to("cuda") # or "mps", "xpu", "cpu"
image = pipeline().images[0]
```

Xet Storage Details

Size:
8.73 kB
·
Xet hash:
d0507cc55ac5537ec00017256a467b9890a012753bd7ea6727c705a2623bb8cd

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.