Amazon SageMaker JumpStart ile metinden görüntüye Stable Difüzyon modellerinde ince ayar yapın

Amazon SageMaker JumpStart ile metinden görüntüye Stable Difüzyon modellerinde ince ayar yapın

Kaynak Düğüm: 1968900

Kasım 2022'de biz açıkladı AWS müşterilerinin metinden görüntüler oluşturabilmesi Kararlı Difüzyon modelleri Amazon SageMaker Hızlı Başlangıç. Stable Diffusion, yalnızca birkaç saniye içinde gerçekçi, yüksek kaliteli görüntüler ve çarpıcı sanat eserleri oluşturmanıza olanak tanıyan bir derin öğrenme modelidir. Etkileyici görüntüler oluşturmak, sanattan NFT'lere ve ötesine uzanan sektörlerde kullanım bulsa da, bugün yapay zekanın da kişiselleştirilebilir olmasını bekliyoruz. Bugün, görüntü oluşturma modelini, özel veri kümenizde ince ayar yaparak kullanım durumunuza göre kişiselleştirebileceğinizi duyuruyoruz. Amazon SageMaker Hızlı Başlangıç. Bu, sanat eserleri, logolar, özel tasarımlar, NFT'ler vb. oluştururken veya evcil hayvanlarınızın özel AI görüntülerini veya kendinizin avatarlarını oluşturmak gibi eğlenceli şeyler oluştururken faydalı olabilir.

Bu gönderide, Kararlı Yayılma modelinde iki şekilde nasıl ince ayar yapılacağına dair bir genel bakış sunuyoruz: program aracılığıyla Hızlı Başlangıç ​​API'leri içinde mevcut SageMaker Python SDK'sıve JumpStart'ın kullanıcı arabirimi (UI) Amazon SageMaker Stüdyosu. Ayrıca, veri kümesi kalitesi, eğitim veri kümesi boyutu, hiperparametre değerleri seçimi ve birden çok veri kümesine uygulanabilirlik dahil olmak üzere tasarım seçimlerinin nasıl yapılacağını tartışıyoruz. Son olarak, yakın zamanda JumpStart'a eklenen farklı giriş dilleri ve stillerine sahip, halka açık 80'den fazla ince ayarlı modeli tartışıyoruz.

Kararlı Difüzyon ve transfer öğrenme

Stable Difüzyon, yalnızca bir metin isteminden fotogerçekçi görüntüler oluşturmanıza olanak tanıyan bir metinden görüntüye modelidir. Bir difüzyon modeli, gerçek bir görüntüye eklenen paraziti ortadan kaldırmayı öğrenerek eğitir. Bu gürültü giderme işlemi gerçekçi bir görüntü oluşturur. Bu modeller ayrıca, oluşturma sürecini metne göre koşullandırarak yalnızca metinden görüntüler oluşturabilir. Örneğin, Kararlı Yayılma, modelin saf gürültü görüntüsündeki şekilleri tanımayı öğrendiği ve şekiller giriş metnindeki sözcüklerle eşleşirse bu şekilleri kademeli olarak odağa getirdiği gizli bir yayılmadır. Metin önce bir dil modeli kullanılarak gizli bir alana gömülmelidir. Daha sonra U-Net mimarisi ile gizli uzayda bir dizi gürültü ekleme ve gürültü giderme işlemleri gerçekleştirilir. Son olarak, gürültüden arındırılmış çıktının kodu piksel alanına deşifre edilir.

Makine öğreniminde (ML), bir alanda öğrenilen bilgileri başka bir alana aktarma yeteneğine denir. öğrenme aktarımı. Orijinal modelin eğitilmesinden çok daha düşük eğitim maliyetleriyle, daha küçük veri kümelerinizde doğru modeller üretmek için transfer öğrenmeyi kullanabilirsiniz. Transfer öğrenimi ile, kendi veri kümenizde en az beş görüntüyle kararlı difüzyon modelinde ince ayar yapabilirsiniz. Örneğin, solda, modele ince ayar yapmak için kullanılan Doppler adlı bir köpeğin eğitim görüntüleri, ortada ve sağda, kumsaldaki Doppler görüntüsünü tahmin etmesi istendiğinde ince ayarlı model tarafından oluşturulan görüntüler ve bir kalem çizimi var.

Solda, modele ince ayar yapmak için kullanılan beyaz bir sandalyenin resimleri ve ince ayarlı model tarafından oluşturulan kırmızı sandalyenin bir resmi var. Sağda, modele ince ayar yapmak için kullanılan bir pufun resimleri ve punta oturan bir kedinin görüntüsü var.

