Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jalankan Pekerjaan Tuning Hyperparameter Mulai yang Hangat
Gunakan start hangat untuk memulai pekerjaan tuning hyperparameter menggunakan satu atau lebih pekerjaan tuning sebelumnya sebagai titik awal. Hasil pekerjaan penyetelan sebelumnya digunakan untuk menginformasikan kombinasi hiperparameter mana yang harus dicari dalam pekerjaan penyetelan baru. Penyetelan hyperparameter menggunakan pencarian Bayesian atau acak untuk memilih kombinasi nilai hyperparameter dari rentang yang Anda tentukan. Untuk informasi selengkapnya, lihat Memahami strategi penyetelan hyperparameter yang tersedia di Amazon SageMaker. Menggunakan informasi dari pekerjaan tuning hyperparameter sebelumnya dapat membantu meningkatkan kinerja pekerjaan tuning hyperparameter baru dengan membuat pencarian kombinasi hyperparameter terbaik lebih efisien.
catatan
Pekerjaan penyetelan awal yang hangat biasanya membutuhkan waktu lebih lama untuk memulai daripada pekerjaan tuning hiperparameter standar, karena hasil dari pekerjaan induk harus dimuat sebelum pekerjaan dapat dimulai. Peningkatan waktu tergantung pada jumlah total pekerjaan pelatihan yang diluncurkan oleh pekerjaan orang tua.
Alasan untuk mempertimbangkan awal yang hangat meliputi yang berikut:
-
Untuk secara bertahap meningkatkan jumlah pekerjaan pelatihan selama beberapa pekerjaan penyetelan berdasarkan hasil setelah setiap iterasi.
-
Untuk menyetel model menggunakan data baru yang Anda terima.
-
Untuk mengubah rentang hyperparameter yang Anda gunakan dalam pekerjaan penyetelan sebelumnya, ubah hyperparameters statis menjadi tunable, atau ubah hyperparameters yang dapat disetel ke nilai statis.
-
Anda menghentikan pekerjaan hyperparameter sebelumnya lebih awal atau berhenti secara tak terduga.
Topik
Jenis Pekerjaan Penyetelan Mulai Hangat
Ada dua jenis pekerjaan penyetelan awal yang hangat:
IDENTICAL_DATA_AND_ALGORITHM
-
Pekerjaan penyetelan hiperparameter baru menggunakan data input dan gambar pelatihan yang sama dengan pekerjaan penyetelan induk. Anda dapat mengubah rentang hyperparameter untuk mencari dan jumlah maksimum pekerjaan pelatihan yang diluncurkan oleh pekerjaan tuning hyperparameter. Anda juga dapat mengubah hyperparameters dari tunable ke static, dan dari static ke tunable, tetapi jumlah total static plus tunable hyperparameters harus tetap sama seperti di semua pekerjaan induk. Anda tidak dapat menggunakan versi baru dari algoritma pelatihan, kecuali perubahan dalam versi baru tidak memengaruhi algoritme itu sendiri. Misalnya, perubahan yang meningkatkan pencatatan atau menambahkan dukungan untuk format data yang berbeda diperbolehkan.
Gunakan data dan algoritme yang identik saat Anda menggunakan data pelatihan yang sama seperti yang Anda gunakan dalam pekerjaan penyetelan hiperparameter sebelumnya, tetapi Anda ingin meningkatkan jumlah total pekerjaan pelatihan atau mengubah rentang atau nilai hiperparameter.
Saat Anda menjalankan jenis pekerjaan penyetelan awal yang hangat
IDENTICAL_DATA_AND_ALGORITHM
, ada bidang tambahan dalam respons terhadapDescribeHyperParameterTuningJob
namaOverallBestTrainingJob
. Nilai bidang ini adalah TrainingJobSummaryuntuk pekerjaan pelatihan dengan nilai metrik objektif terbaik dari semua pekerjaan pelatihan yang diluncurkan oleh pekerjaan penyetelan ini dan semua pekerjaan induk yang ditentukan untuk pekerjaan penyetelan awal yang hangat. TRANSFER_LEARNING
-
Pekerjaan penyetelan hiperparameter baru dapat mencakup data input, rentang hiperparameter, jumlah maksimum pekerjaan pelatihan bersamaan, dan jumlah maksimum pekerjaan pelatihan yang berbeda dari pekerjaan penyetelan hiperparameter induknya. Anda juga dapat mengubah hyperparameters dari tunable ke static, dan dari static ke tunable, tetapi jumlah total static plus tunable hyperparameters harus tetap sama seperti di semua pekerjaan induk. Gambar algoritma pelatihan juga bisa menjadi versi yang berbeda dari versi yang digunakan dalam pekerjaan tuning hyperparameter induk. Saat Anda menggunakan pembelajaran transfer, perubahan dalam kumpulan data atau algoritme yang secara signifikan memengaruhi nilai metrik objektif dapat mengurangi kegunaan penggunaan penyetelan awal yang hangat.
Pembatasan Penyetelan Mulai Hangat
Pembatasan berikut berlaku untuk semua pekerjaan penyetelan awal yang hangat:
-
Pekerjaan tuning dapat memiliki maksimal 5 pekerjaan orang tua, dan semua pekerjaan orang tua harus dalam status terminal (
Completed
,Stopped
, atauFailed
) sebelum Anda memulai pekerjaan penyetelan baru. -
Metrik objektif yang digunakan dalam pekerjaan penyetelan baru harus sama dengan metrik objektif yang digunakan dalam pekerjaan induk.
-
Jumlah total hiperparameter statis plus yang dapat disetel harus tetap sama antara pekerjaan induk dan pekerjaan penyetelan baru. Karena itu, jika Anda berpikir Anda mungkin ingin menggunakan hyperparameter sebagai tunable dalam pekerjaan tuning start hangat di masa depan, Anda harus menambahkannya sebagai hyperparameter statis saat Anda membuat pekerjaan penyetelan.
-
Tipe setiap hiperparameter (kontinu, bilangan bulat, kategoris) tidak boleh berubah antara pekerjaan induk dan pekerjaan penyetelan baru.
-
Jumlah total perubahan dari hiperparameter yang dapat disetel dalam pekerjaan induk ke hiperparameter statis dalam pekerjaan penyetelan baru, ditambah jumlah perubahan nilai hiperparameter statis tidak boleh lebih dari 10. Misalnya, jika pekerjaan induk memiliki hiperparameter kategoris yang dapat disetel dengan nilai yang mungkin
red
danblue
, Anda mengubah hiperparameter itu menjadi statis dalam pekerjaan penyetelan baru, yang dihitung sebagai 2 perubahan terhadap total 10 yang diizinkan. Jika hyperparameter yang sama memiliki nilai statisred
dalam pekerjaan induk, dan Anda mengubah nilai statis keblue
dalam pekerjaan penyetelan baru, itu juga dihitung sebagai 2 perubahan. -
Penyetelan awal yang hangat tidak rekursif. Misalnya, jika Anda membuat
MyTuningJob3
pekerjaan penyetelan awal yang hangat denganMyTuningJob2
sebagai pekerjaan orang tua, dan itu sendiriMyTuningJob2
merupakan pekerjaan penyetelan awal yang hangat dengan pekerjaan orang tuaMyTuningJob1
, informasi yang dipelajari saat menjalankan tidakMyTuningJob1
digunakan.MyTuningJob3
Jika Anda ingin menggunakan informasi dariMyTuningJob1
, Anda harus secara eksplisit menambahkannya sebagai induk untuk.MyTuningJob3
-
Pekerjaan pelatihan yang diluncurkan oleh setiap pekerjaan orang tua dalam pekerjaan penyetelan awal yang hangat dihitung terhadap 500 pekerjaan pelatihan maksimum untuk pekerjaan tuning.
-
Pekerjaan tuning hyperparameter yang dibuat sebelum 1 Oktober 2018 tidak dapat digunakan sebagai pekerjaan induk untuk pekerjaan tuning awal yang hangat.
Notebook Contoh Penyetelan Mulai Hangat
Untuk contoh buku catatan yang menunjukkan cara menggunakan penyetelan mulai hangat, lihat https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_warmstart/hpo_image_classification_warmstart.ipynbhpo_image_classification_warmstart.ipynb
Untuk membuka buku catatan, klik tab Use dan pilih Create copy.
Buat Job Tuning Mulai yang Hangat
Anda dapat menggunakan tingkat rendah AWS SDK untuk Python (Boto 3) atau Python tingkat tinggi untuk membuat pekerjaan SageMaker penyetelan awal yang SDK hangat.
Topik
Buat Pekerjaan Tuning Mulai yang Hangat (Level rendah untuk SageMaker API Python (Boto 3))
Untuk menggunakan penyetelan mulai hangat, Anda menentukan nilai HyperParameterTuningJobWarmStartConfig
objek, dan meneruskannya sebagai WarmStartConfig
bidang dalam panggilan ke CreateHyperParameterTuningJob
.
Kode berikut menunjukkan cara membuat HyperParameterTuningJobWarmStartConfig
objek dan meneruskannya ke CreateHyperParameterTuningJob
pekerjaan dengan menggunakan tingkat rendah SageMaker API untuk Python (Boto 3).
Buat HyperParameterTuningJobWarmStartConfig
objek:
warm_start_config = { "ParentHyperParameterTuningJobs" : [ {"HyperParameterTuningJobName" : 'MyParentTuningJob'} ], "WarmStartType" : "IdenticalDataAndAlgorithm" }
Buat pekerjaan penyetelan awal yang hangat:
smclient = boto3.Session().client('sagemaker') smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = 'MyWarmStartTuningJob', HyperParameterTuningJobConfig = tuning_job_config, # See notebook for tuning configuration TrainingJobDefinition = training_job_definition, # See notebook for job definition WarmStartConfig = warm_start_config)
Buat Job Tuning Mulai yang Hangat (SageMakerPythonSDK)
Untuk menggunakan Amazon SageMaker Python SDK
-
Tentukan pekerjaan induk dan tipe awal hangat dengan menggunakan
WarmStartConfig
objek. -
Lewati
WarmStartConfig
objek sebagai nilaiwarm_start_config
argumen HyperparameterTunerobjek. -
Panggil
fit
metodeHyperparameterTuner
objek.
Untuk informasi selengkapnya tentang penggunaan Amazon SageMaker Python SDK
Contoh ini menggunakan estimator yang menggunakan Klasifikasi Gambar - MXNet algoritma untuk pelatihan. Kode berikut menetapkan rentang hyperparameter yang dicari pekerjaan warm start tuning untuk menemukan kombinasi nilai terbaik. Untuk informasi tentang pengaturan rentang hyperparameter, lihatTentukan Rentang Hyperparameter.
hyperparameter_ranges = {'learning_rate': ContinuousParameter(0.0, 0.1), 'momentum': ContinuousParameter(0.0, 0.99)}
Kode berikut mengonfigurasi pekerjaan penyetelan awal yang hangat dengan membuat WarmStartConfig
objek.
from sagemaker.tuner import WarmStartConfig,WarmStartTypes parent_tuning_job_name = "MyParentTuningJob" warm_start_config = WarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents={parent_tuning_job_name})
Sekarang atur nilai untuk hyperparameters statis, yang merupakan hyperparameters yang menjaga nilai yang sama untuk setiap pekerjaan pelatihan yang diluncurkan oleh pekerjaan tuning start hangat. Dalam kode berikut, imageclassification
adalah estimator yang dibuat sebelumnya.
imageclassification.set_hyperparameters(num_layers=18, image_shape='3,224,224', num_classes=257, num_training_samples=15420, mini_batch_size=128, epochs=30, optimizer='sgd', top_k='2', precision_dtype='float32', augmentation_type='crop')
Sekarang buat HyperparameterTuner
objek dan lewati WarmStartConfig
objek yang sebelumnya Anda buat sebagai warm_start_config
argumen.
tuner_warm_start = HyperparameterTuner(imageclassification, 'validation:accuracy', hyperparameter_ranges, objective_type='Maximize', max_jobs=10, max_parallel_jobs=2, base_tuning_job_name='warmstart', warm_start_config=warm_start_config)
Akhirnya, panggil fit
metode HyperparameterTuner
objek untuk meluncurkan pekerjaan penyetelan awal yang hangat.
tuner_warm_start.fit( {'train': s3_input_train, 'validation': s3_input_validation}, include_cls_metadata=False)