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 cara membuat pekerjaan penyetelan hyperparameter optimization (HPO) baru untuk satu atau beberapa algoritme. Untuk membuat HPO pekerjaan, 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 untuk Python klien di akhir panduan ini.
Komponen pekerjaan penyetelan
Pekerjaan HPO penyetelan berisi tiga komponen berikut:
-
Menyetel pengaturan pekerjaan
-
Definisi pekerjaan pelatihan
-
Konfigurasi pekerjaan penyetelan
Cara komponen-komponen ini disertakan dalam pekerjaan HPO penyetelan 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 HPO penyetelan. 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. Hyperband menggunakan 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.
Hyperband hanya dapat digunakan dengan algoritme berulang, atau algoritme yang menjalankan langkah-langkah dalam iterasi, seperti XGBoostatau Random Cut Forest. Hyperband tidak 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
Hyperband menggunakan mekanisme internal canggih untuk menerapkan penghentian dini. Oleh karena itu, ketika Anda menggunakan Hyperband fitur penghentian awal internal, parameter TrainingJobEarlyStoppingType
di HyperParameterTuningJobConfig
API harus diatur 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 TrainingJobDefinition
untuk setiap pekerjaan HPO penyetelan. Setiap definisi pelatihan menentukan konfigurasi untuk 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.
Topik
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 AmazonSageMakerFullAccess
IAM kebijakan 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 file. 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 algoritma bawaan, ia memiliki informasi gambar Amazon Elastic Container Registry (AmazonECR) yang telah diisi sebelumnya.
-
Jika Anda memilih wadah Anda sendiri, Anda harus menentukan informasi gambar (AmazonECR). Anda dapat memilih mode input untuk algoritma sebagai file atau pipa.
-
Jika Anda berencana untuk memasok data Anda menggunakan CSV file 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, ketika Anda menggunakan XGBoost churn buku catatan prediksi
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 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 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.
HPOcontoh pekerjaan tuning
Untuk menjalankan pekerjaan pelatihan hyperparameter optimization (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 HPO penyetelan Anda berisi algoritme pelatihan tunggal, fungsi SageMaker penyetelan akan memanggil secara HyperparameterTuner
API langsung dan meneruskan parameter Anda. Jika pekerjaan HPO penyetelan Anda berisi beberapa algoritma pelatihan, fungsi penyetelan Anda akan memanggil create
fungsi. HyperparameterTuner
API create
Fungsi memberitahu 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 XGBoost dan 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 algoritme penyetelan Anda hanya berisi satu algoritma pelatihan, algoritme Anda train_inputs
harus berisi hanya satu penaksir.
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 kepada Anda 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 SageMaker algoritma 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 SageMaker algoritma bawaan, XGBoost and 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 HPO tuning 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 ={})