Stable Diffusion gibi büyük modellerde ince ayar yapmak için genellikle eğitim komut dosyaları sağlamanız gerekir. Yetersiz bellek sorunları, yük boyutu sorunları ve daha fazlasını içeren bir dizi sorun vardır. Ayrıca betiğin, modelin ve istenen örneğin verimli bir şekilde birlikte çalıştığından emin olmak için uçtan uca testler yapmanız gerekir. JumpStart, güçlü bir şekilde test edilmiş kullanıma hazır komut dosyaları sağlayarak bu süreci basitleştirir. Kararlı Difüzyon modelleri için JumpStart ince ayar komut dosyası, rüya kabini. Bu komut dosyalarına Studio kullanıcı arabirimi üzerinden tek bir tıklamayla veya çok az kod satırıyla erişebilirsiniz. Hızlı Başlangıç ​​API'leri.

Kararlı Yayılma modelini kullanarak şunları kabul ettiğinizi unutmayın: CreativeML Open RAIL++-M Lisansı.

JumpStart'ı SageMaker SDK ile programlı olarak kullanın

Bu bölüm, modelin nasıl eğitileceğini ve konuşlandırılacağını açıklar. SageMaker Python SDK'sı. JumpStart'ta önceden eğitilmiş uygun bir model seçiyoruz, bu modeli bir SageMaker eğitim işiyle eğitiyoruz ve eğitilen modeli bir SageMaker uç noktasına dağıtıyoruz. Ayrıca, tamamı SageMaker Python SDK kullanarak dağıtılan uç nokta üzerinde çıkarım yapıyoruz. Aşağıdaki örnekler kod parçacıklarını içerir. Bu demodaki tüm adımları içeren kodun tamamı için bkz. JumpStart'a Giriş – Metinden Görüntüye örnek defter.

Kararlı Difüzyon modelini eğitin ve ince ayar yapın

Her model benzersiz bir şekilde tanımlanır model_id. Aşağıdaki kod, tarafından tanımlanan bir Stable Diffusion 2.1 temel modelinde nasıl ince ayar yapılacağını gösterir. model_id model-txt2img-stabilityai-stable-diffusion-v2-1-base özel bir eğitim veri kümesinde. tam listesi için model_id değerler ve hangi modellerde ince ayar yapılabilir, bkz. Önceden eğitilmiş Model Tablosu ile Yerleşik Algoritmalar. Her biri için model_idaracılığıyla bir SageMaker eğitim işi başlatmak için Tahminci SageMaker Python SDK sınıfı, SageMaker'da sağlanan yardımcı işlevler yoluyla Docker görüntü URI'sini, eğitim komut dosyası URI'sini ve önceden eğitilmiş model URI'sini getirmeniz gerekir. Eğitim betiği URI'si, veri işleme, önceden eğitilmiş modeli yükleme, model eğitimi ve eğitilen modeli çıkarım için kaydetme için gerekli tüm kodu içerir. Önceden eğitilmiş model URI'si, önceden eğitilmiş model mimarisi tanımını ve model parametrelerini içerir. Önceden eğitilmiş model URI'si, belirli modele özeldir. Önceden eğitilmiş model tarball'ları, Hugging Face'ten önceden indirilmiş ve uygun model imzasıyla kaydedilmiştir. Amazon Basit Depolama Hizmeti (Amazon S3) paketleri, eğitim işi ağ yalıtımında çalışacak şekilde. Aşağıdaki koda bakın:

from sagemaker import image_uris, model_uris, script_uris # Currently, not all the stable diffusion models in jumpstart support finetuning. Thus, we manually select a model
# which supports finetuning.
train_model_id, train_model_version, train_scope = ( "model-txt2img-stabilityai-stable-diffusion-v2-1-base", "*", "training",
) # Tested with ml.g4dn.2xlarge (16GB GPU memory) and ml.g5.2xlarge (24GB GPU memory) instances. Other instances may work as well.
# If ml.g5.2xlarge instance type is available, please change the following instance type to speed up training.
training_instance_type = "ml.g4dn.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
region=None,
framework=None, # automatically inferred from model_id
model_id=train_model_id,
model_version=train_model_version,
image_scope=train_scope,
instance_type=training_instance_type,
) # Retrieve the training script. This contains all the necessary files including data processing, model training etc.
train_source_uri = script_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
) # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

Bu modele özgü eğitim yapıtlarıyla, bir nesneyi oluşturabilirsiniz. Tahminci sınıf:

# Create SageMaker Estimator instance
sd_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", # Entry-point file in source_dir and present in train_source_uri. instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location, base_job_name=training_job_name,
) # Launch a SageMaker Training job by passing s3 path of the training data
sd_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Eğitim veri seti

Eğitim verilerinin nasıl biçimlendirilmesi gerektiğine ilişkin talimatlar aşağıdadır:

  • Giriş – Örnek görüntüleri içeren bir dizin, dataset_info.json, aşağıdaki yapılandırmayla:
    • Resimler .png, .jpg veya .jpeg formatında olabilir
    • The dataset_info.json dosya biçiminde olmalıdır {'instance_prompt':<<instance_prompt>>}
  • Çıktı – Çıkarım için dağıtılabilen eğitimli bir model

S3 yolu şöyle görünmelidir s3://bucket_name/input_directory/. Sondaki not / gerekli.

Eğitim verilerinin örnek formatı aşağıdadır:

input_directory |---instance_image_1.png |---instance_image_2.png |---instance_image_3.png |---instance_image_4.png |---instance_image_5.png |---dataset_info.json

Ön koruma kullanılırken verilerin nasıl biçimlendirileceğine ilişkin talimatlar için bölüme bakın. Ön Koruma bu yazıda.

Kedi görüntüleri için varsayılan bir veri kümesi sağlıyoruz. Sınıf görüntüsü olmayan tek bir kedinin sekiz görüntüsünden (örnek istemine karşılık gelen örnek görüntüler) oluşur. Şuradan indirilebilir: GitHub. Varsayılan veri kümesi kullanılıyorsa, demo not defterinde çıkarım yaparken “a photo of a riobugger cat” istemini deneyin.

Lisans: İLE.

Hiperparametreler

Daha sonra, özel veri kümenizde aktarım öğrenimi için eğitim hiperparametrelerinin varsayılan değerlerini değiştirmeniz gerekebilir. Bu hiperparametrelerin bir Python sözlüğünü varsayılan değerleriyle çağırarak alabilirsiniz. hyperparameters.retrieve_default, bunları gerektiği gibi güncelleyin ve ardından Estimator sınıfına iletin. Aşağıdaki koda bakın:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
model_id=train_model_id, model_version=train_model_version
) # [Optional] Override default hyperparameters with custom values
hyperparameters["max_steps"] = "400"

Aşağıdaki hiperparametreler ince ayar algoritması tarafından desteklenir:

  • with_prior_preservation – Önceki koruma kaybını eklemek için işaretleyin. Ön koruma, fazla takmayı önleyen bir düzenleyicidir. (Seçenekler: [“True”,“False”], varsayılan: “False”.)
  • sayı_sınıf_images – Önceki koruma kaybı için minimum sınıf görüntüler. Eğer with_prior_preservation = True ve halihazırda mevcut olan yeterli resim yok class_data_dir, ek resimler ile örneklenecek class_prompt. (Değerler: pozitif tamsayı, varsayılan: 100.)
  • Dönemler – İnce ayar algoritmasının eğitim veri kümesinden geçtiği geçiş sayısı. (Değerler: pozitif tamsayı, varsayılan: 20.)
  • Maksimum_steps – Gerçekleştirilecek eğitim adımlarının toplam sayısı. değilse None, çağları geçersiz kılar. (Değerler: “None” veya bir tamsayı dizisi, varsayılan: “None”.)
  • Parti boyutu –: Model ağırlıkları güncellenmeden önce üzerinde çalışılan eğitim örneklerinin sayısı. Aşağıdaki durumlarda, sınıf görüntüleri oluşturma sırasında toplu iş boyutuyla aynı with_prior_preservation = True. (Değerler: pozitif tamsayı, varsayılan: 1.)
  • öğrenme oranı – Her bir eğitim örneği grubu üzerinde çalıştıktan sonra model ağırlıklarının güncellenme hızı. (Değerler: pozitif kayan nokta, varsayılan: 2e-06.)
  • önceki_kayıp_ağırlık – Önceki saklama kaybının ağırlığı. (Değerler: pozitif kayan nokta, varsayılan: 1.0.)
  • center_crop – İstenen çözünürlüğe yeniden boyutlandırmadan önce resimlerin kırpılıp kırpılmayacağı. (Seçenekler: [“True”/“False”], varsayılan: “False”.)
  • lr_scheduler – Öğrenme oranı planlayıcısının türü. (Seçenekler: ["linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup"], varsayılan: "constant".) Daha fazla bilgi için bakınız Öğrenme Hızı Planlayıcıları.
  • adam_weight_decay – Tüm bias ve hariç tüm katmanlara (sıfır değilse) uygulanacak ağırlık azalması ve LayerNorm ağırlıklar AdamW optimize edici. (Değer: kayan nokta, varsayılan: 1e-2.)
  • adam_beta1 – Beta1 hiperparametresi (ilk an tahminleri için üstel bozulma oranı) AdamW optimize edici. (Değer: kayan nokta, varsayılan: 0.9.)
  • adam_beta2 – Beta2 hiperparametresi (ilk an tahminleri için üstel bozulma oranı) AdamW optimize edici. (Değer: kayan nokta, varsayılan: 0.999.)
  • adam_epsilon - epsilon için hiperparametre AdamW optimize edici. 0'a bölünmeyi önlemek için genellikle küçük bir değere ayarlanır. (Değer: kayan nokta, varsayılan: 1e-8.)
  • degrade_accumulation_steps – Geri/güncelleme geçişi gerçekleştirmeden önce birikecek güncelleme adımlarının sayısı. (Değer: tamsayı, varsayılan: 1.)
  • max_grad_norm – Maksimum gradyan normu (gradyan kırpma için). (Değer: kayan nokta, varsayılan: 1.0.)
  • tohum – Eğitimde tekrarlanabilir sonuçlar elde etmek için rastgele durumu düzeltin. (Değer: tamsayı, varsayılan: 0.)

İyi eğitilmiş modeli devreye alın

Model eğitimi tamamlandıktan sonra, modeli kalıcı, gerçek zamanlı bir uç noktaya doğrudan dağıtabilirsiniz. Gerekli Docker Image URI'lerini ve komut dosyası URI'lerini getiriyoruz ve modeli dağıtıyoruz. Aşağıdaki koda bakın:

inference_instance_type = "ml.g4dn.2xlarge" # Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, # automatically inferred from model_id image_scope="inference", model_id=train_model_id, model_version=train_model_version, instance_type=inference_instance_type,
) # Retrieve the inference script uri. This includes scripts for model loading, inference handling etc.
deploy_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope="inference"
) # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = sd_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", # entry point file in source_dir and present in deploy_source_uri image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

Solda, modelde ince ayar yapmak için kullanılan riobugger adlı bir kedinin eğitim görüntüleri var (varsayılan parametreler hariç max_steps = 400). Ortada ve sağda, riobugger'ın kumsaldaki görüntüsünü ve bir kalem eskizini tahmin etmesi istendiğinde ince ayarlı model tarafından oluşturulan görüntüler var.

Desteklenen parametreler, yanıt formatı vb. dahil olmak üzere çıkarım hakkında daha fazla ayrıntı için bkz. Amazon SageMaker JumpStart'taki kararlı dağıtım modeliyle metinden görüntüler oluşturun.

Studio UI aracılığıyla JumpStart'a erişin

Bu bölümde, JumpStart modellerinin Studio kullanıcı arabirimi aracılığıyla nasıl eğitileceğini ve konuşlandırılacağını gösteriyoruz. Aşağıdaki video, JumpStart'ta önceden eğitilmiş Kararlı Difüzyon modelinin nasıl bulunacağını, eğitileceğini ve ardından konuşlandırılacağını gösterir. Model sayfası, model ve nasıl kullanılacağı hakkında değerli bilgiler içerir. SageMaker eğitim örneğini yapılandırdıktan sonra, Tren. Model eğitildikten sonra, eğitilen modeli seçerek dağıtabilirsiniz. Sürüş. Uç nokta "hizmet içi" aşamasında olduktan sonra, çıkarım isteklerine yanıt vermeye hazırdır.

Çıkarım yapma süresini hızlandırmak için JumpStart, yeni oluşturulan uç noktada çıkarımın nasıl çalıştırılacağını gösteren örnek bir not defteri sağlar. Not defterine Studio'da erişmek için Not Defterini Aç içinde Studio'dan Endpoint'i kullanın model bitiş noktası sayfasının bölümü.

JumpStart ayrıca, kararlı difüzyon modelinde ince ayar yapmak ve ortaya çıkan ince ayarlı modeli dağıtmak için kullanabileceğiniz basit bir not defteri sağlar. Köpeğinizin eğlenceli görüntülerini oluşturmak için kullanabilirsiniz. Not defterine erişmek için, JumpStart arama çubuğunda "Köpeğinizin Eğlenceli resimlerini oluşturun" ifadesini arayın. Not defterini çalıştırmak için en az beş eğitim görüntüsü kullanabilir ve yerel stüdyo klasörüne yükleyebilirsiniz. Beşten fazla görseliniz varsa onları da yükleyebilirsiniz. Notebook, eğitim görüntülerini S3'e yükler, modeli veri kümenizde eğitir ve ortaya çıkan modeli dağıtır. Eğitimin tamamlanması 20 dakika sürebilir. Antrenmanı hızlandırmak için adım sayısını değiştirebilirsiniz. Notebook, dağıtılan modelle denemek için bazı örnek istemler sağlar, ancak istediğiniz herhangi bir istemi deneyebilirsiniz. Not defterini kendinizin veya evcil hayvanlarınızın avatarlarını oluşturmak için de uyarlayabilirsiniz. Örneğin, köpeğinizin yerine ilk adımda kedinizin resimlerini yükleyebilir ve ardından istemleri köpeklerden kedilere çevirebilirsiniz ve model kedinizin resimlerini oluşturacaktır.

İnce ayar konuları

Kararlı Difüzyon modellerini eğitmek, hızlı bir şekilde aşırı uyum sağlama eğilimindedir. Kaliteli görüntüler elde etmek için, eğitim adımı sayısı ve öğrenme hızı gibi mevcut eğitim hiperparametreleri arasında iyi bir denge bulmalıyız. Bu bölümde, bazı deneysel sonuçları gösteriyoruz ve bu parametrelerin nasıl ayarlanacağına dair rehberlik sağlıyoruz.

Öneriler

Aşağıdaki önerileri göz önünde bulundurun:

  • Kaliteli egzersiz görüntüleri ile başlayın (4–20). İnsan yüzleri üzerinde eğitim yapıyorsanız, daha fazla görüntüye ihtiyacınız olabilir.
  • Köpekler veya kediler ve diğer insan olmayan nesneler üzerinde egzersiz yaparken 200-400 adımlık egzersiz yapın. İnsan yüzleri üzerinde egzersiz yapıyorsanız, daha fazla adıma ihtiyacınız olabilir. Aşırı uyum olursa, adım sayısını azaltın. Yetersiz yerleştirme olursa (ince ayarlı model hedef öznenin görüntüsünü oluşturamaz), adım sayısını artırın.
  • İnsan olmayan yüzlerde egzersiz yapıyorsanız, with_prior_preservation = False çünkü performansı önemli ölçüde etkilemez. İnsan yüzlerinde, ayarlamanız gerekebilir. with_prior_preservation=True.
  • eğer ayar with_prior_preservation=True, ml.g5.2xlarge örnek türünü kullanın.
  • Ardışık olarak birden fazla konu üzerinde eğitim yaparken, konular çok benzerse (örneğin, tüm köpekler), model son konuyu korur ve önceki konuları unutur. Denekler farklıysa (örneğin, önce bir kedi, sonra bir köpek), model her iki özneyi de tutar.
  • Düşük bir öğrenme oranı kullanmanızı ve sonuçlar tatmin edici olana kadar adım sayısını aşamalı olarak artırmanızı öneririz.

Eğitim veri seti

İnce ayarlı modelin kalitesi, eğitim görüntülerinin kalitesinden doğrudan etkilenir. Bu nedenle, iyi sonuçlar almak için yüksek kaliteli görüntüler toplamanız gerekir. Bulanık veya düşük çözünürlüklü görüntüler, ince ayarlı modelin kalitesini etkileyecektir. Aşağıdaki ek parametreleri unutmayın:

  • Eğitim görüntülerinin sayısı – En fazla dört eğitim görüntüsünde modele ince ayar yapabilirsiniz. En az 4 görüntü ve en fazla 16 görüntü boyutunda eğitim veri kümeleri denedik. Her iki durumda da ince ayar, modeli konuya uyarlamayı başardı.
  • Veri kümesi biçimleri – İnce ayar algoritmasını .png, .jpg ve .jpeg formatındaki görüntülerde test ettik. Diğer formatlar da çalışabilir.
  • Görüntü çözünürlüğü – Egzersiz görüntüleri herhangi bir çözünürlükte olabilir. İnce ayar algoritması, ince ayara başlamadan önce tüm egzersiz görüntülerini yeniden boyutlandıracaktır. Bununla birlikte, eğitim görüntülerinin kırpılması ve yeniden boyutlandırılması üzerinde daha fazla kontrole sahip olmak istiyorsanız, görüntüleri modelin temel çözünürlüğüne (bu örnekte 512×512 piksel) göre yeniden boyutlandırmanızı öneririz.

deneme ayarları

Bu gönderideki deneyde, ince ayar yaparken, belirtilmedikçe hiperparametrelerin varsayılan değerlerini kullanıyoruz. Ayrıca, dört veri kümesinden birini kullanıyoruz:

  • Köpek1-8 – 1 resimli Köpek 8
  • Köpek1-16 – 1 resimli Köpek 16
  • Köpek2-4 – Dört resimli Köpek 2
  • Kedi-8 – 8 resimli kedi

Dağınıklığı azaltmak için, veri kümesi adıyla birlikte her bölümde veri kümesinin yalnızca bir temsili görüntüsünü gösteriyoruz. Eğitim setinin tamamını bölümde bulabilirsiniz. Deney Veri Kümeleri bu yazıda.

Aşırı uyum gösterme

Kararlı Difüzyon modelleri, birkaç görüntü üzerinde ince ayar yapıldığında aşırı uyum sağlama eğilimindedir. Bu nedenle, gibi parametreleri seçmeniz gerekir. epochs, max_epochsve öğrenme hızı dikkatlice. Bu bölümde Dog1-16 veri setini kullandık.

Modelin performansını değerlendirmek için, ince ayarlı modeli dört görev için değerlendiriyoruz:

  • İnce ayarlı model, üzerinde eğitildiği aynı ortamda öznenin (Doppler köpeği) görüntülerini üretebilir mi?
    • Gözlem - Evet yapabilir. Eğitim adımı sayısı arttıkça model performansının arttığını belirtmekte fayda var.
  • İnce ayarlı model, eğitildiğinden farklı bir ortamda öznenin görüntülerini oluşturabilir mi? Örneğin, bir kumsalda Doppler görüntüleri üretebilir mi?
    • Gözlem - Evet yapabilir. Belli bir noktaya kadar yapılan eğitim adımlarının sayısı ile model performansının arttığını belirtmekte fayda var. Bununla birlikte, model çok uzun süre eğitiliyorsa, model aşırı uyum sağlama eğiliminde olduğundan model performansı düşer.
  • İnce ayarlı model, eğitim konusunun ait olduğu bir sınıfın görüntülerini oluşturabilir mi? Örneğin, cins bir köpeğin görüntüsünü oluşturabilir mi?
    • Gözlem – Eğitim adımı sayısını artırdıkça, model aşırı uyum sağlamaya başlar. Sonuç olarak, bir köpeğin genel sınıfını unutur ve yalnızca konuyla ilgili görüntüler üretir.
  • İnce ayarlı model, eğitim veri setinde olmayan bir sınıfın veya konunun görüntülerini oluşturabilir mi? Örneğin, bir kedinin görüntüsünü oluşturabilir mi?
    • Gözlem – Eğitim adımı sayısını artırdıkça, model aşırı uyum sağlamaya başlar. Sonuç olarak, belirtilen sınıf ne olursa olsun, yalnızca konuyla ilgili görüntüler üretecektir.

Modelde farklı sayıda adım için ince ayar yaparız (ayarlayarak max_steps hiperparametreler) ve ince ayarlı her model için, aşağıdaki dört istemin her birinde görüntüler oluşturuyoruz (aşağıdaki örneklerde soldan sağa gösterilmiştir):

  • “Bir Doppler köpeğinin fotoğrafı”
  • "Sahilde bir Doppler köpeğinin fotoğrafı"
  • “Köpek fotoğrafı”
  • “Bir kedi fotoğrafı”

Aşağıdaki görseller 50 adımda eğitilen modelden alınmıştır.

Aşağıdaki model 100 adımda eğitilmiştir.

Aşağıdaki modeli 200 adımda eğittik.

Aşağıdaki görseller 400 adımda eğitilmiş bir modelden alınmıştır.

Son olarak aşağıdaki görseller 800 adımın sonucudur.

Birden çok veri kümesi üzerinde eğitim

İnce ayar yaparken, birden fazla konu üzerinde ince ayar yapmak ve ince ayarlı modelin tüm konuların görüntülerini oluşturabilmesini isteyebilirsiniz. Ne yazık ki, JumpStart şu anda tek bir konudaki eğitimle sınırlıdır. Modelde aynı anda birden çok konuda ince ayar yapamazsınız. Ayrıca, farklı konular için sırayla modele ince ayar yapmak, konular benzerse modelin ilk konuyu unutmasına neden olur.

Bu bölümde aşağıdaki deneyi ele alıyoruz:

  1. Konu A için modelde ince ayar yapın.
  2. Konu B için Adım 1'den elde edilen modelde ince ayar yapın.
  3. Adım 2'deki çıktı modelini kullanarak Özne A ve Özne B'nin resimlerini oluşturun.

Aşağıdaki deneylerde şunu gözlemliyoruz:

  • A köpek 1 ve B köpek 2 ise, Adım 3'te oluşturulan tüm görüntüler köpek 2'ye benzer.
  • A köpek 2 ve B köpek 1 ise, Adım 3'te oluşturulan tüm görüntüler köpek 1'ye benzer.
  • A köpek 1 ve B kedi ise, köpek istemleriyle oluşturulan görüntüler köpek 1'e ve kedi istemleriyle oluşturulan görüntüler kediye benzer

Köpek 1 ve ardından köpek 2 üzerinde eğitim

Adım 1'de, köpek 200'in sekiz görüntüsü üzerinde 1 adım için modelin ince ayarını yapıyoruz. Adım 2'de, modelin ince ayarını köpek 200'nin dört görüntüsü üzerinde 2 adım daha yapıyoruz.

Aşağıdakiler, farklı bilgi istemleri için Adım 2'nin sonunda ince ayarlı model tarafından oluşturulan görüntülerdir.

Köpek 2 ve ardından köpek 1 üzerinde eğitim

Adım 1'de, köpek 200'nin dört görüntüsü üzerinde 2 adım için modelde ince ayar yapıyoruz. Adım 2'de, modelde köpek 200'in sekiz görüntüsü üzerinde 1 adım daha ince ayar yapıyoruz.

Aşağıdakiler, Adım 2'nin sonunda ince ayarlı model tarafından farklı istemlerle oluşturulan görüntülerdir.

Köpekler ve kediler üzerinde eğitim

Adım 1'de, bir kedinin sekiz resmi üzerinde 200 adım için modele ince ayar yapıyoruz. Ardından, köpek 200'in sekiz görüntüsünde modele 1 adım daha ince ayar yaparız.

