Kendi eğitim komut dosyalarınızı kullanın ve Amazon SageMaker PlatoBlockchain Data Intelligence'da hiperparametre optimizasyonunu kullanarak en iyi modeli otomatik olarak seçin. Dikey Arama. Ai.

Kendi eğitim betiklerinizi kullanın ve Amazon SageMaker'da hiperparametre optimizasyonunu kullanarak en iyi modeli otomatik olarak seçin

Herhangi bir makine öğrenimi (ML) boru hattının başarısı, yalnızca kullanılan modelin kalitesine değil, aynı zamanda bu modeli eğitme ve yineleme yeteneğine de bağlıdır. Bir makine öğrenimi modelini iyileştirmenin temel yollarından biri, daha iyi ayarlanabilir parametreler seçmektir. hiperparametreler. Bu, hiperparametre optimizasyonu (HPO) olarak bilinir. Bununla birlikte, bu ayarlamayı manuel olarak yapmak, bazen binlerce eğitim yinelemesini içeren arama alanının boyutundan dolayı genellikle külfetli olabilir.

Bu gönderi nasıl olduğunu gösterir Amazon Adaçayı Yapıcı komut dosyası modunu kullanarak yalnızca kendi model algoritmanızı getirmenize değil, aynı zamanda yerleşik HPO algoritmasını da kullanmanıza olanak tanır. için tercih edilen değerlendirme metriğini kolayca nasıl çıkaracağınızı öğreneceksiniz. Amazon Bulut İzleme, otomatik HPO algoritmasına rehberlik etmesi için bu metriği buradan çıkarabilirsiniz. Ardından, birkaç eğitim işini ve ilişkili bilgi işlem kaynaklarını düzenleyen bir HPO ayarlama işi oluşturabilirsiniz. Tamamlandığında, değerlendirme metriğine göre en iyi eğitim işini görebilirsiniz.

Çözüme genel bakış

Aşağıdaki adımlardan geçiyoruz:

  1. Kendi modelimizi AWS tarafından yönetilen bir container'ın üstüne getirmek için SageMaker betik modunu kullanın.
  2. Değerlendirme ölçütümüzü yazdırmak için eğitim betiğimizi yeniden düzenleyin.
  3. CloudWatch Günlüklerinde metriği bulun.
  4. Metriği CloudWatch'tan çıkarın.
  5. Bu değerlendirme metriğini ayarlayarak en iyi modeli seçmek için HPO'yu kullanın.
  6. HPO'yu izleyin ve en iyi eğitim işini bulun.

Önkoşullar

Bu izlenecek yol için aşağıdaki ön koşullara sahip olmalısınız:

AWS tarafından yönetilen bir kapsayıcıda özel algoritmalar kullanın

Bakın Amazon SageMaker betik moduyla kendi modelinizi getirin AWS tarafından yönetilen bir container kullanarak özel bir modeli SageMaker'a getirmeye ilişkin daha ayrıntılı bir bakış için.

Biz kullanın MNIST veri seti bu örnek için MNIST, el yazısı rakamların 70,000 etiketli 28×28 piksel gri tonlamalı görüntüsünden oluşan, el yazısı rakam sınıflandırması için yaygın olarak kullanılan bir veri kümesidir. Veri seti, 60,000 sınıf (her basamak için bir tane) içeren 10,000 eğitim görüntüsüne ve 10 test görüntüsüne bölünmüştür.

  1. Not defteri örneğinizi açın ve dosyayı indirmek için aşağıdaki komutu çalıştırın. mnist.py Dosya:
    !wget https://raw.githubusercontent.com/aws/amazon-sagemaker-examples/main/hyperparameter_tuning/pytorch_mnist/mnist.py

    Verileri alıp depolamadan önce, bir SageMaker oturumu oluşturalım. Eğitim ve model verileri için kullanılacak S3 kovasını ve ön ekini de belirtmeliyiz. Bu, not defteri eşgörünümü, eğitim ve barındırma ile aynı Bölge içinde olmalıdır. Aşağıdaki kod kullanır varsayılan grup zaten varsa, yoksa yeni bir tane oluşturur. Verilerinize eğitim ve barındırma erişimi sağlamak için IAM rolü ARN'yi de eklemeliyiz. Kullanırız get_execution_role() not defteri örneğiniz için oluşturduğunuz IAM rolünü almak için.

  2. Aşağıdaki kodla bir oturum oluşturun:
    import sagemaker
    from sagemaker.tuner import (
    IntegerParameter,
    CategoricalParameter,
    ContinuousParameter,
    HyperparameterTuner,
    )
    session = sagemaker.Session()
    bucket = session.default_bucket()
    prefix = "sagemaker/DEMO-custom-hpo"
    role = sagemaker.get_execution_role()

  3. Şimdi verileri alalım, yerel klasörümüzde saklayalım /datave Amazon S3'e yükleyin:
    from torchvision.datasets import MNIST
    from torchvision import transforms
    MNIST.mirrors = ["https://sagemaker-sample-files.s3.amazonaws.com/datasets/image/MNIST/"]
    MNIST(
    "data",
    download=True,
    transform=transforms.Compose(
    [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]
    ),
    )
    inputs = session.upload_data(path="data", bucket=bucket, key_prefix=prefix)

    Artık PyTorch eğitim işini ayarlamak için bir tahmin aracı oluşturabiliriz. Burada gerçek eğitim koduna odaklanmıyoruz (mnist.py) ayrıntılı olarak. Bir eğitim işini başlatmak için bu eğitim komut dosyasını nasıl kolayca çağırabileceğimize bakalım.

  4. Aşağıdaki koda, özel eğitim kodumuzu içeren mnist.py adlı bir giriş noktası komut dosyası ekledik:
    from sagemaker.pytorch import PyTorch
    estimator = PyTorch(
    entry_point="mnist.py",
    role=role,
    py_version="py3",
    framework_version="1.8.0",
    instance_count=1,
    instance_type="ml.c5.2xlarge",
    hyperparameters={"epochs": 5},
    )

  5. Bu eğitim işinin doğru yapılandırıldığından emin olmak için çalışan eğitim kodu ile Amazon S3'e yüklediğimiz verilere uyarlayarak bir eğitim işi başlatabiliriz. SageMaker, verilerimizin yerel dosya sisteminde mevcut olmasını sağlar, böylece eğitim komut dosyamız verileri diskten okuyabilir:
    estimator.fit({"training": inputs})

Ancak, tek bir eğitim işi oluşturmuyoruz. Bir hiperparametre ayarlama işi kullanarak SageMaker'ın otomatik model ayarlama özelliğini kullanıyoruz. Model ayarlama, gerçek model algoritmasından tamamen bağımsızdır. Ayarlayabileceğiniz tüm hiperparametreler hakkında daha fazla bilgi için bkz. SageMaker ile Otomatik Model Ayarlama Gerçekleştirin.

Optimize etmek istediğimiz her hiperparametre için aşağıdakileri tanımlamamız gerekir:

  • Bir isim
  • Bir tür (parametreler bir tamsayı, sürekli veya kategorik olabilir)
  • Keşfedilecek bir dizi değer
  • Bir ölçeklendirme türü (doğrusal, logaritmik, ters logaritmik veya otomatik); bu, belirli bir parametre aralığının nasıl keşfedileceğini kontrol etmemizi sağlar

Optimize ettiğimiz metriği de tanımlamalıyız. Eğitim günlüğünde göründüğü sürece herhangi bir sayısal değer olabilir ve onu ayıklamak için düzenli bir ifade iletebilirsiniz.

mnist.py'deki 181. satıra bakarsak, kaydediciye nasıl yazdırdığımızı görebiliriz:

logger.info(
"Test set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)n".format(
test_loss, correct, len(test_loader.dataset), 100.0 * correct / len(test_loader.dataset)
)

Aslında, bu çıktıyı az önce çalıştırdığımız eğitim işinin günlüklerinde görebiliriz. Günlük grubunu açarak /aws/sagemaker/TrainingJobs CloudWatch konsolunda, şununla başlayan bir günlük etkinliğimiz olmalıdır: pytorch-training- ardından bir zaman damgası ve oluşturulan ad.

Aşağıdaki ekran görüntüsü, aradığımız günlüğü vurgulamaktadır.

Şimdi hiperparametre ayarlama işimizi oluşturmaya başlayalım.

  1. Belirtildiği gibi, önce nesnenin altındaki hiperparametreler hakkında bazı bilgileri aşağıdaki gibi tanımlamalıyız:
    hyperparameter_ranges = {
    "lr": ContinuousParameter(0.001, 0.1),
    "batch-size": CategoricalParameter([32, 64, 128, 256, 512]),
    }

    Burada iki hiperparametremizi tanımladık. Öğrenme oranı (lr), 0.001 ve 0.1 aralığında sürekli bir parametredir (bu nedenle sürekli bir değerdir). Toplu iş boyutu (parti-boyutu), önceki ayrık değerlere sahip kategorik bir parametredir.

    Ardından, ayarlamak istediğimiz objektif metriği ve tanımını belirliyoruz. Bu, daha önce gördüğümüz eğitim işinin CloudWatch günlüklerinden bu metriği çıkarmak için gereken normal ifadeyi (normal ifade) içerir. Ayrıca tanımlayıcı bir ad ortalama test kaybı ve amaç tipini Minimize olarak belirtiyoruz, bu nedenle hiperparametre ayarı en iyi hiperparametre ayarını ararken objektif metriği en aza indirmeye çalışıyor.

  2. Metriği aşağıdaki kodla belirtin:
    metric_definitions = [{"Name": "average test loss", "Regex": "Test set: Average loss: ([0-9.]+)"}]
    objective_metric_name = "average test loss"
    objective_type = "Minimize"

    Artık kendi sayfamızı oluşturmaya hazırız. HyperparameterTuner nesne. Objektif metrik adı, türü ve tanımına ek olarak, hyperparameter_ranges nesne ve daha önce oluşturduğumuz tahmin edici. Paralel olarak çalışması gereken sayı ile birlikte toplamda çalıştırmak istediğimiz iş sayısını da belirtiyoruz. Maksimum iş sayısını 9 olarak seçtik, ancak optimum performans için genellikle çok daha yüksek bir sayıyı (50 gibi) seçersiniz.

  3. oluşturmak HyperparameterTuner Aşağıdaki koda sahip nesne:
    tuner = HyperparameterTuner(
    estimator,
    objective_metric_name,
    hyperparameter_ranges,
    metric_definitions,
    max_jobs=9,
    max_parallel_jobs=3,
    objective_type=objective_type,
    )

Ayarlama işine başlamadan önce, hiperparametre kombinasyonlarının nasıl belirlendiğini belirtmekte fayda var. İyi sonuçlar almak için, keşfedilecek doğru aralıkları seçmeniz gerekir. Varsayılan olarak, daha ayrıntılı olarak açıklanan Bayes arama stratejisi kullanılır. Hiperparametre Ayarı nasıl çalışır?.

Bayes optimizasyonu ile hiperparametre ayarı, gerileme sorun. Bu regresyon problemini çözmek için hangi hiperparametre kombinasyonlarının en iyi sonuçları alacağına dair tahminler yapar ve bu değerleri test etmek için eğitim işleri yürütür. Test edilecek bir sonraki hiperparametre değerleri kümesini seçmek için regresyon kullanır. Arama stratejisinin burada yaptığı açık bir yararlanma/keşfetme değiş tokuşu vardır. Performansı kademeli olarak iyileştirmek için önceki en iyi eğitim işiyle sonuçlanan kombinasyona yakın hiperparametre değerleri seçebilir. Ya da henüz iyi anlaşılmamış yeni bir değerler aralığı denemek ve keşfetmek için daha uzaktaki değerleri seçebilir.

Bununla birlikte, başka arama stratejileri belirleyebilirsiniz. Aşağıdaki stratejiler SageMaker'da desteklenir:

  • ızgara arama – Belirtilen hiperparametreler aralığında olası her kombinasyonu dener.
  • Rastgele arama – Belirtilen değer aralığında rastgele kombinasyonları dener. Önceki eğitim işlerinin sonuçlarına bağlı değildir, bu nedenle, ayarlama performansını etkilemeden maksimum sayıda eşzamanlı eğitim işini çalıştırabilirsiniz.
  • hiper bant arama – Dönemleri iyi kullanılan hiperparametre yapılandırmalarına yeniden tahsis etmek için eğitim işlerinin hem ara hem de nihai sonuçlarını kullanır ve düşük performans gösterenleri otomatik olarak durdurur.

Açıklandığı gibi kendi algoritmanızı getirmeyi de keşfedebilirsiniz. Amazon SageMaker'da kendi hiperparametre optimizasyon algoritmanızı getirin.

  1. Daha sonra ayarlayıcı nesnesinin kendisinde (tahmin edici değil) eğitim başlatırız. .fit() ve S3 yolundan tren ve test veri kümemize geçmek:
    tuner.fit({"training": inputs})

Daha sonra ayarlama işimizin ilerleyişini SageMaker konsolunda takip edebiliriz. Hiperparametre ayarlama işleri sayfa. Ayarlama işi, her bir eğitim çalıştırmasını ve bununla ilişkili hesaplamayı düzenleyerek gerekli olan temel bilgi işlem kaynaklarını hızlandırır.

Ardından, tamamlanan veya devam eden tüm bireysel eğitim işlerini, ilişkili nesnel metrik değerleri ile birlikte görmek kolaydır. Aşağıdaki ekran görüntüsünde, belirlediğimiz şartlara göre toplamda üç tane içeren eğitim işlerinin ilk partisinin tamamlandığını görebiliriz. max_parallel_jobs değeri 3. Tamamlandığında, en iyi eğitim işini (ortalama test kaybını en aza indiren) bulabiliriz. En iyi eğitim işi sekmesi.

Eğitim işleri listesinin ekran görüntüsü

Temizlemek

İleride ücret alınmasını önlemek için, başlattığınız kaynakları silin. Bunlar S3 grubu, IAM rolü ve SageMaker not defteri örneğidir.

Sonuç

Bu yazıda, kendi modelimizi SageMaker'a nasıl getirebileceğimizi ve ardından en iyi eğitim işini seçmek için otomatik hiperparametre optimizasyonunu nasıl kullanabileceğimizi tartıştık. HPO işinin optimize edilmesi gereken özel bir objektif metriği nasıl belirtebileceğimize bakmak için popüler MNIST veri setini kullandık. Bu nesnel metriği CloudWatch'tan çıkararak ve çeşitli hiperparametre değerleri belirterek, HPO işini kolayca başlatabilir ve izleyebiliriz.

Daha fazla bilgiye ihtiyacınız varsa veya müşterilerimizin HPO'yu nasıl kullandığını görmek istiyorsanız, bkz. Amazon SageMaker Otomatik Model Ayarlama. Bugün SageMaker'da otomatikleştirilmiş hiperparametre optimizasyonu için kendi modelinizi uyarlayın.


Yazar hakkında

Kendi eğitim komut dosyalarınızı kullanın ve Amazon SageMaker PlatoBlockchain Data Intelligence'da hiperparametre optimizasyonunu kullanarak en iyi modeli otomatik olarak seçin. Dikey Arama. Ai.Fiyat Amazon Web Services'ta AI/ML ve veri analitiği konusunda uzmanlaşmış bir Profesyonel Hizmetler Danışmanıdır. Zorlu sorunları çözmek için sağlık ve yaşam bilimlerinde kamu sektörü müşterileriyle yakın işbirliği içinde çalışır. Sam, bunu yapmadığı zamanlarda gitar ve tenis oynamaktan ve en sevdiği bağımsız grupları izlemekten hoşlanıyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi