Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat Pekerjaan Penyetelan Optimasi Hyperparameter untuk Satu atau Lebih Algoritma (Konsol)
Panduan ini menunjukkan cara membuat pekerjaan penyetelan optimasi hyperparameter (HPO) baru untuk satu atau lebih algoritma. Untuk membuat pekerjaan HPO, tentukan pengaturan untuk pekerjaan penyetelan, dan buat definisi pekerjaan pelatihan untuk setiap algoritma 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 algoritma menggunakan SageMaker AI SDK untuk Python klien di akhir panduan ini.
Komponen pekerjaan penyetelan
Pekerjaan penyetelan HPO berisi tiga komponen berikut:
-
Pengaturan pekerjaan penyetelan
-
Definisi pekerjaan pelatihan
-
Konfigurasi pekerjaan penyetelan
Cara komponen ini disertakan dalam pekerjaan penyetelan HPO Anda tergantung pada apakah pekerjaan penyetelan Anda berisi satu atau beberapa algoritma pelatihan. Panduan berikut menjelaskan masing-masing komponen dan memberikan contoh dari kedua jenis pekerjaan tuning.
Pengaturan pekerjaan penyetelan Anda diterapkan di semua algoritma dalam pekerjaan penyetelan HPO. Mulai hangat dan berhenti lebih awal hanya tersedia ketika Anda menyetel satu algoritma. Setelah menentukan setelan pekerjaan, Anda dapat membuat definisi pelatihan individual untuk setiap algoritma atau variasi yang ingin Anda setel.
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 start 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. Ketika Anda memilih opsi ini, Anda memilih satu pekerjaan penyetelan sebelumnya sebagai induk.
catatan
Warm start hanya kompatibel dengan pekerjaan tuning yang dibuat setelah 1 Oktober 2018. Untuk informasi selengkapnya, lihat Men jalankan pekerjaan awal hangat.
Berhenti lebih awal
Untuk mengurangi waktu komputasi dan menghindari model Anda yang terlalu pas, Anda dapat menghentikan pekerjaan pelatihan lebih awal. Penghentian lebih awal sangat membantu ketika pekerjaan pelatihan tidak mungkin meningkatkan metrik objektif terbaik saat ini dari pekerjaan penyetelan hyperparameter. Seperti start hangat, 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, algoritma yang mendukungnya, dan cara menggunakannya dengan algoritma Anda sendiri, lihat Mengh entikan Pekerjaan Pelatihan Lebih Awal.
Strategi penyetelan
Strategi penyetelan dapat berupa acak, Bayesian, atauHyperband. Pilihan ini menentukan bagaimana algoritma penyetelan otomatis mencari rentang hyperparameter tertentu yang dipilih pada langkah selanjutnya. Pencarian acak memilih kombinasi acak nilai dari rentang yang ditentukan dan dapat dijalankan secara berurutan atau paralel. Optimasi Bayesian memilih nilai berdasarkan apa yang mungkin mendapatkan hasil terbaik sesuai dengan riwayat pilihan sebelumnya yang diketahui. Hyperbandmenggunakan strategi multi-fidelitas yang secara dinamis mengalokasikan sumber daya ke pekerjaan yang dimanfaatkan dengan baik dan secara otomatis menghentikan pekerjaan 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 XGBoost atau Random Cut Forest. Hyperbandtidak dapat digunakan dengan algoritma non-iteratif, seperti pohon keputusan atau K-Nearest Neighbors. Untuk informasi selengkapnya tentang strategi pencarian, lihat Cara Kerja Hyperparameter Tuning.
catatan
Hyperbandmenggunakan mekanisme internal canggih untuk menerapkan penghentian dini. Oleh karena itu, ketika Anda menggunakan fitur penghentian awal Hyperband internal, parameter TrainingJobEarlyStoppingType di HyperParameterTuningJobConfig API harus disetel keOFF.
Tag
Untuk membantu mengelola pekerjaan penyetelan, Anda dapat memasukkan tag sebagai pasangan kunci-nilai untuk menetapkan metadata ke pekerjaan penyetelan. Nilai dalam pasangan kunci-nilai tidak diperlukan. Anda dapat menggunakan kunci tanpa nilai. Untuk melihat tombol yang terkait dengan pekerjaan, pilih tab Tag pada halaman detail untuk pekerjaan penyetelan. Untuk informasi selengkapnya tentang menggunakan tag untuk pekerjaan penyetelan, lihatKelola Pekerjaan Tuning dan Pelatihan Hyperparameter.
Untuk membuat definisi pekerjaan pelatihan, Anda harus mengonfigurasi algoritma dan parameter, menentukan input dan output data, dan mengonfigurasi sumber daya. Berikan setidaknya satu TrainingJobDefinition untuk setiap pekerjaan penyetelan HPO. 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 set nilai hyperparameter untuk setiap pekerjaan pelatihan.
-
Nama untuk pekerjaan penyetelan 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.
Perizinan
Amazon SageMaker AI 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 wadah melakukan panggilan jaringan keluar. Ini diperlukan untuk penawaran pembelajaran AWS Marketplace mesin.
Anda juga dapat memilih untuk menggunakan cloud pribadi virtual (VPC).
catatan
Inter-container enkripsi hanya tersedia saat Anda membuat definisi pekerjaan dari API.
Opsi algoritma
Anda dapat memilih algoritma bawaan, algoritma Anda sendiri, wadah Anda sendiri dengan algoritma, atau Anda dapat berlangganan algoritma dari AWS Marketplace.
-
Jika Anda memilih algoritma bawaan, algoritma tersebut memiliki informasi gambar Amazon Elastic Container Registry (Amazon ECR) yang telah diisi 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 menyediakan data menggunakan file CSV dari Amazon S3, Anda harus memilih file tersebut.
Metrik-metrik
Saat Anda memilih algoritma bawaan, metrik disediakan untuk Anda. Jika Anda memilih algoritma Anda sendiri, Anda harus menentukan metrik Anda. Anda dapat menentukan hingga 20 metrik untuk pekerjaan penyetelan yang akan dipantau. Anda harus memilih satu metrik sebagai metrik objektif. Untuk informasi selengkapnya tentang cara menentukan metrik untuk pekerjaan penyetelan, lihatTentukan metrik.
Metrik objektif
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 algoritma yang sedang disetel. Anda dapat mengubah nilai-nilai ini sesuai keinginan Anda. Misalnya, alih-alih rentang, Anda dapat mengatur nilai tetap untuk hyperparameter dengan mengatur jenis parameter ke statis. Setiap algoritma memiliki parameter wajib dan opsional yang berbeda. Untuk informasi selengkapnya, lihat Prakti k Terbaik untuk Penyetelan Hyperparameter dan Men definisikan 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), kompresi, dan opsi format. Anda dapat menentukan hingga 20 saluran sumber input. Jika algoritma yang Anda pilih mendukung beberapa saluran input, Anda juga dapat menentukannya. Misalnya, saat Anda menggunakan buku catatan prediksi XGBoost churn
Konfigurasi pos pemeriksaan
Pos pemeriksaan dihasilkan 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 terkelola. Untuk informasi selengkapnya, lihat Pos pemeriksaan di Amazon AI 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 digunakan, termasuk jenis dan jumlah instans, pelatihan spot 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 mengi SageMaker zinkan AI menggunakan kapasitas cadangan untuk menjalankan pekerjaan. Untuk informasi selengkapnya, lihat Pelatihan Spot Terkelola di Amazon SageMaker AI.
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 penyetelan, Anda akan kembali ke panel Definisi Pekerjaan Pelatihan. Panel ini adalah tempat Anda dapat membuat definisi pekerjaan pelatihan tambahan untuk melatih algoritma tambahan. Anda dapat memilih Tam bah definisi 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 Klon dari menu T indakan. Opsi kloning 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 hyperparameter secara bersamaan (paling banyak 10). Anda juga dapat menentukan jumlah maksimum pekerjaan pelatihan yang dapat dijalankan oleh pekerjaan penyetelan hyperparameter (paling banyak 500). Jumlah pekerjaan paralel tidak boleh melebihi jumlah node yang Anda minta di semua definisi pelatihan Anda. Jumlah total pekerjaan tidak boleh melebihi jumlah pekerjaan yang diharapkan dijalankan oleh definisi Anda.
Tinjau pengaturan pekerjaan, definisi pekerjaan pelatihan, dan batas sumber daya. Kemudian pilih Buat pekerjaan penyetelan hyperparameter.
Contoh pekerjaan penyetelan HPO
Untuk menjalankan tugas pelatihan optimasi hiperparameter (HPO), pertama-tama buat definisi pekerjaan pelatihan untuk setiap algoritma yang sedang disetel. Selanjutnya, tentukan pengaturan pekerjaan penyetelan dan konfigurasikan sumber daya untuk pekerjaan penyetelan. Terakhir, jalankan pekerjaan penyetelan.
Jika pekerjaan penyetelan HPO Anda berisi algoritma pelatihan tunggal, fungsi penyetelan SageMaker AI akan memanggil HyperparameterTuner API secara langsung dan meneruskan parameter Anda. Jika pekerjaan penyetelan HPO Anda berisi beberapa algoritma pelatihan, fungsi penyetelan Anda akan memang create gil fungsi HyperparameterTuner API. createFungsi memberitahu API untuk mengharapkan kamus yang berisi satu atau lebih ModelTrainers.
Pada bagian berikut, contoh kode menunjukkan cara menyetel pekerjaan yang berisi algoritma pelatihan tunggal atau beberapa algoritma menggunakan SageMaker AIPython SDK.
Buat definisi pekerjaan pelatihan
Saat Anda membuat pekerjaan penyetelan yang menyertakan beberapa algoritma pelatihan, konfigurasi pekerjaan penyetelan Anda akan ModelTrainers menyertakan metrik dan parameter lain untuk pekerjaan pelatihan Anda. Oleh karena itu, Anda perlu membuat definisi pekerjaan pelatihan terlebih dahulu, lalu mengonfigurasi pekerjaan penyetelan Anda.
Contoh kode berikut menunjukkan cara mengambil dua wadah SageMaker AI yang berisi algoritma bawaan XGBoost dan Linear Learner. Jika pekerjaan penyetelan Anda hanya berisi satu algoritma pelatihan, hilangkan salah satu wadah dan salah satunya. ModelTrainers
import sagemaker from sagemaker.core import image_uris from sagemaker.core.helper.session_helper import Session, get_execution_role from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute sess = Session() region = sess.boto_region_name role = get_execution_role() bucket = sess.default_bucket() prefix = "sagemaker/multi-algo-hpo" # Define the training containers and initialize the ModelTrainers xgb_container = image_uris.retrieve("xgboost", region, "latest") ll_container = image_uris.retrieve("linear-learner", region, "latest") xgb_model_trainer = ModelTrainer( xgb_container, role=role, compute=Compute( instance_count=1, instance_type="ml.m4.xlarge", ), output_path='s3://{}/{}/xgb_output'.format(bucket, prefix), hyperparameters={ "eval_metric": "auc", "objective": "binary:logistic", "num_round": "100", "rate_drop": "0.3", "tweedie_variance_power": "1.4", }, ) ll_model_trainer = ModelTrainer( ll_container, role=role, compute=Compute( instance_count=1, instance_type="ml.c4.xlarge", ), output_path="s3://{}/{}/ll_output".format(bucket, prefix), hyperparameters={ "predictor_type": "binary_classifier", }, )
Selanjutnya, tentukan data input Anda dengan menentukan kumpulan data pelatihan, validasi, dan pengujian, seperti yang ditunjukkan pada contoh kode berikut. Contoh ini menunjukkan cara menyetel beberapa algoritma pelatihan.
from sagemaker.train.configs import InputData training_data = InputData( channel_name="train", data_source="s3://{}/{}/train".format(bucket, prefix) ) validation_data = InputData( channel_name="validation", data_source="s3://{}/{}/validate".format(bucket, prefix) ) test_data = InputData( channel_name="test", data_source="s3://{}/{}/test".format(bucket, prefix) ) train_inputs = { "model-trainer-1": { "train": training_data, "validation": validation_data, "test": test_data, }, "model-trainer-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 entri.
Anda harus mengunggah input untuk kumpulan data pelatihan, validasi, dan pelatihan ke bucket Amazon S3 Anda 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 algoritma pelatihan, pengaturan ini diterapkan ke semua algoritma yang terdapat di dalam pekerjaan penyetelan Anda. Bagian ini menyediakan dua contoh kode untuk mendefinisikan tuner. Contoh kode menunjukkan kepada Anda cara mengoptimalkan algoritma pelatihan tunggal diikuti dengan contoh cara menyetel beberapa algoritma pelatihan.
Setel algoritma pelatihan tunggal
Contoh kode berikut menunjukkan cara menginisialisasi tuner dan mengatur rentang hyperparameter untuk satu algoritma bawaan SageMaker AI,. XGBoost
from sagemaker.train 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_model_trainer, objective_metric_name, hyperparameter_ranges, objective_type="Maximize", max_jobs=5, max_parallel_jobs=2, )
Setel 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 bawaan SageMaker AI, XGBoost danLinear 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.train import HyperparameterTuner from sagemaker.parameter import ContinuousParameter, IntegerParameter # Initialize your tuner tuner = HyperparameterTuner.create( model_trainer_dict={ "model-trainer-1": xgb_model_trainer, "model-trainer-2": ll_model_trainer, }, objective_metric_name_dict={ "model-trainer-1": "validation:auc", "model-trainer-2": "test:binary_classification_accuracy", }, hyperparameter_ranges_dict={ "model-trainer-1": {"eta": ContinuousParameter(0.1, 0.3)}, "model-trainer-2": {"learning_rate": ContinuousParameter(0.1, 0.3)}, }, metric_definitions_dict={ "model-trainer-1": [ {"Name": "validation:auc", "Regex": "Overall test accuracy: (.*?);"} ], "model-trainer-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 penyetelan Anda dengan meneruskan input pelatihan Anda ke tuner. Contoh kode berikut menunjukkan cara meneruskan train_inputs parameter, yang didefinisikan dalam contoh kode sebelumnya, ke tuner Anda.
tuner.tune(inputs=train_inputs, model_trainer_kwargs={})