Aşağıdakiler, 2. Adımın sonunda ince ayarlı model tarafından oluşturulan görüntülerdir. Kedi ile ilgili uyarılara sahip görüntüler, ince ayarın 1. Adımındaki kediye benzer ve köpekle ilgili komutlara sahip görüntüler, İnce ayarın 2. adımı.

Ön koruma

Ön koruma, üzerinde eğitmeye çalıştığımız aynı sınıfın ek görüntülerini kullanan bir tekniktir. Örneğin, eğitim verileri belirli bir köpeğin önceden korunan görüntülerinden oluşuyorsa, cins köpeklerin sınıf görüntülerini dahil ederiz. Belirli bir köpeğe eğitim verirken farklı köpeklerin görüntülerini göstererek aşırı uyumdan kaçınmaya çalışır. Örnek isteminde bulunan belirli köpeği gösteren bir etiket, sınıf isteminde eksik. Örneğin, örnek bilgi istemi "a photo of a riobugger cat" olabilir ve sınıf istemi "a photo of a cat" olabilir. Hiperparametreyi ayarlayarak ön korumayı etkinleştirebilirsiniz. with_prior_preservation = True. Eğer ayar with_prior_preservation = True, eklemelisiniz class_prompt in dataset_info.json ve kullanabileceğiniz tüm sınıf resimlerini içerebilir. Ayar yaparken eğitim veri kümesi formatı aşağıdadır with_prior_preservation = True:

  • Giriş – Örnek görüntüleri içeren bir dizin, dataset_info.json ve (isteğe bağlı) dizin class_data_dir. Aşağıdakilere dikkat et:
    • Görseller .png, .jpg, .jpeg formatında olabilir.
    • The dataset_info.json dosya biçiminde olmalıdır {'instance_prompt':<<instance_prompt>>,'class_prompt':<<class_prompt>>}.
    • The class_data_dir dizinde sınıf görüntüleri olmalıdır. Eğer class_data_dir mevcut değil veya halihazırda mevcut olan yeterli resim yok class_data_dir, ek resimler ile örneklenecek class_prompt.

Kediler ve köpekler gibi veri kümeleri için önceden koruma, ince ayarlı modelin performansını önemli ölçüde etkilemez ve bu nedenle kaçınılabilir. Ancak, yüzler üzerinde egzersiz yaparken bu gereklidir. Daha fazla bilgi için bkz. Difüzörler Kullanarak Dreambooth ile Kararlı Difüzyon Eğitimi.

Örnek türleri

Kararlı Difüzyon modellerinde ince ayar yapılması, GPU destekli bulut sunucuları tarafından sağlanan hızlandırılmış hesaplama gerektirir. İnce ayarımızı ml.g4dn.2xlarge (16 GB CUDA bellek, 1 GPU) ve ml.g5.2xlarge (24 GB CUDA bellek, 1 GPU) bulut sunucuları ile deniyoruz. Sınıf görüntüleri oluşturulurken bellek gereksinimi daha yüksektir. Bu nedenle, eğer ayar with_prior_preservation=True, ml.g5.2xlarge bulut sunucusu türünü kullanın çünkü eğitim, ml.g4dn.2xlarge bulut sunucusunda CUDA yetersiz bellek sorunuyla karşılaşıyor. JumpStart ince ayar betiği şu anda tek GPU'yu kullanmaktadır ve bu nedenle çoklu GPU bulut sunucularında ince ayar yapmak performans kazancı sağlamayacaktır. Farklı örnek türleri hakkında daha fazla bilgi için bkz. Amazon EC2 Bulut Sunucusu Türleri.

Sınırlamalar ve önyargı

Kararlı Difüzyon, görüntü oluşturmada etkileyici bir performansa sahip olsa da, çeşitli sınırlamalardan ve önyargılardan muzdariptir. Bunlar şunları içerir ancak bunlarla sınırlı değildir:

  • Eğitim verileri bu özelliklere sahip yeterli sayıda resim içermediğinden, model doğru yüzler veya uzuvlar oluşturamayabilir.
  • Model üzerinde eğitildi LAION-5B veri kümesiyetişkinlere uygun içeriğe sahip ve daha fazla değerlendirme yapılmadan ürün kullanımına uygun olmayabilecek
  • Model İngilizce metin üzerine eğitildiğinden, model İngilizce dışındaki dillerde iyi çalışmayabilir.
  • Model, resimler içinde iyi metin oluşturamıyor

Sınırlamalar ve yanlılık hakkında daha fazla bilgi için bkz. Kararlı Difüzyon v2-1 tabanlı Model Kartı. Önceden eğitilmiş modele yönelik bu sınırlamalar, ince ayarlı modellere de aktarılabilir.

Temizlemek

Not defterini çalıştırmayı bitirdikten sonra, faturalandırmanın durdurulmasını sağlamak için süreçte oluşturulan tüm kaynakları sildiğinizden emin olun. Uç noktayı temizlemeye yönelik kod, ilgili JumpStart'a Giriş – Metinden Görüntüye örnek defter.

