Jalankan Pekerjaan Tuning Hyperparameter Mulai yang Hangat - Amazon SageMaker

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.

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 hangatIDENTICAL_DATA_AND_ALGORITHM, ada bidang tambahan dalam respons terhadap DescribeHyperParameterTuningJobnamaOverallBestTrainingJob. 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 statis red dalam pekerjaan induk, dan Anda mengubah nilai statis ke blue 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 dengan MyTuningJob2 sebagai pekerjaan orang tua, dan itu sendiri MyTuningJob2 merupakan pekerjaan penyetelan awal yang hangat dengan pekerjaan orang tuaMyTuningJob1, informasi yang dipelajari saat menjalankan tidak MyTuningJob1 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.ipynb. Untuk petunjuk cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh, lihat. SageMaker Akses contoh notebook Setelah Anda membuat instance notebook dan membukanya, pilih tab SageMaker Contoh untuk melihat daftar semua SageMaker sampel. Notebook contoh penyetelan awal hangat terletak di bagian tuning Hyperparameter, dan diberi nama. hpo_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.

Buat Pekerjaan Tuning Mulai yang Hangat (Level rendah untuk SageMaker API Python (Boto 3))

Untuk menggunakan penyetelan mulai hangat, Anda menentukan nilai HyperParameterTuningJobWarmStartConfigobjek, dan meneruskannya sebagai WarmStartConfig bidang dalam panggilan ke CreateHyperParameterTuningJob.

Kode berikut menunjukkan cara membuat HyperParameterTuningJobWarmStartConfigobjek dan meneruskannya ke CreateHyperParameterTuningJobpekerjaan 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 untuk menjalankan pekerjaan penyetelan awal yang hangat, Anda:

  • Tentukan pekerjaan induk dan tipe awal hangat dengan menggunakan WarmStartConfig objek.

  • Lewati WarmStartConfig objek sebagai nilai warm_start_config argumen HyperparameterTunerobjek.

  • Panggil fit metode HyperparameterTuner objek.

Untuk informasi selengkapnya tentang penggunaan Amazon SageMaker Python SDK untuk penyetelan hyperparameter, lihat #. https://github.com/aws/ sagemaker-python-sdk sagemaker-automatic-model-tuning

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)