View a markdown version of this page

Tentukan Rentang Hyperparameter - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tentukan Rentang Hyperparameter

Panduan ini menunjukkan cara menggunakan SageMaker API untuk menentukan rentang hyperparameter. Ini juga menyediakan daftar jenis penskalaan hyperparameter yang dapat Anda gunakan.

Memilih hyperparameter dan rentang secara signifikan mempengaruhi kinerja pekerjaan tuning Anda. Penyetelan hyperparameter menemukan nilai hyperparameter terbaik untuk model Anda dengan mencari rent ang nilai yang Anda tentukan untuk setiap hyperparameter yang dapat disetel. Anda juga dapat menentukan hingga 100 hyperparameter statis yang tidak berubah selama pekerjaan penyetelan. Anda dapat menggunakan hingga 100 hyperparameter secara total (statis + dapat disetel). Untuk panduan memilih hyperparameter dan rentang, lihatPraktik Terbaik untuk Penyetelan Hyperparameter. Anda juga dapat menggunakan autotune untuk menemukan pengaturan pekerjaan penyetelan yang optimal. Untuk informasi selengkapnya, lihat bagian Autotune berikut.

catatan

SageMaker AI Automatic Model Tuning (AMT) dapat menambahkan hyperparameter tambahan yang berkontribusi pada batas total 100 hyperparameter. Saat ini, untuk meneruskan metrik tujuan Anda ke pekerjaan penyetelan untuk digunakan selama pelatihan, SageMaker AI menambahkan _tuning_objective_metric secara otomatis.

Hyperparameter statis

Gunakan hyperparameter statis untuk kasus berikut: Misalnya, Anda dapat menggunakan AMT untuk menyetel model Anda menggunakan param1 (parameter yang dapat disetel) dan param2 (parameter statis). Jika Anda melakukannya, maka gunakan ruang pencarian param1 yang terletak di antara dua nilai, dan berikan param2 sebagai hyperparameter statis, sebagai berikut.

param1: ["range_min","range_max"] param2: "static_value"

Hyperparameter statis memiliki struktur sebagai berikut:

"StaticHyperParameters": { "objective" : "reg:squarederror", "dropout_rate": "0.3" }

Anda dapat menggunakan Amazon SageMaker API untuk menentukan pasangan nilai kunci di StaticHyperParameters bidang HyperParameterTrainingJobDefinition parameter yang Anda berikan ke CreateHyperParameterTuningJob operasi.

Hyperparameter dinamis

Anda dapat menggunakan SageMaker API untuk menentukan rentang https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-HyperParameterRanges hyperparameter. Tentukan nama hyperparameter dan rentang nilai di ParameterRanges bidang HyperParameterTuningJobConfig parameter yang Anda berikan ke CreateHyperParameterTuningJob operasi.

ParameterRangesBidang ini memiliki tiga subbidang: kategoris, integer, dan kontinu. Anda dapat menentukan hingga 30 total (kategoris + integer + kontinu) hyperparameter yang dapat disetel untuk dicari.

catatan

Setiap hyperparameter kategoris dapat memiliki paling banyak 30 nilai yang berbeda.

Hyperparameter dinamis memiliki struktur sebagai berikut:

"ParameterRanges": { "CategoricalParameterRanges": [ { "Name": "tree_method", "Values": ["auto", "exact", "approx", "hist"] } ], "ContinuousParameterRanges": [ { "Name": "eta", "MaxValue" : "0.5", "MinValue": "0", "ScalingType": "Auto" } ], "IntegerParameterRanges": [ { "Name": "max_depth", "MaxValue": "10", "MinValue": "1", "ScalingType": "Auto" } ] }

Jika Anda membuat pekerjaan penyetelan dengan Grid strategi, Anda hanya dapat menentukan nilai kategoris. Anda tidak perlu menyediakanMaxNumberofTrainingJobs. Nilai ini disimpulkan dari jumlah total konfigurasi yang dapat dihasilkan dari parameter kategoris Anda. Jika ditentukan, nilai MaxNumberOfTrainingJobs harus sama dengan jumlah total kombinasi kategoris yang berbeda yang mungkin.

Tuning Otomatis

Untuk menghemat waktu dan sumber daya mencari rentang hyperparameter, sumber daya atau metrik objektif, autotune dapat secara otomatis menebak nilai optimal untuk beberapa bidang hyperparameter. Gunakan autotune untuk menemukan nilai optimal untuk bidang berikut:

  • ParameterRanges— Nama dan rentang hyperparameter yang dapat dioptimalkan oleh pekerjaan penyetelan.

  • ResourceLimits— Sumber daya maksimum yang akan digunakan dalam pekerjaan penyetelan. Sumber daya ini dapat mencakup jumlah maksimum pekerjaan pelatihan, runtime maksimum pekerjaan penyetelan, dan jumlah maksimum pekerjaan pelatihan yang dapat dijalankan pada saat yang bersamaan.

  • TrainingJobEarlyStoppingTypeBendera yang menghentikan pekerjaan pelatihan jika pekerjaan tidak meningkat secara signifikan terhadap metrik objektif. Defaultnya diaktifkan. Untuk informasi selengkapnya, lihat Hentikan Pekerjaan Pelatihan Lebih Awal.

  • RetryStrategy— Jumlah kali untuk mencoba kembali pekerjaan pelatihan. Non-zero nilai untuk RetryStrategy dapat meningkatkan kemungkinan bahwa pekerjaan Anda akan selesai dengan sukses.

  • Strategi — Menentukan bagaimana penyetelan hyperparameter memilih kombinasi nilai hyperparameter yang akan digunakan untuk pekerjaan pelatihan yang diluncurkan.

  • ConvergenceDetected- Bendera untuk menunjukkan bahwa Automatic Model Tuning (AMT) telah mendeteksi konvergensi model.

Untuk menggunakan autotune, lakukan hal berikut:

  1. Tentukan hyperparameter dan nilai contoh di AutoParameters bidang ParameterRanges API.

  2. Aktifkan autotune.

AMT akan menentukan apakah hyperparameter dan nilai contoh Anda memenuhi syarat untuk autotune. Hyperparameter yang dapat digunakan dalam autotune secara otomatis ditetapkan ke jenis rentang parameter yang sesuai. Kemudian, AMT menggunakan ValueHint untuk memilih rentang optimal untuk Anda. Anda dapat menggunakan DescribeHyperParameterTrainingJob API untuk melihat rentang ini.

Contoh berikut menunjukkan cara mengonfigurasi pekerjaan penyetelan yang menggunakan autotune. Dalam contoh konfigurasi, hyper max_depth parameter ValueHint mengandung nilai contoh4.

config = { 'Autotune': {'Mode': 'Enabled'}, 'HyperParameterTuningJobName':'my-autotune-job', 'HyperParameterTuningJobConfig': { 'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'}, 'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1}, 'ParameterRanges': { 'AutoParameters': [ {'Name': 'max_depth', 'ValueHint': '4'} ] } }, 'TrainingJobDefinition': { .... }

Melanjutkan contoh sebelumnya, pekerjaan penyetelan dibuat setelah konfigurasi sebelumnya disertakan dalam panggilan ke CreateHyperParameterTuningJob API. Kemudian, autotune mengubah hyperparameter max_deep menjadi hyperparameter. AutoParameters IntegerParameterRanges Respons berikut dari DescribeHyperParameterTrainingJob API menunjukkan bahwa yang IntegerParameterRanges optimal max_depth adalah antara 2 dan8.

{ 'HyperParameterTuningJobName':'my_job', 'HyperParameterTuningJobConfig': { 'ParameterRanges': { 'IntegerParameterRanges': [ {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'}, ], } }, 'TrainingJobDefinition': { ... }, 'Autotune': {'Mode': 'Enabled'} }

Jenis penskalaan hyperparameter

Untuk rentang hyperparameter integer dan kontinu, Anda dapat memilih skala yang ingin Anda gunakan penyetelan hyperparameter. Misalnya, untuk mencari rentang nilai, Anda dapat menentukan nilai untuk ScalingType bidang rentang hyperparameter. Anda dapat memilih dari jenis penskalaan hyperparameter berikut:

Otomatis

SageMaker Penyetelan hyperparameter AI memilih skala terbaik untuk hyperparameter.

Linear

Penyetelan hyperparameter mencari nilai-nilai dalam rentang hyperparameter dengan menggunakan skala linier. Biasanya, Anda memilih ini jika kisaran semua nilai dari yang terendah ke yang tertinggi relatif kecil (dalam satu urutan besarnya). Penelusuran nilai secara seragam dari rentang memberikan eksplorasi yang masuk akal dari seluruh rentang.

Logaritmik

Penyetelan hyperparameter mencari nilai-nilai dalam rentang hyperparameter dengan menggunakan skala logaritmik.

Penskalaan logaritmik hanya berfungsi untuk rentang yang memiliki nilai lebih besar dari 0.

Pilih penskalaan logaritmik saat Anda mencari rentang yang mencakup beberapa urutan besarnya.

Misalnya, jika Anda menyetel Menyetel model pembelajar linier model, dan Anda menentukan rentang nilai antara .0001 dan 1.0 untuk learning_rate hyperparameter, pertimbangkan hal berikut: Mencari secara seragam pada skala logaritmik memberi Anda sampel yang lebih baik dari seluruh rentang daripada mencari pada skala linier. Ini karena pencarian pada skala linier, rata-rata, akan mencurahkan 90 persen dari anggaran pelatihan Anda hanya untuk nilai antara .1 dan 1,0. Akibatnya, itu hanya menyisakan 10 persen dari anggaran pelatihan Anda untuk nilai antara .0001 dan .1.

ReverseLogarithmic

Penyetelan hyperparameter mencari nilai-nilai dalam rentang hyperparameter dengan menggunakan skala logaritmik terbalik. Penskalaan logaritmik terbalik hanya didukung untuk rentang hiperparameter kontinu. Ini tidak didukung untuk rentang hyperparameter integer.

Pilih penskalaan logaritmik terbalik saat Anda mencari rentang yang sangat sensitif terhadap perubahan kecil yang sangat dekat dengan 1.

Penskalaan logaritmik terbalik hanya berfungsi untuk rentang yang seluruhnya berada dalam kisaran 0<=x<1.0.

Untuk contoh notebook yang menggunakan penskalaan hyperparameter, lihat contoh hyperparameter Amazon SageMaker AI ini di. GitHub