Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Jalankan Pekerjaan Penyetelan Hyperparameter Warm Start
Gunakan start hangat untuk memulai pekerjaan penyetelan hyperparameter menggunakan satu atau lebih pekerjaan penyetelan sebelumnya sebagai titik awal. Hasil pekerjaan penyetelan sebelumnya digunakan untuk menginformasikan kombinasi hyperparameter mana yang akan 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 AI SageMaker. Menggunakan informasi dari pekerjaan penyetelan hyperparameter sebelumnya dapat membantu meningkatkan kinerja pekerjaan penyetelan hyperparameter baru dengan membuat pencarian kombinasi hyperparameter terbaik menjadi lebih efisien.
catatan
Pekerjaan penyetelan awal hangat biasanya membutuhkan waktu lebih lama untuk memulai daripada pekerjaan penyetelan hyperparameter standar, karena hasil dari pekerjaan induk harus dimuat sebelum pekerjaan dapat dimulai. Peningkatan waktu tergantung pada jumlah total pekerjaan pelatihan yang diluncurkan oleh pekerjaan induk.
Alasan untuk mempertimbangkan awal yang hangat meliputi yang berikut:
-
Untuk secara bertahap meningkatkan jumlah pekerjaan pelatihan selama beberapa pekerjaan tuning 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 hyperparameter statis menjadi dapat disetel, atau ubah hyperparameter yang dapat disetel ke nilai statis.
-
Anda menghentikan pekerjaan hyperparameter sebelumnya lebih awal atau berhenti secara tidak terduga.
Topik
Jenis Pekerjaan Tuning Mulai Hangat
Ada dua jenis pekerjaan penyetelan awal hangat:
IDENTICAL_DATA_AND_ALGORITHM-
Pekerjaan penyetelan hyperparameter 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 penyetelan hyperparameter. Anda juga dapat mengubah hyperparameter dari yang dapat disetel ke statis, dan dari statis ke yang dapat disetel, tetapi jumlah total hyperparameter statis plus yang dapat disetel harus tetap sama seperti di semua pekerjaan induk. Anda tidak dapat menggunakan versi baru dari algoritma pelatihan, kecuali perubahan dalam versi baru tidak mempengaruhi algoritma itu sendiri. Misalnya, perubahan yang meningkatkan logging atau menambahkan dukungan untuk format data yang berbeda diperbolehkan.
Gunakan data dan algoritma yang identik saat Anda menggunakan data pelatihan yang sama seperti yang Anda gunakan dalam pekerjaan penyetelan hyperparameter sebelumnya, tetapi Anda ingin meningkatkan jumlah total pekerjaan pelatihan atau mengubah rentang atau nilai hyperparameter.
Saat Anda menjalankan tugas penyetelan awal hangat dari jenis
IDENTICAL_DATA_AND_ALGORITHM, ada bidang tambahan dalam respons terhadapDescribeHyperParameterTuningJobnamaOverallBestTrainingJob. Nilai bidang ini adalah TrainingJobSummary untuk 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 hangat. TRANSFER_LEARNING-
Pekerjaan penyetelan hyperparameter baru dapat mencakup data input, rentang hyperparameter, jumlah maksimum pekerjaan pelatihan bersamaan, dan jumlah maksimum pekerjaan pelatihan yang berbeda dari pekerjaan penyetelan hyperparameter induknya. Anda juga dapat mengubah hyperparameter dari yang dapat disetel ke statis, dan dari statis ke yang dapat disetel, tetapi jumlah total hyperparameter statis plus yang dapat disetel harus tetap sama seperti di semua pekerjaan induk. Gambar algoritma pelatihan juga bisa menjadi versi yang berbeda dari versi yang digunakan dalam pekerjaan penyetelan hyperparameter induk. Saat Anda menggunakan pembelajaran transfer, perubahan dalam dataset atau algoritma yang secara signifikan mempengaruhi nilai metrik objektif dapat mengurangi kegunaan menggunakan penyetelan awal hangat.
Batasan Penyetelan Mulai Hangat
Pembatasan berikut berlaku untuk semua pekerjaan penyetelan awal hangat:
-
Pekerjaan penyetelan dapat memiliki maksimal 5 pekerjaan induk, dan semua pekerjaan induk harus berada 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 hyperparameter statis plus yang dapat disetel harus tetap sama antara pekerjaan induk dan pekerjaan penyetelan baru. Karena itu, jika menurut Anda mungkin ingin menggunakan hyperparameter sebagai dapat disetel dalam pekerjaan penyetelan awal hangat di masa mendatang, Anda harus menambahkannya sebagai hyperparameter statis saat Anda membuat pekerjaan penyetelan.
-
Jenis setiap hyperparameter (kontinu, integer, kategoris) tidak boleh berubah antara pekerjaan induk dan pekerjaan penyetelan baru.
-
Jumlah perubahan total dari hyperparameter yang dapat disetel dalam pekerjaan induk ke hyperparameter statis dalam pekerjaan penyetelan baru, ditambah jumlah perubahan nilai hyperparameter statis tidak boleh lebih dari 10. Misalnya, jika pekerjaan induk memiliki hyperparameter kategoris yang dapat disetel dengan nilai yang mungkin
reddanblue, Anda mengubah hyperparameter tersebut menjadi statis dalam pekerjaan penyetelan baru, itu dihitung sebagai 2 perubahan terhadap total 10 yang diizinkan. Jika hyperparameter yang sama memiliki nilai statisreddi pekerjaan induk, dan Anda mengubah nilai statis kebluedalam pekerjaan penyetelan baru, itu juga dihitung sebagai 2 perubahan. -
Penyetelan awal hangat tidak rekursif. Misalnya, jika Anda membuat
MyTuningJob3pekerjaan penyetelan awal hangat denganMyTuningJob2pekerjaan induk, dan itu sendiriMyTuningJob2merupakan pekerjaan penyetelan awal hangat dengan pekerjaan indukMyTuningJob1, informasi yang dipelajari saat menjalankanMyTuningJob1tidak digunakan untukMyTuningJob3. Jika Anda ingin menggunakan informasi dariMyTuningJob1, Anda harus menambahkannya secara eksplisit sebagai induk untukMyTuningJob3. -
Pekerjaan pelatihan yang diluncurkan oleh setiap pekerjaan induk dalam pekerjaan tuning awal yang hangat dihitung terhadap 500 pekerjaan pelatihan maksimum untuk pekerjaan tuning.
-
Pekerjaan penyetelan hyperparameter yang dibuat sebelum 1 Oktober 2018 tidak dapat digunakan sebagai pekerjaan induk untuk pekerjaan penyetelan awal hangat.
Notebook Sampel Penyetelan Mulai Hangat
Untuk contoh notebook yang menunjukkan cara menggunakan penyetelan awal hangat, lihat https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_warmstart/hpo_image_classification_warmstart.ipynb
Buat Pekerjaan Penyetelan Mulai yang Hangat
Anda dapat menggunakan AWS SDK tingkat rendah untuk Python (Boto 3) atau SageMaker AI Python SDK tingkat tinggi untuk membuat pekerjaan penyetelan awal yang hangat.
Topik
Buat Pekerjaan Tuning Mulai yang Hangat (API Low-level SageMaker AI untuk Python (Boto 3))
Untuk menggunakan penyetelan awal 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 API SageMaker AI tingkat rendah 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 Pekerjaan Penyetelan Mulai yang Hangat (SageMaker AI Python SDK)
Untuk menggunakan Amazon SageMaker Python SDK
-
Tentukan pekerjaan induk dan jenis awal hangat dengan menggunakan
WarmStartConfigobjek. -
M
WarmStartConfigeneruskan objek sebagai nilaiwarm_start_configargumen HyperparameterTunerobjek. -
Pang
tunegil metodeHyperparameterTunerobjek.
Untuk informasi selengkapnya tentang menggunakan Amazon SageMaker Python SDK
Contoh ini menggunakan estimator yang menggunakan Klasifikasi Gambar - MXNet algoritma untuk pelatihan. Kode berikut menetapkan rentang hyperparameter yang dicari oleh pekerjaan penyetelan awal hangat di dalamnya untuk menemukan kombinasi nilai terbaik. Untuk informasi tentang menyetel 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 hangat dengan membuat WarmStartConfig objek.
from sagemaker.train.tuner import WarmStartTypes from sagemaker.core.shapes import HyperParameterTuningJobWarmStartConfig parent_tuning_job_name = "MyParentTuningJob" warm_start_config = HyperParameterTuningJobWarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents=[parent_tuning_job_name])
Sekarang atur nilai untuk hyperparameter statis, yang merupakan hyperparameter yang mempertahankan nilai yang sama untuk setiap pekerjaan pelatihan yang diluncurkan oleh pekerjaan penyetelan awal hangat. Dalam kode berikut, imageclassification adalah ModelTrainer yang dibuat sebelumnya.
from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute imageclassification = ModelTrainer( training_image=training_image, role=role, 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', }, compute=Compute(instance_type='ml.p3.8xlarge', instance_count=1), )
Sekarang buat HyperparameterTuner objek dan berikan WarmStartConfig objek yang sebelumnya Anda buat sebagai warm_start_config argumen.
tuner_warm_start = HyperparameterTuner(model_trainer=imageclassification, objective_metric_name='validation:accuracy', hyperparameter_ranges=hyperparameter_ranges, objective_type='Maximize', max_jobs=10, max_parallel_jobs=2, base_tuning_job_name='warmstart', warm_start_config=warm_start_config)
Terakhir, panggil fit metode tune atau HyperparameterTuner objek untuk meluncurkan pekerjaan penyetelan awal hangat.
tuner_warm_start.tune( {'train': s3_input_train, 'validation': s3_input_validation})