Konfigurasikan dan Luncurkan Pekerjaan Tuning Hyperparameter - Amazon SageMaker

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

Konfigurasikan dan Luncurkan Pekerjaan Tuning Hyperparameter

Hyperparameter adalah parameter tingkat tinggi yang mempengaruhi proses pembelajaran selama pelatihan model. Untuk mendapatkan prediksi model terbaik, Anda dapat mengoptimalkan konfigurasi hyperparameter atau menetapkan nilai hyperparameter. Proses menemukan konfigurasi optimal disebut tuning hyperparameter. Untuk mengonfigurasi dan meluncurkan pekerjaan penyetelan hyperparameter, selesaikan langkah-langkah dalam panduan ini.

Pengaturan untuk pekerjaan tuning hyperparameter

Untuk menentukan pengaturan untuk pekerjaan tuning hyperparameter, tentukan objek JSON saat Anda membuat pekerjaan penyetelan. Berikan objek JSON ini sebagai nilai HyperParameterTuningJobConfig parameter ke CreateHyperParameterTuningJobAPI.

Dalam objek JSON ini, tentukan yang berikut ini:

Dalam objek JSON ini, Anda menentukan:

  • HyperParameterTuningJobObjective— Metrik objektif yang digunakan untuk mengevaluasi kinerja pekerjaan pelatihan yang diluncurkan oleh pekerjaan tuning hyperparameter.

  • ParameterRanges— Rentang nilai yang dapat digunakan oleh hyperparameter yang dapat disetel selama pengoptimalan. Lihat informasi yang lebih lengkap di Tentukan Rentang Hyperparameter

  • RandomSeed— Nilai yang digunakan untuk menginisialisasi generator bilangan pseudo-acak. Menyetel seed acak akan memungkinkan strategi pencarian tuning hyperparameter menghasilkan konfigurasi yang lebih konsisten untuk pekerjaan penyetelan yang sama (opsional).

  • ResourceLimits— Jumlah maksimum pekerjaan pelatihan dan pelatihan paralel yang dapat digunakan oleh pekerjaan tuning hyperparameter.

catatan

Jika Anda menggunakan algoritme Anda sendiri untuk penyetelan hyperparameter, bukan algoritma SageMaker bawaan, Anda harus menentukan metrik untuk algoritme Anda. Untuk informasi selengkapnya, lihat Tentukan metrik.

Contoh kode berikut menunjukkan cara mengkonfigurasi pekerjaan tuning hyperparameter menggunakan algoritma XGBoost bawaan. Contoh kode menunjukkan cara menentukan rentang untuketa,, alphamin_child_weight, dan max_depth hyperparameters. Untuk informasi lebih lanjut tentang ini dan hiperparameter lainnya, lihat Parameter XGBoost.

Dalam contoh kode ini, metrik objektif untuk pekerjaan tuning hyperparameter menemukan konfigurasi hyperparameter yang memaksimalkan. validation:auc SageMaker algoritma bawaan secara otomatis menulis metrik objektif ke CloudWatch Log. Contoh kode berikut juga menunjukkan cara mengaturRandomSeed.

tuning_job_config = { "ParameterRanges": { "CategoricalParameterRanges": [], "ContinuousParameterRanges": [ { "MaxValue": "1", "MinValue": "0", "Name": "eta" }, { "MaxValue": "2", "MinValue": "0", "Name": "alpha" }, { "MaxValue": "10", "MinValue": "1", "Name": "min_child_weight" } ], "IntegerParameterRanges": [ { "MaxValue": "10", "MinValue": "1", "Name": "max_depth" } ] }, "ResourceLimits": { "MaxNumberOfTrainingJobs": 20, "MaxParallelTrainingJobs": 3 }, "Strategy": "Bayesian", "HyperParameterTuningJobObjective": { "MetricName": "validation:auc", "Type": "Maximize" }, "RandomSeed" : 123 }

Konfigurasikan pekerjaan pelatihan

Pekerjaan tuning hyperparameter akan meluncurkan pekerjaan pelatihan untuk menemukan konfigurasi hiperparameter yang optimal. Pekerjaan pelatihan ini harus dikonfigurasi menggunakan SageMaker CreateHyperParameterTuningJobAPI.

Untuk mengonfigurasi pekerjaan pelatihan, tentukan objek JSON dan berikan sebagai nilai TrainingJobDefinition parameter di dalamnyaCreateHyperParameterTuningJob.

Dalam objek JSON ini, Anda dapat menentukan yang berikut:

  • AlgorithmSpecificationJalur registri gambar Docker yang berisi algoritma pelatihan dan metadata terkait. Untuk menentukan algoritme, Anda dapat menggunakan algoritme buatan khusus Anda sendiri di dalam wadah Docker atau algoritme SageMaker bawaan (wajib).

  • InputDataConfig— Konfigurasi input, termasukChannelName,ContentType, dan sumber data untuk data pelatihan dan pengujian Anda (wajib).

  • InputDataConfig— Konfigurasi input, termasukChannelName,ContentType, dan sumber data untuk data pelatihan dan pengujian Anda (wajib).

  • Lokasi penyimpanan untuk output algoritma. Tentukan bucket S3 tempat Anda ingin menyimpan output dari pekerjaan pelatihan.

  • RoleArnNama Sumber Daya Amazon (ARN) dari peran AWS Identity and Access Management (IAM) yang SageMaker digunakan untuk melakukan tugas. Tugas termasuk membaca data input, mengunduh gambar Docker, menulis artefak model ke bucket S3, menulis CloudWatch log ke Amazon Logs, dan menulis metrik ke CloudWatch Amazon (wajib).

  • StoppingCondition— Runtime maksimum dalam hitungan detik yang dapat dijalankan oleh pekerjaan pelatihan sebelum dihentikan. Nilai ini harus lebih besar dari waktu yang dibutuhkan untuk melatih model Anda (wajib).

  • MetricDefinitions— Nama dan ekspresi reguler yang mendefinisikan metrik apa pun yang dipancarkan oleh pekerjaan pelatihan. Tentukan metrik hanya jika Anda menggunakan algoritme pelatihan khusus. Contoh dalam kode berikut menggunakan algoritma bawaan, yang sudah memiliki metrik yang ditentukan. Untuk informasi tentang mendefinisikan metrik (opsional), lihat. Tentukan metrik

  • TrainingImage— Gambar kontainer Docker yang menentukan algoritma pelatihan (opsional).

  • StaticHyperParameters— Nama dan nilai hyperparameters yang tidak disetel dalam pekerjaan tuning (opsional).

Contoh kode berikut menetapkan nilai statis untuk eval_metricnum_round,objective,rate_drop,, dan tweedie_variance_power parameter algoritma Algoritma XGBoost bawaan.