JumpStart'ta halka açık ince ayarlı modeller

tarafından piyasaya sürülen Stable Difusion modelleri KararlılıkAI Etkileyici bir performansa sahip olsalar da, eğitildikleri dil veya alan açısından sınırlamaları vardır. Örneğin, Kararlı Difüzyon modelleri İngilizce metin üzerinde eğitildi, ancak İngilizce olmayan metinden görüntüler oluşturmanız gerekebilir. Alternatif olarak, Kararlı Difüzyon modelleri fotogerçekçi görüntüler oluşturmak için eğitilmiştir, ancak animasyonlu veya sanatsal görüntüler oluşturmanız gerekebilir.

JumpStart, çeşitli diller ve temalar ile halka açık 80'den fazla model sağlar. Bu modeller genellikle StabilityAI tarafından yayınlanan Stable Diffusion modellerinin ince ayarlı versiyonlarıdır. Kullanım durumunuz ince ayarlı modellerden biriyle eşleşiyorsa kendi veri kümenizi toplayıp ince ayar yapmanıza gerek yoktur. Bu modellerden birini Studio kullanıcı arabirimi aracılığıyla veya kullanımı kolay JumpStart API'lerini kullanarak dağıtabilirsiniz. JumpStart'ta önceden eğitilmiş bir Kararlı Difüzyon modeli devreye almak için bkz. Amazon SageMaker JumpStart'taki kararlı dağıtım modeliyle metinden görüntüler oluşturun.

Aşağıda, JumpStart'ta bulunan farklı modeller tarafından oluşturulan bazı görüntü örnekleri bulunmaktadır.

Bu modellerin JumpStart betikleri veya DreamBooth betikleri kullanılarak ince ayarının yapılmadığını unutmayın. Herkese açık ince ayarlı modellerin tam listesini örnek istemlerle birlikte şu adresten indirebilirsiniz: okuyun.

Bu modellerden daha fazla örnek oluşturulmuş görüntü için lütfen bölüme bakın. Açık Kaynaklı İnce ayarlı modeller ekte.

Sonuç

Bu gönderide, metinden görüntüye için Kararlı Yayılma modelinde nasıl ince ayar yapılacağını ve ardından JumpStart kullanılarak nasıl devreye alınacağını gösterdik. Ayrıca, modele ince ayar yaparken göz önünde bulundurmanız gereken bazı hususlara ve bunun ince ayarlı modelin performansını nasıl etkileyebileceğine değindik. Ayrıca JumpStart'ta bulunan 80'den fazla kullanıma hazır ince ayarlı modeli tartıştık. Bu gönderide kod parçacıklarını gösterdik—bu demodaki tüm adımları içeren kodun tamamı için bkz. JumpStart'a Giriş – Metinden Görüntüye örnek defter. Çözümü kendi başınıza deneyin ve yorumlarınızı bize gönderin.

Model ve DreamBooth ince ayarı hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:

JumpStart hakkında daha fazla bilgi edinmek için aşağıdaki blog gönderilerine göz atın:


Yazarlar Hakkında

Dr.Vivek Madan Amazon SageMaker JumpStart ekibinde Uygulamalı Bilim Adamıdır. Doktorasını Urbana-Champaign'deki Illinois Üniversitesi'nden aldı ve Georgia Tech'de Doktora Sonrası Araştırmacıydı. Makine öğrenimi ve algoritma tasarımında aktif bir araştırmacıdır ve EMNLP, ICLR, COLT, FOCS ve SODA konferanslarında makaleler yayınlamıştır.

heiko hotz doğal dil işlemeye (NLP), büyük dil modellerine (LLM'ler) ve üretken yapay zekaya özel odaklanan Yapay Zeka ve Makine Öğrenimi için Kıdemli Çözüm Mimarıdır. Bu görevden önce, Amazon'un AB Müşteri Hizmetleri için Veri Bilimi Başkanıydı. Heiko, müşterilerimizin AWS'deki AI/ML yolculuklarında başarılı olmalarına yardımcı olur ve sigorta, finansal hizmetler, medya ve eğlence, sağlık hizmetleri, kamu hizmetleri ve üretim dahil olmak üzere birçok sektörden kuruluşlarla birlikte çalışmıştır. Heiko boş zamanlarında olabildiğince çok seyahat eder.


Ek: Deney veri kümeleri

Bu bölüm, bu gönderideki deneylerde kullanılan veri kümelerini içerir.

Köpek1-8

Köpek1-16

Köpek2-4

Köpek3-8

Ek: Açık Kaynaklı İnce ayarlı modeller

Aşağıda, JumpStart'ta bulunan farklı modeller tarafından oluşturulan bazı görüntü örnekleri bulunmaktadır. Her resim bir başlık ile model_id bir önekle başlayan huggingface-txt2img- ardından bir sonraki satırda görüntüyü oluşturmak için kullanılan komut istemi.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi