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 APIs untuk menentukan rentang hyperparameter. Ini juga menyediakan daftar jenis penskalaan hyperparameter yang dapat Anda gunakan.
Memilih hiperparameter dan rentang secara signifikan memengaruhi kinerja pekerjaan penyetelan Anda. Penyetelan hyperparameter menemukan nilai hyperparameter terbaik untuk model Anda dengan mencari pada rentang nilai yang Anda tentukan untuk setiap hyperparameter yang dapat disetel. Anda juga dapat menentukan hingga 100 hiperparameter statis yang tidak berubah selama pekerjaan penyetelan. Anda dapat menggunakan hingga 100 hyperparameters secara total (statis+tunable). Untuk panduan memilih hiperparameter dan rentang, lihatPraktik Terbaik untuk Tuning Hyperparameter. Anda juga dapat menggunakan autotune untuk menemukan pengaturan pekerjaan penyetelan yang optimal. Untuk informasi lebih lanjut, lihat bagian Autotune berikut.
catatan
SageMaker Automatic Model Tuning (AMT) dapat menambahkan hiperparameter tambahan yang berkontribusi pada batas 100 hiperparameter total. Saat ini, untuk meneruskan metrik tujuan Anda ke pekerjaan penyetelan untuk digunakan selama pelatihan, SageMaker tambahkan _tuning_objective_metric
secara otomatis.
Hiperparameter statis
Gunakan hyperparameters 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 untuk param1
yang terletak di antara dua nilai, dan lulus param2
sebagai hyperparameter statis, sebagai berikut.
param1: ["range_min","range_max"] param2: "static_value"
Hiperparameter statis memiliki struktur berikut:
"StaticHyperParameters": { "objective" : "reg:squarederror", "dropout_rate": "0.3" }
Anda dapat menggunakan Amazon SageMaker API untuk menentukan pasangan nilai kunci di StaticHyperParametersbidang HyperParameterTrainingJobDefinition
parameter yang Anda berikan ke CreateHyperParameterTuningJoboperasi.
Hiperparameter dinamis
Anda dapat menggunakan SageMaker API untuk menentukan rentang hyperparameter. Tentukan nama hyperparameters dan rentang nilai di ParameterRanges
bidang HyperParameterTuningJobConfig
parameter yang Anda berikan ke CreateHyperParameterTuningJob
operasi.
ParameterRanges
Bidang ini memiliki tiga subbidang: kategoris, bilangan bulat, dan kontinu. Anda dapat menentukan hingga 30 total (kategorik+integer+kontinu) hiperparameter yang dapat disetel untuk dicari.
catatan
Setiap hiperparameter kategoris dapat memiliki paling banyak 30 nilai yang berbeda.
Hyperparameter dinamis memiliki struktur 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 mungkin.
Autotune
Untuk menghemat waktu dan sumber daya mencari rentang hiperparameter, 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 hiperparameter 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 dari pekerjaan tuning, dan jumlah maksimum pekerjaan pelatihan yang dapat dijalankan pada saat yang sama.
-
TrainingJobEarlyStoppingTypeBendera yang menghentikan pekerjaan pelatihan jika suatu pekerjaan tidak membaik secara signifikan terhadap metrik objektif. Default untuk diaktifkan. Untuk informasi selengkapnya, lihat Hentikan Pekerjaan Pelatihan Lebih Awal.
-
RetryStrategy— Berapa kali untuk mencoba kembali pekerjaan pelatihan. Nilai bukan nol untuk
RetryStrategy
dapat meningkatkan kemungkinan bahwa pekerjaan Anda akan berhasil diselesaikan. -
Strategi - Menentukan bagaimana tuning 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:
-
Tentukan hyperparameter dan nilai contoh di
AutoParameters
bidang. ParameterRangesAPI -
Aktifkan autotune.
AMTakan menentukan apakah hyperparameters 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 gunakan ValueHint
untuk memilih rentang optimal untuk Anda. Anda dapat menggunakan DescribeHyperParameterTrainingJob
API untuk melihat rentang ini.
Contoh berikut menunjukkan cara mengkonfigurasi pekerjaan tuning yang menggunakan autotune. Dalam contoh konfigurasi, hyperparameter max_depth
telah ValueHint
berisi nilai contoh dari. 4
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 max_depth hyperparameter menjadi hyperparameter. AutoParameters IntegerParameterRanges
Tanggapan berikut dari a DescribeHyperParameterTrainingJob
API menunjukkan bahwa yang optimal IntegerParameterRanges
untuk 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 hiperparameter integer dan kontinu, Anda dapat memilih skala yang ingin digunakan oleh 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 tuning hyperparameter memilih skala terbaik untuk hyperparameter.
- Linear
-
Tuning hyperparameter mencari nilai dalam rentang hyperparameter dengan menggunakan skala linier. Biasanya, Anda memilih ini jika rentang semua nilai dari yang terendah ke tertinggi relatif kecil (dalam satu urutan besarnya). Nilai pencarian seragam dari rentang memberikan eksplorasi yang masuk akal dari seluruh rentang.
- Logaritmik
-
Tuning hyperparameter mencari 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
hiperparameter, 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 dalam skala linier rata-rata akan mencurahkan 90 persen anggaran pelatihan Anda hanya untuk nilai antara 0,1 dan 1,0. Akibatnya, itu hanya menyisakan 10 persen dari anggaran pelatihan Anda untuk nilai antara .0001 dan .1. ReverseLogarithmic
-
Tuning hyperparameter mencari nilai dalam rentang hyperparameter dengan menggunakan skala logaritmik terbalik. Penskalaan logaritmik terbalik hanya didukung untuk rentang hyperparameter kontinu. Hal 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 SageMaker hyperparameter Amazon