Amazon SageMaker Otomatik Model Ayarlama PlatoBlockchain Veri Zekası ile hiperparametreleri optimize edin. Dikey Arama. Ai.

Amazon SageMaker Otomatik Model Ayarlama ile hiperparametreleri optimize edin

Makine öğrenimi (ML) modelleri dünyayı kasıp kavuruyor. Performansları, doğru eğitim verilerinin kullanılmasına ve doğru model ve algoritmanın seçilmesine bağlıdır. Ama burada bitmiyor. Tipik olarak, algoritmalar, belirli verileri ve görevleri için benimsemeleri için bazı tasarım kararlarını makine öğrenimi uygulayıcısına erteler. Bu ertelenmiş tasarım kararları kendilerini şu şekilde gösterir: hiperparametreler.

Bu isim ne anlama geliyor? Makine öğrenimi eğitiminin sonucu olan model, büyük ölçüde eğitim sırasında öğrenilen parametrelerin bir koleksiyonu olarak görülebilir. Bu nedenle, makine öğrenimi eğitim sürecini yapılandırmak için kullanılan parametrelere hiperparametreler (parametrelerin oluşturulmasını açıklayan parametreler) adı verilir. Her halükarda, eğitilecek çağ sayısı, öğrenme hızı, bir karar ağacının maksimum derinliği ve benzeri gibi çok pratik kullanıma sahiptirler. Modelinizin nihai performansı üzerinde büyük bir etkiye sahip oldukları için onlara çok dikkat ediyoruz.

Tıpkı doğru frekansı bulmak için bir radyo alıcısındaki bir düğmeyi çevirmek gibi, performansı optimize etmek için her bir hiperparametre dikkatle ayarlanmalıdır. Optimal değerler için hiperparametre uzayını aramaya denir. hiperparametre ayarı or hiperparametre optimizasyonu (HPO) ve doğru tahminler veren bir modelle sonuçlanmalıdır.

Bu yazıda, kullanarak ilk HPO işimizi kurduk ve çalıştırdık. Amazon SageMaker Otomatik Model Ayarlama (AMT). Sonuçları keşfetmek için mevcut yöntemleri öğreniyoruz ve HPO denemelerimizin ve hiperparametre uzayının keşfinin bazı anlayışlı görselleştirmelerini oluşturuyoruz!

Amazon SageMaker Otomatik Model Ayarlama

kullanan bir ML uygulayıcısı olarak SageMaker AMT, aşağıdakilere odaklanabilirsiniz:

  • Eğitim işi sağlamak
  • Görevinizle eşleşen doğru objektif metriği tanımlama
  • Hiperparametre arama alanını kapsamlandırma

Gerisini SageMaker AMT halleder ve sizin altyapı, eğitim işlerini düzenleme ve hiperparametre seçimini iyileştirme hakkında düşünmeniz gerekmez.

Bir XGBoost algoritmasını eğitmek ve ayarlamak için ilk basit HPO işimiz için SageMaker AMT'yi kullanarak başlayalım. AMT yolculuğunuzun uygulamalı ve pratik olmasını istiyoruz, bu nedenle örneği aşağıda paylaştık. GitHub deposu. Bu gönderi, 1_tuning_of_builtin_xgboost.ipynb not defteri.

Gelecek bir gönderide, yalnızca en iyi hiperparametreleri bulma kavramını genişleteceğiz ve arama alanı hakkında öğrenmeyi ve bir modelin hangi hiperparametre aralıklarına duyarlı olduğunu dahil edeceğiz. Ayrıca, birlikte öğrenmek için tek seferlik bir ayarlama etkinliğinin makine öğrenimi uygulayıcısıyla nasıl çok adımlı bir görüşmeye dönüştürüleceğini de göstereceğiz. Bizi izlemeye devam edin (amaçlanan kelime oyunu)!

Önkoşullar

Bu gönderi, HPO hakkında bilgi edinmek isteyen herkes içindir ve konu hakkında önceden bilgi sahibi olmayı gerektirmez. Yine de, makine öğrenimi kavramları ve Python programlama ile ilgili temel aşinalık yararlıdır. En iyi öğrenme deneyimi için, takip etmenizi önemle tavsiye ederiz. not defterindeki her adımı çalıştırma bu yazıyı okumaya paralel olarak. Ve not defterinin sonunda, ayarlama sonuçlarını canlandıran etkileşimli bir görselleştirmeyi de deneyebilirsiniz.

Çözüme genel bakış

SageMaker AMT kullanarak ilk HPO işimizi çalıştırmak için uçtan uca bir kurulum oluşturacağız. Ayarlama işimiz tamamlandığında, sonuçları keşfetmek için mevcut yöntemlerden bazılarına bakarız. AWS Yönetim Konsolu ve programlı olarak AWS SDK'ları ve API'leri aracılığıyla.

Öncelikle, şimdilik herhangi bir ayarlama yapmadan, bağımsız bir eğitim işi yürüterek ortama ve SageMaker Training'e alışıyoruz. olarak sağlanan birçok algoritmadan biri olan XGBoost algoritmasını kullanıyoruz. SageMaker yerleşik algoritması (eğitim senaryosu gerekmez!).

SageMaker Training'in aşağıdaki şekillerde nasıl çalıştığını görüyoruz:

  • Bir örneği başlatır ve durdurur
  • Gerekli konteyneri sağlar
  • Eğitim ve doğrulama verilerini örneğe kopyalar
  • Eğitimi çalıştırır
  • Metrikleri ve günlükleri toplar
  • Eğitilmiş modeli toplar ve depolar

Ardından AMT'ye geçiyoruz ve bir HPO işi yürütüyoruz:

  • AMT ile tuning işimizi kurduk ve başlattık
  • Hiperparametre alanımızdaki optimum değerler hakkında daha fazla bilgi edinmemizi sağlayan her eğitim işi için ayrıntılı performans ölçümlerini ve meta verileri çıkarmak için mevcut yöntemleri derinlemesine inceliyoruz.
  • Size denemelerin sonuçlarını nasıl görüntüleyeceğinizi gösteriyoruz
  • Size, hiperparametre alanımıza ilişkin değerli içgörüleri ortaya çıkaran bir dizi grafikte verileri görselleştirmeniz için araçlar sunuyoruz.

Bir SageMaker yerleşik XGBoost algoritması eğitin

Her şey bir modeli eğitmekle başlar. Bunu yaparken, SageMaker Eğitiminin nasıl çalıştığına dair bir fikir ediniriz.

SageMaker'ın sunduğu hız ve kullanım kolaylığından yararlanmak istiyoruz yerleşik algoritmalar. Eğitime başlamak için tek ihtiyacımız olan birkaç adım:

  1. Verileri hazırlayın ve yükleyin – Veri setimizi XGBoost için girdi olarak indirip hazırlıyoruz ve sunucumuza yüklüyoruz. Amazon Basit Depolama Hizmeti (Amazon S3) kovası.
  2. Yerleşik algoritmamızın görüntü URI'sini seçin – SageMaker, bizim durumumuzda kullanıma hazır bir XGBoost eğitim betiği içeren eğitim kapsayıcımızı getirmek için bu URI'yi kullanır. Çeşitli algoritma sürümleri desteklenir.
  3. Hiperparametreleri tanımlayın – SageMaker, aşağıdakileri tanımlamak için bir arayüz sağlar: hiperparametreler yerleşik algoritmamız için. Bunlar, açık kaynak sürümü tarafından kullanılanla aynı hiperparametrelerdir.
  4. Tahmin ediciyi oluştur – Örnek türü ve örnek sayısı gibi eğitim parametrelerini tanımlarız.
  5. fit() işlevini çağırın – Eğitim işimize başlıyoruz.

Aşağıdaki diyagram, bu adımların birlikte nasıl çalıştığını göstermektedir.

Verileri sağlayın

Makine öğrenimi eğitimini çalıştırmak için veri sağlamamız gerekir. Eğitim ve doğrulama verilerimizi Amazon S3 aracılığıyla SageMaker'a sağlıyoruz.

Örneğimizde, basitlik açısından, verilerimizi depolamak için SageMaker varsayılan klasörünü kullanıyoruz. Ancak aşağıdaki değerleri tercihinize göre özelleştirmekten çekinmeyin:

sm_sess = sagemaker.session.Session([..])

BUCKET = sm_sess.default_bucket()
PREFIX = 'amt-visualize-demo'
output_path = f's3://{BUCKET}/{PREFIX}/output'

Not defterinde, genel bir veri kümesi kullanırız ve verileri yerel olarak depolarız. data dizin. Daha sonra eğitim ve doğrulama verilerimizi Amazon S3'e yüklüyoruz. Daha sonra, SageMaker Training'e iletmek için bu konumlara işaretçiler de tanımlarız.

# acquire and prepare the data (not shown here)
# store the data locally
[..]
train_data.to_csv('data/train.csv', index=False, header=False)
valid_data.to_csv('data/valid.csv', index=False, header=False)
[..]
# upload the local files to S3
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/train/train.csv')).upload_file('data/train.csv')
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/valid/valid.csv')).upload_file('data/valid.csv')

Bu yazıda, HPO'yu tanıtmaya odaklanıyoruz. Örnek olarak, belirli bir veri kümesi ve görev kullanıyoruz, böylece daha sonra hiperparametre seçimini optimize etmek için kullandığımız nesnel metriklerin ölçümlerini elde edebiliyoruz. Ancak, genel gönderi için ne veriler ne de görev önemli. Size tam bir resim sunmak için, ne yaptığımızı kısaca açıklayalım: el yazısı basamakları sınıflandırması gereken bir XGBoost modeli eğitiyoruz.
El Yazısı Rakam Veri Kümesinin Optik Olarak Tanınması [1] Scikit-learn aracılığıyla. XGBoost, yapılandırılmış veriler için mükemmel bir algoritmadır ve Digits veri kümesine bile uygulanabilir. Değerler, aşağıdaki örnekte gösterildiği gibi 8×8 görüntülerdir.
0 a
5 ve
4.

