Buckets:
| # 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.