Buat Job Tuning Optimasi Hyperparameter untuk Satu atau Lebih Algoritma (Konsol) - Amazon SageMaker

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

Buat Job Tuning Optimasi Hyperparameter untuk Satu atau Lebih Algoritma (Konsol)

Panduan ini menunjukkan kepada Anda cara membuat pekerjaan penyetelan optimasi hyperparameter (HPO) baru untuk satu atau lebih algoritme. Untuk membuat pekerjaan HPO, tentukan pengaturan untuk pekerjaan penyetelan, dan buat definisi pekerjaan pelatihan untuk setiap algoritme yang disetel. Selanjutnya, konfigurasikan sumber daya untuk dan buat pekerjaan penyetelan. Bagian berikut memberikan rincian tentang cara menyelesaikan setiap langkah. Kami memberikan contoh cara menyetel beberapa algoritme menggunakan SageMaker SDK for Python client di akhir panduan ini.

Komponen pekerjaan tuning

Pekerjaan penyetelan HPO berisi tiga komponen berikut:

  • Menyetel pengaturan pekerjaan

  • Definisi pekerjaan pelatihan

  • Konfigurasi pekerjaan penyetelan

Cara komponen-komponen ini disertakan dalam pekerjaan penyetelan HPO Anda tergantung pada apakah pekerjaan penyetelan Anda berisi satu atau beberapa algoritme pelatihan. Panduan berikut menjelaskan masing-masing komponen dan memberikan contoh dari kedua jenis pekerjaan tuning.

Pengaturan pekerjaan tuning Anda diterapkan di semua algoritme dalam pekerjaan penyetelan HPO. Mulai hangat dan penghentian awal hanya tersedia saat Anda menyetel satu algoritma. Setelah Anda menentukan pengaturan pekerjaan, Anda dapat membuat definisi pelatihan individual untuk setiap algoritme atau variasi yang ingin Anda sesuaikan.

Awal yang hangat

Jika Anda mengkloning pekerjaan ini, Anda dapat menggunakan hasil dari pekerjaan penyetelan sebelumnya untuk meningkatkan kinerja pekerjaan penyetelan baru ini. Ini adalah fitur awal yang hangat, dan hanya tersedia saat menyetel satu algoritma. Dengan opsi start hangat, Anda dapat memilih hingga lima pekerjaan penyetelan hyperparameter sebelumnya untuk digunakan. Atau, Anda dapat menggunakan pembelajaran transfer untuk menambahkan data tambahan ke pekerjaan penyetelan induk. Saat Anda memilih opsi ini, Anda memilih satu pekerjaan penyetelan sebelumnya sebagai induknya.

catatan

Warm start hanya kompatibel dengan pekerjaan penyetelan yang dibuat setelah 1 Oktober 2018. Untuk informasi selengkapnya, lihat Menjalankan pekerjaan awal yang hangat.

Berhenti lebih awal

Untuk mengurangi waktu komputasi dan menghindari overfitting model Anda, Anda dapat menghentikan pekerjaan pelatihan lebih awal. Berhenti lebih awal sangat membantu ketika pekerjaan pelatihan tidak mungkin meningkatkan metrik objektif terbaik saat ini dari pekerjaan penyetelan hiperparameter. Seperti warm start, fitur ini hanya tersedia saat menyetel satu algoritma. Ini adalah fitur otomatis tanpa opsi konfigurasi, dan dinonaktifkan secara default. Untuk informasi selengkapnya tentang cara kerja penghentian dini, algoritme yang mendukungnya, dan cara menggunakannya dengan algoritme Anda sendiri, lihat Hentikan Pekerjaan Pelatihan Lebih Dini.

Strategi penyetelan

Strategi penyetelan dapat berupa acak, Bayesian, atau. Hyperband Pilihan ini menentukan bagaimana algoritma penyetelan otomatis mencari rentang hyperparameter tertentu yang dipilih pada langkah selanjutnya. Pencarian acak memilih kombinasi nilai acak dari rentang yang ditentukan dan dapat dijalankan secara berurutan atau paralel. Optimasi Bayesian memilih nilai berdasarkan apa yang mungkin mendapatkan hasil terbaik sesuai dengan sejarah yang diketahui dari pilihan sebelumnya. Hyperbandmenggunakan strategi multi-fidelity yang secara dinamis mengalokasikan sumber daya untuk pekerjaan yang dimanfaatkan dengan baik dan secara otomatis menghentikan mereka yang berkinerja buruk. Konfigurasi baru yang dimulai setelah menghentikan konfigurasi lain dipilih secara acak.

Hyperbandhanya dapat digunakan dengan algoritma iteratif, atau algoritma yang menjalankan langkah-langkah dalam iterasi, seperti XGBoostatau Random Cut Forest. Hyperbandtidak dapat digunakan dengan algoritme non-iteratif, seperti pohon keputusan atau Tetangga K-terdekat. Untuk informasi selengkapnya tentang strategi penelusuran, lihat Cara Kerja Penyetelan Hyperparameter.

catatan

Hyperbandmenggunakan mekanisme internal canggih untuk menerapkan penghentian dini. Oleh karena itu, saat Anda menggunakan fitur penghentian awal Hyperband internal, parameter TrainingJobEarlyStoppingType di HyperParameterTuningJobConfig API harus disetel keOFF.

Tanda

Untuk membantu mengelola pekerjaan penyetelan, Anda dapat memasukkan tag sebagai pasangan nilai kunci untuk menetapkan metadata ke pekerjaan penyetelan. Nilai dalam pasangan kunci-nilai tidak diperlukan. Anda dapat menggunakan kunci tanpa nilai. Untuk melihat kunci yang terkait dengan pekerjaan, pilih tab Tag pada halaman detail untuk menyetel pekerjaan. Untuk informasi selengkapnya tentang penggunaan tag untuk menyetel pekerjaan, lihatKelola Pekerjaan Tuning dan Pelatihan Hyperparameter.

Untuk membuat definisi pekerjaan pelatihan, Anda harus mengonfigurasi algoritme dan parameter, menentukan input dan output data, dan mengonfigurasi sumber daya. Berikan setidaknya satu TrainingJobDefinitionuntuk setiap pekerjaan penyetelan HPO. Setiap definisi pelatihan menentukan konfigurasi untuk suatu algoritma.

Untuk membuat beberapa definisi untuk pekerjaan pelatihan Anda, Anda dapat mengkloning definisi pekerjaan. Mengkloning pekerjaan dapat menghemat waktu karena menyalin semua pengaturan pekerjaan, termasuk saluran data dan lokasi penyimpanan Amazon S3 untuk artefak keluaran. Anda dapat mengedit pekerjaan kloning untuk mengubah apa yang Anda butuhkan untuk kasus penggunaan Anda.

Konfigurasikan algoritma dan parameter

Daftar berikut menjelaskan apa yang Anda butuhkan untuk mengonfigurasi kumpulan nilai hyperparameter untuk setiap pekerjaan pelatihan.

  • Nama untuk pekerjaan tuning Anda

  • Izin untuk mengakses layanan

  • Parameter untuk opsi algoritma apa pun

  • Metrik objektif

  • Kisaran nilai hyperparameter, bila diperlukan

Nama

Berikan nama unik untuk definisi pelatihan.

Izin

Amazon SageMaker memerlukan izin untuk memanggil layanan lain atas nama Anda. Pilih peran AWS Identity and Access Management (IAM), atau biarkan AWS membuat peran dengan kebijakan AmazonSageMakerFullAccess IAM terlampir.

Pengaturan keamanan opsional

Pengaturan isolasi jaringan mencegah kontainer melakukan panggilan jaringan keluar. Ini diperlukan untuk penawaran pembelajaran AWS Marketplace mesin.

Anda juga dapat memilih untuk menggunakan virtual private cloud (VPC).

catatan

Enkripsi antar kontainer hanya tersedia saat Anda membuat definisi pekerjaan dari API.

Opsi algoritma

Anda dapat memilih algoritma bawaan, algoritme Anda sendiri, wadah Anda sendiri dengan algoritme, atau Anda dapat berlangganan algoritme dari AWS Marketplace.

  • Jika Anda memilih algoritme bawaan, ia memiliki informasi gambar Amazon Elastic Container Registry (Amazon ECR) yang sudah terisi sebelumnya.

  • Jika Anda memilih wadah Anda sendiri, Anda harus menentukan informasi gambar (Amazon ECR). Anda dapat memilih mode input untuk algoritma sebagai file atau pipa.

  • Jika Anda berencana untuk memasok data menggunakan file CSV dari Amazon S3, Anda harus memilih file tersebut.

Metrik

Saat Anda memilih algoritme bawaan, metrik disediakan untuk Anda. Jika Anda memilih algoritma Anda sendiri, Anda harus menentukan metrik Anda. Anda dapat menentukan hingga 20 metrik untuk dipantau oleh pekerjaan penyetelan Anda. Anda harus memilih satu metrik sebagai metrik objektif. Untuk informasi selengkapnya tentang cara menentukan metrik untuk pekerjaan penyetelan, lihatTentukan metrik.

Metrik obyektif

Untuk menemukan pekerjaan pelatihan terbaik, tetapkan metrik objektif dan apakah akan memaksimalkan atau meminimalkannya. Setelah pekerjaan pelatihan selesai, Anda dapat melihat halaman detail pekerjaan penyetelan. Halaman detail memberikan ringkasan pekerjaan pelatihan terbaik yang ditemukan menggunakan metrik objektif ini.

Konfigurasi hyperparameter

Saat Anda memilih algoritma bawaan, nilai default untuk hyperparameternya ditetapkan untuk Anda, menggunakan rentang yang dioptimalkan untuk algoritme yang sedang disetel. Anda dapat mengubah nilai-nilai ini sesuai keinginan Anda. Misalnya, alih-alih rentang, Anda dapat menetapkan nilai tetap untuk hyperparameter dengan menyetel tipe parameter ke statis. Setiap algoritma memiliki parameter wajib dan opsional yang berbeda. Untuk informasi selengkapnya, lihat Praktik Terbaik untuk Penyetelan Hyperparameter dan Menentukan Rentang Hyperparameter.

Tentukan input dan output data

Setiap definisi pekerjaan pelatihan untuk pekerjaan penyetelan harus mengonfigurasi saluran untuk input data, lokasi keluaran data, dan secara opsional, lokasi penyimpanan pos pemeriksaan apa pun untuk setiap pekerjaan pelatihan.

Konfigurasi data masukan

Data input ditentukan oleh saluran. Setiap saluran lokasi sumbernya sendiri (Amazon S3 atau Amazon Elastic File System), opsi kompresi, dan format. Anda dapat menentukan hingga 20 saluran sumber input. Jika algoritme yang Anda pilih mendukung beberapa saluran input, Anda juga dapat menentukannya. Misalnya, saat Anda menggunakan buku catatan prediksi XGBoost churn, Anda dapat menambahkan dua saluran: kereta api dan validasi.

Konfigurasi pos pemeriksaan

Pos pemeriksaan dibuat secara berkala selama pelatihan. Agar pos pemeriksaan disimpan, Anda harus memilih lokasi Amazon S3. Pos pemeriksaan digunakan dalam pelaporan metrik, dan juga digunakan untuk melanjutkan pekerjaan pelatihan spot yang dikelola. Untuk informasi selengkapnya, lihat Gunakan pos pemeriksaan di Amazon SageMaker.

Konfigurasi data keluaran

Tentukan lokasi Amazon S3 untuk artefak pekerjaan pelatihan yang akan disimpan. Anda memiliki opsi untuk menambahkan enkripsi ke output menggunakan kunci AWS Key Management Service (AWS KMS).

Konfigurasikan sumber daya pekerjaan pelatihan

Setiap definisi pekerjaan pelatihan untuk pekerjaan penyetelan harus mengonfigurasi sumber daya yang akan diterapkan, termasuk jenis dan jumlah instans, pelatihan tempat terkelola, dan kondisi penghentian.

Konfigurasi sumber daya

Setiap definisi pelatihan dapat memiliki konfigurasi sumber daya yang berbeda. Anda memilih jenis instance dan jumlah node.

Pelatihan spot terkelola

Anda dapat menghemat biaya komputer untuk pekerjaan jika Anda memiliki fleksibilitas dalam waktu mulai dan akhir dengan memungkinkan SageMaker untuk menggunakan kapasitas cadangan untuk menjalankan pekerjaan. Untuk informasi selengkapnya, lihat Gunakan Pelatihan Spot Terkelola di Amazon SageMaker.

Kondisi berhenti

Kondisi berhenti menentukan durasi maksimum yang diizinkan untuk setiap pekerjaan pelatihan.

Menambahkan atau mengkloning pekerjaan pelatihan

Setelah Anda membuat definisi pekerjaan pelatihan untuk pekerjaan tuning, Anda akan kembali ke panel Training Job Definition (s). Panel ini adalah tempat Anda dapat membuat definisi pekerjaan pelatihan tambahan untuk melatih algoritme tambahan. Anda dapat memilih definisi Tambahkan pekerjaan pelatihan dan mengerjakan langkah-langkah untuk menentukan pekerjaan pelatihan lagi.

Atau, untuk mereplikasi definisi pekerjaan pelatihan yang ada dan mengeditnya untuk algoritma baru, pilih Clone dari menu Action. Opsi klon dapat menghemat waktu karena menyalin semua pengaturan pekerjaan, termasuk saluran data dan lokasi penyimpanan Amazon S3. Untuk informasi lebih lanjut tentang kloning, lihatKelola Pekerjaan Tuning dan Pelatihan Hyperparameter.

Batasan sumber daya

Anda dapat menentukan jumlah maksimum pekerjaan pelatihan bersamaan yang dapat dijalankan oleh pekerjaan penyetelan hiperparameter secara bersamaan (paling banyak 10). Anda juga dapat menentukan jumlah maksimum pekerjaan pelatihan yang dapat dijalankan oleh pekerjaan tuning hyperparameter (paling banyak 500). Jumlah pekerjaan paralel tidak boleh melebihi jumlah node yang Anda minta di semua definisi pelatihan Anda. Jumlah total pekerjaan tidak dapat melebihi jumlah pekerjaan yang diharapkan dijalankan oleh definisi Anda.

Tinjau pengaturan pekerjaan, definisi pekerjaan pelatihan, dan batas sumber daya. Kemudian pilih Create hyperparameter tuning job.

Contoh pekerjaan penyetelan HPO

Untuk menjalankan pekerjaan pelatihan optimasi hyperparameter (HPO), pertama-tama buat definisi pekerjaan pelatihan untuk setiap algoritme yang sedang disetel. Selanjutnya, tentukan pengaturan pekerjaan penyetelan dan konfigurasikan sumber daya untuk pekerjaan penyetelan. Akhirnya, jalankan pekerjaan tuning.

Jika pekerjaan penyetelan HPO Anda berisi algoritme pelatihan tunggal, fungsi SageMaker penyetelan akan memanggil HyperparameterTuner API secara langsung dan meneruskan parameter Anda. Jika pekerjaan penyetelan HPO Anda berisi beberapa algoritma pelatihan, fungsi penyetelan Anda akan memanggil create fungsi API. HyperparameterTuner createFungsi ini memberi tahu API untuk mengharapkan kamus yang berisi satu atau lebih estimator.

Pada bagian berikut, contoh kode menunjukkan cara menyetel pekerjaan yang berisi algoritme pelatihan tunggal atau beberapa algoritme menggunakan. SageMaker Python SDK

Buat definisi pekerjaan pelatihan

Saat Anda membuat pekerjaan penyetelan yang mencakup beberapa algoritme pelatihan, konfigurasi pekerjaan penyetelan Anda akan mencakup estimator dan metrik serta parameter lain untuk pekerjaan pelatihan Anda. Oleh karena itu, Anda perlu membuat definisi pekerjaan pelatihan terlebih dahulu, dan kemudian mengonfigurasi pekerjaan penyetelan Anda.

Contoh kode berikut menunjukkan bagaimana untuk mengambil dua SageMaker kontainer yang berisi built-in algoritma XGBoostdan. Linear Learner Jika pekerjaan penyetelan Anda hanya berisi satu algoritme pelatihan, hilangkan salah satu wadah dan salah satu penaksir.

import sagemaker from sagemaker import image_uris from sagemaker.estimator import Estimator sess = sagemaker.Session() region = sess.boto_region_name role = sagemaker.get_execution_role() bucket = sess.default_bucket() prefix = "sagemaker/multi-algo-hpo" # Define the training containers and intialize the estimators xgb_container = image_uris.retrieve("xgboost", region, "latest") ll_container = image_uris.retrieve("linear-learner", region, "latest") xgb_estimator = Estimator( xgb_container, role=role, instance_count=1, instance_type="ml.m4.xlarge", output_path='s3://{}/{}/xgb_output".format(bucket, prefix)', sagemaker_session=sess, ) ll_estimator = Estimator( ll_container, role, instance_count=1, instance_type="ml.c4.xlarge", output_path="s3://{}/{}/ll_output".format(bucket, prefix), sagemaker_session=sess, ) # Set static hyperparameters ll_estimator.set_hyperparameters(predictor_type="binary_classifier") xgb_estimator.set_hyperparameters( eval_metric="auc", objective="binary:logistic", num_round=100, rate_drop=0.3, tweedie_variance_power=1.4, )

Selanjutnya, tentukan data masukan Anda dengan menentukan kumpulan data pelatihan, validasi, dan pengujian, seperti yang ditunjukkan pada contoh kode berikut. Contoh ini menunjukkan cara menyetel beberapa algoritma pelatihan.

training_data = sagemaker.inputs.TrainingInput( s3_data="s3://{}/{}/train".format(bucket, prefix), content_type="csv" ) validation_data = sagemaker.inputs.TrainingInput( s3_data="s3://{}/{}/validate".format(bucket, prefix), content_type="csv" ) test_data = sagemaker.inputs.TrainingInput( s3_data="s3://{}/{}/test".format(bucket, prefix), content_type="csv" ) train_inputs = { "estimator-1": { "train": training_data, "validation": validation_data, "test": test_data, }, "estimator-2": { "train": training_data, "validation": validation_data, "test": test_data, }, }

Jika algoritma tuning Anda hanya berisi satu algoritma pelatihan, Anda train_inputs harus berisi hanya satu estimator.

Anda harus mengunggah input untuk kumpulan data pelatihan, validasi, dan pelatihan ke bucket Amazon S3 sebelum menggunakannya dalam pekerjaan penyetelan HPO.

Tentukan sumber daya dan pengaturan untuk pekerjaan penyetelan Anda

Bagian ini menunjukkan cara menginisialisasi tuner, menentukan sumber daya, dan menentukan pengaturan pekerjaan untuk pekerjaan penyetelan Anda. Jika pekerjaan penyetelan Anda berisi beberapa algoritme pelatihan, pengaturan ini diterapkan ke semua algoritme yang terdapat di dalam pekerjaan penyetelan Anda. Bagian ini memberikan dua contoh kode untuk mendefinisikan tuner. Contoh kode menunjukkan cara mengoptimalkan algoritme pelatihan tunggal diikuti dengan contoh cara menyetel beberapa algoritme pelatihan.

Tune algoritma pelatihan tunggal

Contoh kode berikut menunjukkan cara menginisialisasi tuner dan mengatur rentang hyperparameter untuk satu algoritma SageMaker bawaan,. XGBoost

from sagemaker.tuner import HyperparameterTuner from sagemaker.parameter import ContinuousParameter, IntegerParameter hyperparameter_ranges = { "max_depth": IntegerParameter(1, 10), "eta": ContinuousParameter(0.1, 0.3), } objective_metric_name = "validation:accuracy" tuner = HyperparameterTuner( xgb_estimator, objective_metric_name, hyperparameter_ranges, objective_type="Maximize", max_jobs=5, max_parallel_jobs=2, )

Tune beberapa algoritma pelatihan

Setiap pekerjaan pelatihan memerlukan konfigurasi yang berbeda, dan ini ditentukan menggunakan kamus. Contoh kode berikut menunjukkan cara menginisialisasi tuner dengan konfigurasi untuk dua algoritma SageMaker bawaan, dan. XGBoost Linear Learner Contoh kode juga menunjukkan cara mengatur strategi penyetelan dan pengaturan pekerjaan lainnya, seperti sumber daya komputasi untuk pekerjaan penyetelan. Contoh kode berikut menggunakanmetric_definitions_dict, yang opsional.

from sagemaker.tuner import HyperparameterTuner from sagemaker.parameter import ContinuousParameter, IntegerParameter # Initialize your tuner tuner = HyperparameterTuner.create( estimator_dict={ "estimator-1": xgb_estimator, "estimator-2": ll_estimator, }, objective_metric_name_dict={ "estimator-1": "validation:auc", "estimator-2": "test:binary_classification_accuracy", }, hyperparameter_ranges_dict={ "estimator-1": {"eta": ContinuousParameter(0.1, 0.3)}, "estimator-2": {"learning_rate": ContinuousParameter(0.1, 0.3)}, }, metric_definitions_dict={ "estimator-1": [ {"Name": "validation:auc", "Regex": "Overall test accuracy: (.*?);"} ], "estimator-2": [ { "Name": "test:binary_classification_accuracy", "Regex": "Overall test accuracy: (.*?);", } ], }, strategy="Bayesian", max_jobs=10, max_parallel_jobs=3, )

Jalankan pekerjaan penyetelan HPO Anda

Sekarang Anda dapat menjalankan pekerjaan tuning Anda dengan meneruskan input pelatihan Anda ke fit fungsi kelas. HyperparameterTuner Contoh kode berikut menunjukkan cara meneruskan train_inputs parameter, yang didefinisikan dalam contoh kode sebelumnya, ke tuner Anda.

tuner.fit(inputs=train_inputs, include_cls_metadata ={}, estimator_kwargs ={})