Amazon SageMaker Otomatik Model Ayarlama PlatoBlockchain Veri Zekası ile hiperparametreleri optimize edin. Dikey Arama. Ai.

XGBoost görüntü URI'sini seçin

Yerleşik algoritmamızı (XGBoost) seçtikten sonra, görüntü URI'sini almalı ve bunu eğitim örneğimize yüklemek için SageMaker'a iletmeliyiz. Bu adım için, mevcut versiyonlar. Burada, algoritmanın en son sürümünü sunan 1.5.1 sürümünü kullanmaya karar verdik. Göreve bağlı olarak, makine öğrenimi uygulayıcıları, örneğin veri hazırlama adımlarını içeren kendi eğitim senaryolarını yazabilirler. Ama bizim durumumuzda bu gerekli değil.

Kendi eğitim senaryonuzu yazmak istiyorsanız, bizi izlemeye devam edin, bir sonraki yazımızda sizi ele alacağız! SageMaker Training işlerini kendi özel eğitim betiklerinizle nasıl çalıştıracağınızı size göstereceğiz.

Şimdilik, algoritmayı, AWS Bölgesini ve sürüm numarasını belirterek doğru resim URI'sine ihtiyacımız var:

xgboost_container = sagemaker.image_uris.retrieve('xgboost', region, '1.5-1')

Bu kadar. Artık XGBoost algoritmasına bir referansımız var.

Hiperparametreleri tanımlayın

Şimdi hiperparametrelerimizi tanımlıyoruz. Bu değerler, modelimizin nasıl eğitileceğini yapılandırır ve sonuç olarak modelin, bizim durumumuzdaki doğruluk gibi, ölçtüğümüz nesnel metriğe karşı nasıl performans gösterdiğini etkiler. Aşağıdaki kod bloğuyla ilgili hiçbir şeyin SageMaker'a özgü olmadığını unutmayın. biz aslında kullanıyoruz açık kaynak versiyonu SageMaker tarafından sağlanan ve optimize edilen XGBoost.

Bu hiperparametrelerin her biri yapılandırılabilir ve ayarlanabilir olmasına rağmen, objektif metrik multi:softmax veri kümemiz ve çözdüğümüz sorunun türü tarafından belirlenir. Bizim durumumuzda, Digits veri kümesi birden fazla etiket içerir (el yazısıyla yazılmış bir rakamın gözlemlenmesi, 0 or 1,2,3,4,5,6,7,8,9), yani çok sınıflı bir sınıflandırma problemidir.

hyperparameters = {
    'num_class': 10,
    'max_depth': 5,
    'eta':0.2,
    'alpha': 0.2,
    'objective':'multi:softmax',
    'eval_metric':'accuracy',
    'num_round':200,
    'early_stopping_rounds': 5
}

Diğer hiperparametreler hakkında daha fazla bilgi için bkz. XGBoost Hiperparametreleri.

Tahmin ediciyi oluştur

Eğitimi, SageMaker Training için üst düzey bir arayüz olan bir tahmin edici nesne üzerinde yapılandırıyoruz.

Ardından, üzerinde eğitim yapılacak örnek sayısını, bulut sunucusu tipini (CPU tabanlı veya GPU tabanlı) ve ekli depolamanın boyutunu tanımlarız:

estimator = sagemaker.estimator.Estimator(
    image_uri=xgboost_container, 
    hyperparameters=hyperparameters,
    role=role,
    instance_count=1, 
    instance_type='ml.m5.large', 
    volume_size=5, # 5 GB 
    output_path=output_path
)

Artık başlamak için ihtiyaç duyduğumuz altyapı yapılandırmasına sahibiz. Gerisini SageMaker Eğitimi halleder.

fit() işlevini çağırın

Daha önce Amazon S3'e yüklediğimiz verileri hatırlıyor musunuz? Şimdi ona referanslar oluşturuyoruz:

s3_input_train = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/train', content_type='csv')
s3_input_valid = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/valid', content_type='csv')

bir çağrı fit() eğitimlerimizi başlatıyoruz. SageMaker Training'i eğitim ve doğrulama verilerimize yönlendirmek için az önce oluşturduğumuz eğitim verilerine referansları iletiyoruz:

estimator.fit({'train': s3_input_train, 'validation': s3_input_valid})

HPO'yu daha sonra çalıştırmak için aslında aramamıza gerek olmadığını unutmayın. fit() burada. Daha sonra HPO için tahmin edici nesneye ihtiyacımız var ve HPO işimizi oluşturmaya başlayabiliriz. Ancak SageMaker Eğitimi hakkında bilgi edinmek ve tek bir eğitim işinin nasıl yürütüleceğini görmek istediğimiz için onu burada çağırıp çıktıyı gözden geçiriyoruz.

Eğitim başladıktan sonra aşağıdaki ekran görüntüsünde görüldüğü gibi hücrelerin altındaki çıktıyı görmeye başlıyoruz. çıktı mevcuttur Amazon Bulut İzleme hem de bu defterde.

Siyah metin, örneğin başlatılması ve eğitim görüntüsünün yüklenmesi gibi eğitim orkestrasyonuna dahil olan adımları gösteren SageMaker'ın günlük çıktısıdır. Mavi metin, doğrudan eğitim örneğinin kendisinden çıkarılır. Eğitim verilerini yükleme ve ayrıştırma sürecini gözlemleyebilir ve doğrudan örnek üzerinde çalışan eğitim komut dosyasından eğitimin ilerleyişini ve objektif metrikteki gelişmeyi görsel olarak görebiliriz.

Jupyter Notebook'taki fit() işlevinden çıktı

Ayrıca çıkış işinin sonunda eğitim süresinin saniye cinsinden ve faturalandırılabilir saniye olarak gösterildiğine dikkat edin.

Son olarak, SageMaker'ın eğitim modelimizi tahmin edici nesnesinde tanımlanan S3 çıktı yoluna yüklediğini görüyoruz. Model, çıkarım için dağıtılmaya hazırdır.

Gelecekteki bir gönderide, kendi eğitim kapsayıcımızı oluşturacağız ve yayınlanacak eğitim ölçümlerimizi tanımlayacağız. SageMaker'ın eğitim için hangi kapsayıcıyı kullandığınızdan ne kadar bağımsız olduğunu göreceksiniz. Bu, yerleşik bir algoritma ile hızlı bir şekilde başlamak istediğinizde, ancak daha sonra kendi özel eğitim komut dosyanızı geçmeye karar verdiğinizde çok kullanışlıdır!

Mevcut ve önceki eğitim işlerini inceleyin

Şimdiye kadar defterimizden kodumuzla çalıştık ve eğitim işlerini SageMaker'a gönderdik. Bunun SageMaker konsolunda nasıl göründüğüne bakmak için bakış açılarını değiştirelim ve not defterini bir anlığına bırakalım.

SageMaker Training işlerinin konsol görünümü

SageMaker çalıştırdığı eğitim işlerinin, bunların hiperparametreler, algoritmalar, veri girişi, faturalandırılabilir süre ve sonuçlar gibi yapılandırmalarının geçmiş kaydını tutar. Önceki ekran görüntüsündeki listede, XGBoost için filtrelenmiş en son eğitim işlerini görürsünüz. Vurgulanan eğitim işi, not defterinde az önce eğittiğimiz ve çıktısını daha önce gördüğünüz iştir. Daha fazla bilgi almak için bu bireysel eğitim işine geçelim.

Aşağıdaki ekran görüntüsü, eğitim işimizin konsol görünümünü göstermektedir.

Tek bir SageMaker Training işinin konsol görünümü

Hücre çıktısı olarak aldığımız bilgileri sunucumuza inceleyebiliriz. fit() tahmin aracımızda tanımladığımız parametreler ve meta verilerle birlikte SageMaker konsolu içindeki bireysel eğitim işindeki işlev.

Daha önce gördüğümüz eğitim örneğinden günlük çıktısını hatırlayın. Eğitim işimizin günlüklerine de buradan kaydırarak ulaşabiliriz. izlemek bölüm ve seçim Günlükleri görüntüle.

Eğitim işindeki izleme sekmesinin Konsol Görünümü

Bu bize CloudWatch içindeki örnek günlüklerini gösterir.

CloudWatch'ta eğitim örneği günlüklerinin konsol görünümü

Ayrıca eğitim işi için not defterimizde belirttiğimiz hiperparametreleri de unutmayın. Onları burada eğitim işinin aynı kullanıcı arayüzünde de görüyoruz.

SageMaker Training işinin hiperparametrelerinin konsol görünümü

Aslında, eğitim işimiz ve tahmin aracımız için daha önce belirttiğimiz ayrıntılar ve meta veriler, SageMaker konsolundaki bu sayfada bulunabilir. Hangi eğitim kapsayıcısının kullanıldığı ve eğitim ve doğrulama veri kümelerinin yerleri gibi, eğitim için kullanılan ayarların yararlı bir kaydına sahibiz.

Bu noktada, bunun neden tam olarak hiperparametre optimizasyonu ile ilgili olduğunu soruyor olabilirsiniz. Bunun nedeni, ilgilendiğimiz HPO denemelerini araştırabilmeniz, inceleyebilmeniz ve derinlemesine inceleyebilmenizdir. Belki en iyi sonuçları verenler veya ilginç davranışlar gösterenler. "İlginç" olarak tanımladığınız şeyi size bırakacağız. Eğitim işlerimizi incelemek için bize ortak bir arayüz sağlar ve bunu SageMaker Search ile kullanabilirsiniz.

