Merampingkan alur kerja pembelajaran mesin dari pengembangan lokal hingga eksperimen yang dapat diskalakan dengan menggunakan SageMaker AI dan Hydra - AWS Prescriptive Guidance

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

Merampingkan alur kerja pembelajaran mesin dari pengembangan lokal hingga eksperimen yang dapat diskalakan dengan menggunakan SageMaker AI dan Hydra

David Sauerwein, Marco Geiger, dan Julian Ferdinand Grueber, Amazon Web Services

Ringkasan

Pola ini memberikan pendekatan terpadu untuk mengonfigurasi dan menjalankan algoritma pembelajaran mesin (ML) dari pengujian lokal hingga produksi di Amazon AI. SageMaker Algoritma ML adalah fokus dari pola ini, tetapi pendekatannya meluas ke fitur rekayasa, inferensi, dan seluruh jaringan pipa ML. Pola ini menunjukkan transisi dari pengembangan skrip lokal ke pekerjaan pelatihan SageMaker AI melalui kasus penggunaan sampel.

Alur kerja MS yang khas adalah mengembangkan dan menguji solusi pada mesin lokal, menjalankan eksperimen skala besar (misalnya, dengan parameter berbeda) di cloud, dan menerapkan solusi yang disetujui di cloud. Kemudian, solusi yang diterapkan harus dipantau dan dipelihara. Tanpa pendekatan terpadu untuk alur kerja ini, pengembang sering perlu memfaktorkan ulang kode mereka di setiap tahap. Jika solusinya bergantung pada sejumlah besar parameter yang mungkin berubah pada setiap tahap alur kerja ini, akan menjadi semakin sulit untuk tetap terorganisir dan konsisten.

Pola ini mengatasi tantangan ini. Pertama, ini menghilangkan kebutuhan akan refactoring kode antar lingkungan dengan menyediakan alur kerja terpadu yang tetap konsisten baik berjalan di mesin lokal, dalam wadah, atau pada AI. SageMaker Kedua, menyederhanakan manajemen parameter melalui sistem konfigurasi Hydra, di mana parameter didefinisikan dalam file konfigurasi terpisah yang dapat dengan mudah dimodifikasi dan digabungkan, dengan logging otomatis dari setiap konfigurasi run. Untuk detail selengkapnya tentang cara pola ini mengatasi tantangan ini, lihat Informasi tambahan.

Prasyarat dan batasan

Prasyarat

Batasan

  • Kode saat ini hanya menargetkan pekerjaan pelatihan SageMaker AI. Memperluasnya ke pekerjaan pemrosesan dan seluruh saluran SageMaker AI sangatlah mudah.

  • Untuk pengaturan SageMaker AI yang sepenuhnya diproduksi, detail tambahan harus ada. Contohnya bisa berupa kustom AWS Key Management Service (AWS KMS) kunci untuk komputasi dan penyimpanan, atau konfigurasi jaringan. Anda juga dapat mengonfigurasi opsi tambahan ini dengan menggunakan Hydra di subfolder khusus folder. config

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Arsitektur

Diagram berikut menggambarkan arsitektur solusi.

Alur kerja untuk membuat dan menjalankan pelatihan SageMaker AI atau pekerjaan HPO.

Diagram menunjukkan alur kerja berikut:

  1. Ilmuwan data dapat mengulangi algoritma dalam skala kecil di lingkungan lokal, menyesuaikan parameter, dan menguji skrip pelatihan dengan cepat tanpa perlu Docker atau SageMaker AI. (Untuk detail selengkapnya, lihat tugas “Jalankan secara lokal untuk pengujian cepat” di Epik.)

  2. Setelah puas dengan algoritme, ilmuwan data membangun dan mendorong image Docker ke repositori Amazon Elastic Container Registry (Amazon ECR) bernama. hydra-sm-artifact (Untuk detail selengkapnya, lihat “Jalankan alur kerja di SageMaker AI” di Epik.)

  3. Ilmuwan data memulai pekerjaan pelatihan SageMaker AI atau pekerjaan optimasi hyperparameter (HPO) dengan menggunakan skrip Python. Untuk pekerjaan pelatihan reguler, konfigurasi yang disesuaikan ditulis ke bucket Amazon Simple Storage Service (Amazon S3) bernama. hydra-sample-config Untuk pekerjaan HPO, set konfigurasi default yang terletak di config folder diterapkan.

  4. Pekerjaan pelatihan SageMaker AI menarik image Docker, membaca data input dari bucket Amazon S3, dan mengambil konfigurasi dari hydra-sample-data bucket Amazon S3 atau menggunakan konfigurasi defaulthydra-sample-config. Setelah pelatihan, pekerjaan menyimpan data output ke bucket Amazon S3. hydra-sample-data