SageMaker Python SDK v1
from sagemaker.amazon.amazon_estimator import get_image_uri training_image = get_image_uri(region, 'xgboost', repo_version='1.0-1') s3_input_train = 's3://{}/{}/train'.format(bucket, prefix) s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix) training_job_definition = { "AlgorithmSpecification": { "TrainingImage": training_image, "TrainingInputMode": "File" }, "InputDataConfig": [ { "ChannelName": "train", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_train } } }, { "ChannelName": "validation", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_validation } } } ], "OutputDataConfig": { "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix) }, "ResourceConfig": { "InstanceCount": 2, "InstanceType": "ml.c4.2xlarge", "VolumeSizeInGB": 10 }, "RoleArn": role, "StaticHyperParameters": { "eval_metric": "auc", "num_round": "100", "objective": "binary:logistic", "rate_drop": "0.3", "tweedie_variance_power": "1.4" }, "StoppingCondition": { "MaxRuntimeInSeconds": 43200 } }
SageMaker Python SDK v2
training_image = sagemaker.image_uris.retrieve('xgboost', region, '1.0-1') s3_input_train = 's3://{}/{}/train'.format(bucket, prefix) s3_input_validation ='s3://{}/{}/validation/'.format(bucket, prefix) training_job_definition = { "AlgorithmSpecification": { "TrainingImage": training_image, "TrainingInputMode": "File" }, "InputDataConfig": [ { "ChannelName": "train", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_train } } }, { "ChannelName": "validation", "CompressionType": "None", "ContentType": "csv", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": s3_input_validation } } } ], "OutputDataConfig": { "S3OutputPath": "s3://{}/{}/output".format(bucket,prefix) }, "ResourceConfig": { "InstanceCount": 2, "InstanceType": "ml.c4.2xlarge", "VolumeSizeInGB": 10 }, "RoleArn": role, "StaticHyperParameters": { "eval_metric": "auc", "num_round": "100", "objective": "binary:logistic", "rate_drop": "0.3", "tweedie_variance_power": "1.4" }, "StoppingCondition": { "MaxRuntimeInSeconds": 43200 } }

Beri nama dan luncurkan pekerjaan penyetelan hyperparameter

Setelah mengonfigurasi tugas tuning hyperparameter, Anda dapat meluncurkannya dengan memanggil API. CreateHyperParameterTuningJob Contoh kode berikut menggunakan tuning_job_config dantraining_job_definition. Ini didefinisikan dalam dua contoh kode sebelumnya untuk membuat pekerjaan tuning hyperparameter.

tuning_job_name = "MyTuningJob" smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = tuning_job_name, HyperParameterTuningJobConfig = tuning_job_config, TrainingJobDefinition = training_job_definition)

Lihat Status Pekerjaan Pelatihan

Untuk melihat status pekerjaan pelatihan yang diluncurkan oleh pekerjaan tuning hyperparameter
  1. Dalam daftar pekerjaan tuning hyperparameter, pilih pekerjaan yang Anda luncurkan.

  2. Pilih pekerjaan Pelatihan.

  3. Lihat status setiap pekerjaan pelatihan. Untuk melihat detail lebih lanjut tentang pekerjaan, pilih di daftar pekerjaan pelatihan. Untuk melihat ringkasan status semua pekerjaan pelatihan yang diluncurkan oleh pekerjaan tuning hyperparameter, lihat Penghitung status pekerjaan pelatihan.

    Pekerjaan pelatihan dapat berupa:

    • Completed—Pekerjaan pelatihan berhasil diselesaikan.

    • InProgress—Pekerjaan pelatihan sedang berlangsung.

    • Stopped—Pekerjaan pelatihan dihentikan secara manual sebelum selesai.

    • Failed (Retryable)—Pekerjaan pelatihan gagal, tetapi dapat dicoba lagi. Pekerjaan pelatihan yang gagal dapat dicoba kembali hanya jika gagal karena kesalahan layanan internal terjadi.

    • Failed (Non-retryable)—Pekerjaan pelatihan gagal dan tidak dapat dicoba lagi. Pekerjaan pelatihan yang gagal tidak dapat dicoba lagi ketika kesalahan klien terjadi.

    catatan

    Pekerjaan tuning hyperparameter dapat dihentikan dan sumber daya yang mendasarinya dihapus, tetapi pekerjaan itu sendiri tidak dapat dihapus.

Lihat Training Job Terbaik

Pekerjaan tuning hyperparameter menggunakan metrik objektif yang dikembalikan oleh setiap pekerjaan pelatihan untuk mengevaluasi pekerjaan pelatihan. Sementara pekerjaan tuning hyperparameter sedang berlangsung, pekerjaan pelatihan terbaik adalah pekerjaan yang telah mengembalikan metrik objektif terbaik sejauh ini. Setelah pekerjaan tuning hyperparameter selesai, pekerjaan pelatihan terbaik adalah pekerjaan yang mengembalikan metrik objektif terbaik.

Untuk melihat pekerjaan pelatihan terbaik, pilih Pekerjaan pelatihan terbaik.

Untuk menerapkan pekerjaan pelatihan terbaik sebagai model yang dapat Anda host di SageMaker titik akhir, pilih Buat model.

Langkah Selanjutnya

Hapus