SageMaker AMT, HPO işlerini düzenlese de, HPO denemelerinin tümü ayrı SageMaker Eğitim işleri olarak başlatılır ve bu şekilde erişilebilir.

Eğitim dahil, hadi ayarlamaya başlayalım!

Bir SageMaker yerleşik XGBoost algoritmasını eğitin ve ayarlayın

XGBoost modelimizi ayarlamak için mevcut hiperparametrelerimizi yeniden kullanacağız ve onlar için keşfetmek istediğimiz değer aralıklarını tanımlayacağız. Bunu, hiperparametre arama alanımızda keşif sınırlarını genişletmek olarak düşünün. Ayarlama işimiz, arama alanından örnek alacak ve yeni değer kombinasyonları için eğitim işleri yürütecektir. Aşağıdaki kod, SageMaker AMT'nin örnekleme yapması gereken hiperparametre aralıklarının nasıl belirtileceğini gösterir:

from sagemaker.tuner import IntegerParameter, ContinuousParameter, HyperparameterTuner

hpt_ranges = {
    'alpha': ContinuousParameter(0.01, .5),
    'eta': ContinuousParameter(0.1, .5),
    'min_child_weight': ContinuousParameter(0., 2.),
    'max_depth': IntegerParameter(1, 10)
}

Tek bir hiperparametrenin aralıkları, örneğin türlerine göre belirtilir. Sürekli Parametre. Bu parametre aralıklarını seçmeyle ilgili daha fazla bilgi ve ipucu için bkz. Bir XGBoost Modelini Ayarlayın.

Henüz herhangi bir deney yapmadık, dolayısıyla hiperparametrelerimiz için iyi değer aralıklarını bilmiyoruz. Bu nedenle, algoritma bilgimizi ve yerleşik algoritmalar için hiperparametre belgelerimizi kullanarak eğitimli bir tahminle başlıyoruz. Bu, arama alanını tanımlamak için bir başlangıç ​​noktası tanımlar.

Ardından, tanımlanan aralıklardaki hiperparametrelerden örnekleme yapan bir ayarlama işi çalıştırırız. Sonuç olarak, hangi hiperparametre aralıklarının iyi sonuçlar verdiğini görebiliriz. Bu bilgiyle, hangi hiperparametre aralıklarının kullanılacağını daraltarak veya genişleterek arama alanının sınırlarını hassaslaştırabiliriz. Sonuçları araştırıp görselleştirdiğimiz bir sonraki ve son bölümde denemelerden nasıl öğreneceğimizi gösteriyoruz.

Bir sonraki gönderimizde yolculuğumuza devam edip daha derine ineceğiz. Ayrıca, arama alanımızı keşfetmek için kullanabileceğimiz birkaç strateji olduğunu da öğreneceğiz. Bu farklı stratejileri karşılaştırırken hiperparametrelerimiz için daha da fazla performans değerleri bulmak için sonraki HPO işlerini çalıştıracağız. Ayrıca, SageMaker AMT ile daha önce keşfedilen arama alanlarından elde edilen bilgileri bu başlangıç ​​sınırlarının ötesindeki keşiflerimizde kullanmak için nasıl sıcak bir başlangıç ​​yapacağımızı da göreceğiz.

Bu yazı için, iyi bir başlangıç ​​noktası olabilecek Bayes arama stratejisini kullanarak tek bir HPO işinin sonuçlarını nasıl analiz edeceğimize ve görselleştireceğimize odaklanıyoruz.

Bağlantılı not defterini takip ederseniz, tek, yerleşik XGBoost eğitim işimiz için kullandığımız tahmin aracının aynısını geçtiğimizi unutmayın. Bu tahmin edici nesne, AMT'nin oluşturduğu yeni eğitim işleri için bir şablon görevi görür. AMT daha sonra tanımladığımız aralıklar içindeki hiperparametreleri değiştirir.

Hedef metriğimizi maksimize etmek istediğimizi belirterek, validation:accuracy, SageMaker AMT'ye eğitim örneği günlüklerinde bu ölçümleri aramasını ve doğrulama verilerimizdeki doğruluk ölçümünü en üst düzeye çıkaracağına inandığı hiperparametre değerlerini seçmesini söylüyoruz. uygun olanı seçtik XGBoost için objektif metrik belgelerimizden.

Ayrıca, paralelleştirme avantajından da yararlanabiliriz. max_parallel_jobs. Bu, özellikle önceki denemelerin sonuçları dikkate alınmadan (öğrenilmeden) denemeleri bağımsız olarak seçilen stratejiler için güçlü bir araç olabilir. Bir sonraki gönderimizde bu diğer stratejileri ve parametreleri daha ayrıntılı inceleyeceğiz. Bu gönderi için mükemmel bir varsayılan strateji olan Bayesian'ı kullanıyoruz.

biz de tanımlarız max_jobs toplamda kaç deneme çalıştırılacağını tanımlamak için. Örneğimizden sapmaktan çekinmeyin ve paradan tasarruf etmek için daha küçük bir sayı kullanın.

n_jobs = 50
n_parallel_jobs = 3

tuner_parameters = {
    'estimator': estimator, # The same estimator object we defined above
    'base_tuning_job_name': 'bayesian',
    'objective_metric_name': 'validation:accuracy',
    'objective_type': 'Maximize',
    'hyperparameter_ranges': hpt_ranges,
    'strategy': 'Bayesian',
    'max_jobs': n_jobs,
    'max_parallel_jobs': n_parallel_jobs
}

bir kez daha aradık fit(), gönderide daha önce tek bir eğitim işi başlattığımızda olduğu gibi. Ancak bu sefer tahmin edici nesnede değil, tuner nesnesinde. Bu, ayarlama işini başlatır ve karşılığında AMT, eğitim işlerini başlatır.

tuner = HyperparameterTuner(**tuner_parameters)
tuner.fit({'train': s3_input_train, 'validation': s3_input_valid}, wait=False)
tuner_name = tuner.describe()['HyperParameterTuningJobName']
print(f'tuning job submitted: {tuner_name}.')

Aşağıdaki şema, SageMaker AMT ile HPO'yu dahil ederek önceki mimarimizi genişletiyor.

SageMaker Eğitimine ve SageMaker AMT ile hiperparametre optimizasyonuna genel bakış

HPO işimizin gönderildiğini görüyoruz. tarafından tanımlanan deneme sayısına bağlı olarak n_jobs ve paralelleştirme düzeyi, bu biraz zaman alabilir. Örneğimizde, yalnızca paralelleştirme düzeyi 30 olan 50 deneme için 3 dakikaya kadar sürebilir.

tuning job submitted: bayesian-221102-2053.

Bu ayarlama işi bittiğinde, SageMaker konsolunda bize sunulan bilgileri keşfedelim.

Konsolda AMT işlerini araştırın

Seçerek SageMaker konsolunda ayarlama işimizi bulalım. Eğitim gezinti bölmesinde ve ardından Hiperparametre ayarlama işleri. Bu, aşağıdaki ekran görüntüsünde gösterildiği gibi bize AMT işlerimizin bir listesini verir. Burada konumumuzu buluyoruz bayesian-221102-2053 ayarlama işini yapın ve artık tamamlandığını görün.

Hiperparametre ayarlama işleri sayfasının konsol görünümü. Resim, 1 ayar girdimizi içeren, ayar işlerinin liste görünümünü gösterir

Bu HPO işinin sonuçlarına daha yakından bakalım.

Sonuçları programlı olarak çıkarmayı araştırdık. defter. aracılığıyla ilk SageMaker Python SDK'sı, SageMaker'a özel bir API sağlayan, daha yüksek düzeyde açık kaynaklı bir Python kitaplığıdır. Sonra aracılığıyla Boto3, bize SageMaker ve diğer AWS hizmetleri için alt düzey API'ler sağlar.

SageMaker Python SDK'yı kullanarak HPO işimizin sonuçlarını elde edebiliriz:

sagemaker.HyperparameterTuningJobAnalytics(tuner_name).dataframe()[:10]

Bu, aşağıdaki ekran görüntüsünde görüldüğü gibi, denemelerimizin her birinin sonuçlarını bir Pandas DataFrame'de analiz etmemizi sağladı.

Jupyter Notebook'taki Pandalar tablosu, HPO işimiz için çalıştırılan yollardan elde edilen sonuçları ve meta verileri gösteriyor

Şimdi perspektifleri tekrar değiştirelim ve sonuçların SageMaker konsolunda nasıl göründüğüne bakalım. Ardından, özel görselleştirmelerimize bakacağız.

Aynı sayfada, bayesian-221102-2053 ayarlama işi, ayarlama işimiz için yürütülen denemelerin bir listesini sağlar. Buradaki her HPO denemesi, bir SageMaker Eğitim işidir. Daha önce tek XGBoost modelimizi eğittiğimizi ve SageMaker konsolundaki eğitim işini araştırdığımızı hatırlayın. Aynı şeyi buradaki denemelerimiz için de yapabiliriz.

Denemelerimizi incelerken görüyoruz ki bayesian-221102-2053-048-b59ec7b4 yaklaşık %89.815 doğrulama doğruluğu ile en iyi performans gösteren modeli oluşturdu. Seçerek hangi hiperparametrelerin bu performansa yol açtığını keşfedelim. En iyi eğitim işi sekmesi.

Çalıştırılan eğitim işlerinin bir listesini gösteren, tek bir ayarlama işinin konsol görünümü

Değerlendirilen en iyi hiperparametrelerin ayrıntılı bir görünümünü görebiliriz.

En iyi eğitim işinin ayrıntılarını gösteren, tek bir ayarlama işinin konsol görünümü

Hangi hiperparametre değerlerinin bu üstün performansa yol açtığını hemen görebiliriz. Ancak daha fazlasını bilmek istiyoruz. Ne olduğunu tahmin edebilir misin? bunu görüyoruz alpha yaklaşık olarak 0.052456 değerini alır ve aynı şekilde, eta 0.433495 olarak ayarlanmıştır. Bu bize bu değerlerin iyi çalıştığını söyler, ancak bize hiperparametre uzayının kendisi hakkında çok az şey söyler. Örneğin, 0.433495 olup olmadığını merak edebiliriz. eta test edilen en yüksek değer miydi veya daha yüksek değerler seçerek büyüme ve model geliştirme için yer olup olmadığı.

Bunun için, hiperparametrelerimiz için diğer değerlerin nasıl performans gösterdiğini görmek için uzaklaştırmamız ve çok daha geniş bir görünüm almamız gerekiyor. Aynı anda birçok veriye bakmanın bir yolu, HPO denemelerimizden hiperparametre değerlerimizi bir grafik üzerinde çizmektir. Bu şekilde, bu değerlerin göreceli olarak nasıl performans gösterdiğini görüyoruz. Bir sonraki bölümde, bu verileri SageMaker'dan çekip görselleştiriyoruz.

Denemelerimizi görselleştirin

SageMaker SDK, araştırmamız için bize veriler sağlar ve not defterleri size bu konuda bir fikir verir. Ancak onu kullanmanın ve görselleştirmenin birçok yolu var. Bu gönderide, kullanarak bir örnek paylaşıyoruz Altair denemelerimize daha görsel bir genel bakış oluşturmak için kullandığımız istatistiksel görselleştirme kitaplığı. Bunlar şurada bulunur amtviz örneğin bir parçası olarak sağladığımız paket:

from amtviz import visualize_tuning_job
visualize_tuning_job(tuner, trials_only=True)

Bu görselleştirmelerin gücü, denemelerimizin doğrulama doğruluğunu (y ekseni) zamana (x ekseni) göre çizerken hemen ortaya çıkıyor. Soldaki aşağıdaki grafik, zaman içindeki doğrulama doğruluğunu göstermektedir. Zamanla daha fazla deneme yaptıkça model performansının arttığını açıkça görebiliriz. Bu, HPO'yu Bayes stratejisiyle çalıştırmanın doğrudan ve beklenen bir sonucudur. Bir sonraki gönderimizde, bunun diğer stratejilerle nasıl karşılaştırıldığını göreceğiz ve bunun tüm stratejiler için geçerli olması gerekmediğini gözlemleyeceğiz.

HPO izlerini gösteren iki Grafik. Sol Grafik, zaman içindeki doğrulama doğruluğunu gösterir. Sağdaki grafik, doğrulama doğruluk değerleri için yoğunluk tablosunu gösterir

Zaman içindeki genel ilerlemeyi gözden geçirdikten sonra, şimdi hiperparametre uzayımıza bakalım.

Aşağıdaki çizelgeler doğrulama doğruluğunu y ekseninde gösterir ve her çizelge aşağıdakileri gösterir: max_depth, alpha, eta, ve min_child_weight sırasıyla x ekseninde. Tüm HPO işimizi her çizelgeye yerleştirdik. Her nokta tek bir denemedir ve her grafik 50 denemenin tümünü içerir, ancak her bir hiperparametre için ayrılmıştır. Bu, en iyi performans gösteren denememiz olan #48'in bu çizelgelerin her birinde tam olarak bir mavi noktayla temsil edildiği anlamına gelir (aşağıdaki şekilde sizin için vurguladık). Performansını diğer tüm 49 deneme bağlamında görsel olarak karşılaştırabiliriz. Öyleyse yakından bakalım.

Büyüleyici! Hiperparametre alanımızda tanımlı aralıklarımızın hangi bölgelerinin en yüksek performansı gösterdiğini hemen görüyoruz! Bizim için geri düşünmek eta değeri, 0'a yakın örnekleme değerlerinin daha kötü performans verdiği, oysa sınırımız olan 0.5'e yaklaşmanın daha iyi sonuçlar verdiği artık açıktır. Tersi için doğru gibi görünüyor alpha, ve max_depth daha sınırlı bir tercih edilen değerler kümesine sahip gibi görünmektedir. Bakmak max_depth, bir Bayes stratejisi kullanmanın SageMaker AMT'ye geçmişte iyi çalıştığını öğrendiği değerleri daha sık örnekleme talimatı verdiğini de görebilirsiniz.

Y ekseninde doğrulama doğruluğunu gösteren dört grafik; her bir grafikte x ekseninde sırasıyla max_Definition, alpha, eta, min_child_weight gösteriliyor. Her veri noktası, tek bir HPO denemesini temsil eder

bizimkilere bakmak eta değeri, belki de 0.45'in ötesinde daha sağa doğru keşfetmeye değer olup olmadığını merak edebiliriz. Doğruluğu düşürmek için izini sürmeye devam ediyor mu yoksa burada daha fazla veriye mi ihtiyacımız var? Bu merak, ilk HPO işimizi yürütme amacımızın bir parçasıdır. Bize hiperparametre uzayının hangi alanlarını daha fazla keşfetmemiz gerektiğine dair içgörü sağlar.