Otomatisasi dan skala

Alat

Layanan AWS

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS

  • AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda. Untuk pola ini, AWS CLI berguna untuk konfigurasi sumber daya awal dan pengujian.

  • Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.

  • Amazon SageMaker AI adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membangun dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi. SageMaker Pelatihan AI adalah layanan ML yang dikelola sepenuhnya dalam SageMaker AI yang memungkinkan pelatihan model ML dalam skala besar. Alat ini dapat menangani tuntutan komputasi model pelatihan secara efisien, memanfaatkan skalabilitas bawaan dan integrasi dengan yang lain. Layanan AWS SageMaker Pelatihan AI juga mendukung algoritme dan wadah khusus, membuatnya fleksibel untuk berbagai alur kerja ML.

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Alat lainnya

  • Docker adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah. Ini digunakan dalam pola ini untuk memastikan lingkungan yang konsisten di berbagai tahap, mulai dari pengembangan hingga penerapan, dan untuk mengemas dependensi dan kode dengan andal. Kontainerisasi Docker memungkinkan penskalaan dan kontrol versi yang mudah di seluruh alur kerja.

  • Hydra adalah alat manajemen konfigurasi yang memberikan fleksibilitas untuk menangani beberapa konfigurasi dan manajemen sumber daya dinamis. Ini berperan penting dalam mengelola konfigurasi lingkungan, memungkinkan penyebaran yang mulus di berbagai lingkungan. Untuk detail selengkapnya tentang Hydra, lihat Informasi tambahan.

  • Python adalah bahasa pemrograman komputer tujuan umum. Python digunakan untuk menulis kode ML dan alur kerja penerapan.

  • Puisi adalah alat untuk manajemen ketergantungan dan pengemasan dengan Python.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub configuring-sagemaker-training-jobs-with-hydra.

Praktik terbaik

  • Pilih peran IAM untuk menerapkan dan memulai pekerjaan pelatihan SageMaker AI yang mengikuti prinsip hak istimewa paling sedikit dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.

  • Gunakan kredensi sementara untuk mengakses peran IAM di terminal.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat dan aktifkan lingkungan virtual.

Untuk membuat dan mengaktifkan lingkungan virtual, jalankan perintah berikut di root repositori:

poetry install poetry shell
AWS Umum

Menyebarkan infrastruktur.

Untuk menyebarkan infrastruktur menggunakan CloudFormation, jalankan perintah berikut:

aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup --capabilities CAPABILITY_NAMED_IAM
AWS Umum, DevOps insinyur

Unduh data sampel.

Untuk men-download data input dari openmlke mesin lokal Anda, jalankan perintah berikut:

python scripts/download_data.py
AWS Umum

Jalankan secara lokal untuk pengujian cepat.

Untuk menjalankan kode pelatihan secara lokal untuk pengujian, jalankan perintah berikut:

python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data

Log dari semua eksekusi disimpan oleh waktu eksekusi dalam folder bernamaoutputs. Untuk informasi lebih lanjut, lihat bagian “Output” di GitHub repositori.

Anda juga dapat melakukan beberapa pelatihan secara paralel, dengan parameter yang berbeda, dengan menggunakan --multirun fungsionalitas. Untuk detail selengkapnya, lihat dokumentasi Hydra.

Ilmuwan data
TugasDeskripsiKeterampilan yang dibutuhkan

Mengatur variabel lingkungan.

Untuk menjalankan pekerjaan Anda di SageMaker AI, atur variabel lingkungan berikut, berikan Akun AWS ID Anda Wilayah AWS dan Anda:

export ECR_REPO_NAME=hydra-sm-artifact export image_tag=latest export AWS_REGION="<your_aws_region>" # for instance, us-east-1 export ACCOUNT_ID="<your_account_id>" export BUCKET_NAME_DATA=hydra-sample-data-$ACCOUNT_ID export BUCKET_NAME_CONFIG=hydra-sample-config-$ACCOUNT_ID export AWS_DEFAULT_REGION=$AWS_REGION export ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/hydra-sample-sagemaker export INPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/input/ export OUTPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/output/
AWS Umum

Buat dan dorong gambar Docker.

Untuk membuat image Docker dan mendorongnya ke repositori Amazon ECR, jalankan perintah berikut:

chmod +x scripts/create_and_push_image.sh scripts/create_and_push_image.sh $ECR_REPO_NAME $image_tag $AWS_REGION $ACCOUNT_ID

Tugas ini mengasumsikan bahwa Anda memiliki kredensi yang valid di lingkungan Anda. Gambar Docker didorong ke repositori Amazon ECR yang ditentukan dalam variabel lingkungan di tugas sebelumnya dan digunakan untuk mengaktifkan wadah SageMaker AI tempat pekerjaan pelatihan akan berjalan.

Insinyur ML, AWS Umum

Salin data input ke Amazon S3.

Pekerjaan pelatihan SageMaker AI perlu mengambil data input. Untuk menyalin data input ke bucket Amazon S3 untuk data, jalankan perintah berikut:

aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv"
Insinyur data, AWS Umum

Kirim pekerjaan pelatihan SageMaker AI.

Untuk menyederhanakan eksekusi skrip Anda, tentukan parameter konfigurasi default dalam file. default.yaml Selain memastikan konsistensi di seluruh proses, pendekatan ini juga menawarkan fleksibilitas untuk dengan mudah mengganti pengaturan default sesuai kebutuhan. Lihat contoh berikut ini:

python scripts/start_sagemaker_training_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH
AWS Umum, insinyur ML, Ilmuwan data

Jalankan tuning hyperparameter SageMaker AI.

Menjalankan tuning hyperparameter SageMaker AI mirip dengan mengirimkan pekerjaan pelatihan AII. SageMaker Namun, skrip eksekusi berbeda dalam beberapa hal penting seperti yang Anda lihat di file start_sagemaker_hpo_job.py. Hyperparameter yang akan disetel harus melewati muatan boto3, bukan saluran ke pekerjaan pelatihan.

Untuk memulai pekerjaan optimasi hyperparameter (HPO), jalankan perintah berikut:

python scripts/start_sagemaker_hpo_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH
Ilmuwan data

Pemecahan Masalah

IsuSolusi

Token kadaluwarsa

Ekspor AWS kredensi baru.

Kurangnya izin IAM

Pastikan Anda mengekspor kredensional peran IAM yang memiliki semua izin IAM yang diperlukan untuk menerapkan CloudFormation template dan untuk memulai pekerjaan pelatihan AI. SageMaker

Sumber daya terkait

Informasi tambahan

Pola ini membahas tantangan berikut:

Konsistensi dari pengembangan lokal hingga penerapan skala besar — Dengan pola ini, pengembang dapat menggunakan alur kerja yang sama, terlepas dari apakah mereka menggunakan skrip Python lokal, menjalankan kontainer Docker lokal, melakukan eksperimen besar pada AI, atau menerapkan dalam produksi pada SageMaker AI. SageMaker Konsistensi ini penting karena alasan berikut:

  • Iterasi lebih cepat — Ini memungkinkan eksperimen lokal yang cepat tanpa perlu penyesuaian besar saat meningkatkan skala.

  • Tidak ada refactoring - Transisi ke eksperimen yang lebih besar pada SageMaker AI mulus, tidak memerlukan perombakan pengaturan yang ada.

  • Peningkatan berkelanjutan - Mengembangkan fitur baru dan terus meningkatkan algoritme sangatlah mudah karena kodenya tetap sama di seluruh lingkungan.

Manajemen konfigurasi — Pola ini menggunakan Hydra, alat manajemen konfigurasi, untuk memberikan manfaat berikut:

  • Parameter didefinisikan dalam file konfigurasi, terpisah dari kode.

  • Set parameter yang berbeda dapat ditukar atau digabungkan dengan mudah.

  • Pelacakan eksperimen disederhanakan karena setiap konfigurasi run dicatat secara otomatis.

  • Eksperimen cloud dapat menggunakan struktur konfigurasi yang sama dengan proses lokal, memastikan konsistensi.

Dengan Hydra, Anda dapat mengelola konfigurasi secara efektif, mengaktifkan fitur-fitur berikut:

  • Membagi konfigurasi - Pecahkan konfigurasi proyek Anda menjadi potongan-potongan yang lebih kecil dan dapat dikelola yang dapat dimodifikasi secara independen. Pendekatan ini membuatnya lebih mudah untuk menangani proyek yang kompleks.

  • Sesuaikan default dengan mudah — Ubah konfigurasi dasar Anda dengan cepat, sehingga lebih mudah untuk menguji ide-ide baru.

  • Sejajarkan input CLI dan file konfigurasi - Gabungkan input baris perintah dengan file konfigurasi Anda dengan lancar. Pendekatan ini mengurangi kekacauan dan kebingungan, membuat proyek Anda lebih mudah dikelola dari waktu ke waktu.