Daha fazla bilgi edinmek istiyorsanız ve konuya bu giriş bizi heyecanlandırıyorsa, farklı HPO stratejileri hakkında daha fazla konuşacağımız, bunları birbirleriyle karşılaştıracağımız ve kendi Python betiğimizle alıştırma eğitimi.

Temizlemek

HPO ile denemenizi bitirdiğinizde istenmeyen maliyetlere maruz kalmamak için S3 grubunuzdaki tüm dosyaları ön ek ile kaldırmanız gerekir. amt-visualize-demo ve ayrıca Studio kaynaklarını kapat.

Bu gönderiden tüm S3 dosyalarını kaldırmak için not defterinizde aşağıdaki kodu çalıştırın.

!aws s3 rm s3://{BUCKET}/amt-visualize-demo --recursive

Veri kümelerini veya model yapılarını korumak istiyorsanız, koddaki öneki şu şekilde değiştirebilirsiniz: amt-visualize-demo/data sadece verileri silmek için veya amt-visualize-demo/output yalnızca model yapıtlarını silmek için.

Sonuç

Bu gönderide, XGBoost algoritmasının yerleşik SageMaker sürümünü kullanarak bir modeli eğittik ve ayarladık. HPO'yu SageMaker AMT ile birlikte kullanarak, bu belirli algoritma ve veri kümesi için iyi çalışan hiperparametreleri öğrendik.

Hiperparametre ayarlama işimizin sonuçlarını gözden geçirmenin birkaç yolunu gördük. En iyi denemenin hiperparametrelerini çıkarmakla başlayarak, denemelerimizin zaman içinde nasıl ilerlediğini ve hangi hiperparametre değerlerinin etkili olduğunu daha iyi anlamayı da öğrendik.

SageMaker konsolunu kullanarak, bireysel egzersiz çalıştırmalarının nasıl daha derine inileceğini ve bunların günlüklerinin nasıl inceleneceğini de gördük.

Daha sonra, tüm denemelerimizi birlikte görüntülemek ve performanslarını diğer denemeler ve hiperparametrelerle ilişkili olarak gözden geçirmek için uzaklaştırdık.

Her denemeden elde edilen gözlemlere dayanarak, hiperparametre değerlerimizdeki küçük değişikliklerin model performansımız üzerinde büyük bir etkisi olabileceğini görmek için hiperparametre uzayında gezinebildiğimizi öğrendik. SageMaker AMT ile, iyi hiperparametre değerlerini verimli bir şekilde bulmak ve model performansını en üst düzeye çıkarmak için hiperparametre optimizasyonu çalıştırabiliriz.

Gelecekte, SageMaker AMT tarafından sunulan farklı HPO stratejilerine ve kendi özel eğitim kodumuzu nasıl kullanacağımıza bakacağız. Bir sorunuz varsa veya gelecek gönderilerde ele almamız gereken bir alan önermek istiyorsanız yorumlarda bize bildirin.

O zamana kadar size ve modellerinize mutlu öğrenmeler ve ayarlamalar diliyoruz!

Referanslar

Alıntılar:

[1] Dua, D. ve Graff, C. (2019). UCI Makine Öğrenme Deposu [http://archive.ics.uci.edu/ml]. Irvine, CA: California Üniversitesi, Bilgi ve Bilgisayar Bilimleri Fakültesi.


yazarlar hakkında

Amazon SageMaker Otomatik Model Ayarlama PlatoBlockchain Veri Zekası ile hiperparametreleri optimize edin. Dikey Arama. Ai.Andrew Ellul Amazon Web Services ile bir Çözüm Mimarıdır. Almanya'da küçük ve orta ölçekli işletmelerle çalışıyor. Andrew, iş dışında doğayı yürüyerek veya bisikletle keşfetmekten keyif alıyor.

Amazon SageMaker Otomatik Model Ayarlama PlatoBlockchain Veri Zekası ile hiperparametreleri optimize edin. Dikey Arama. Ai.Elina Lesik Münih'te bulunan bir Çözüm Mimarıdır. Odak noktası Finansal Hizmetler Sektöründeki kurumsal müşterilerdir. Elina boş zamanlarında çapraz öğrenmek ve koşuya çıkmak için İspanyolca gitar teorisi öğrenmeyi seviyor.

Amazon SageMaker Otomatik Model Ayarlama PlatoBlockchain Veri Zekası ile hiperparametreleri optimize edin. Dikey Arama. Ai.Mariano Kampı Amazon Web Services'ta Baş Çözüm Mimarıdır. Almanya'daki finansal hizmetler müşterileriyle makine öğrenimi konusunda çalışıyor. Mariano, boş zamanlarında eşiyle yürüyüş yapmaktan hoşlanır.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi