

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
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker"></a>

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

## Ringkasan
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-summary"></a>

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-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](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).

## Prasyarat dan batasan
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ [Peran pengguna AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) (IAM) untuk menerapkan dan memulai pekerjaan pelatihan SageMaker AI
+ AWS Command Line Interface (AWS CLI) versi 2.0 atau yang lebih baru [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) dan [dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Puisi](https://python-poetry.org/) versi 1.8 atau lebih baru, tetapi lebih awal dari 2.0, diinstal
+ [Docker diinstal](https://www.docker.com/)
+ [Python versi 3.10.x](https://www.python.org/downloads/release/python-31011/)

**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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-architecture"></a>

Diagram berikut menggambarkan arsitektur solusi.

![Alur kerja untuk membuat dan menjalankan pelatihan SageMaker AI atau pekerjaan HPO.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/1db57484-f85c-49a6-b870-471dade02b26/images/d80e7474-a975-4d92-8f66-2d34e33053fd.png)


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](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. 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 pada SageMaker AI” di [Epics](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. 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.

1. 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 default`hydra-sample-config`. Setelah pelatihan, pekerjaan menyimpan data output ke bucket Amazon S3. `hydra-sample-data`

**Otomatisasi dan skala**
+ [Untuk pelatihan otomatis, pelatihan ulang, atau inferensi, Anda dapat mengintegrasikan AWS CLI kode dengan layanan seperti [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html), [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html), atau Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)
+ Penskalaan dapat dicapai dengan mengubah konfigurasi untuk ukuran instance atau dengan menambahkan konfigurasi untuk pelatihan terdistribusi.

## Alat
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-tools"></a>

**Layanan AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu 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)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 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](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Alat-alat lainnya**
+ [Docker](https://www.docker.com/) 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](https://hydra.cc/) 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](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum. Python digunakan untuk menulis kode ML dan alur kerja penerapan.
+ [Puisi](https://python-poetry.org/) 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](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).

## Praktik terbaik
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-best-practices"></a>
+ 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam dokumentasi IAM.
+ Gunakan kredensi sementara untuk mengakses peran IAM di terminal.

## Epik
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics"></a>

### Mengatur lingkungan
<a name="set-up-the-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat dan aktifkan lingkungan virtual. | Untuk membuat dan mengaktifkan lingkungan virtual, jalankan perintah berikut di root repositori:<pre>poetry install <br />poetry shell</pre> | AWS Umum | 
| Menyebarkan infrastruktur.  | Untuk menyebarkan infrastruktur menggunakan CloudFormation, jalankan perintah berikut:<pre>aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup  --capabilities CAPABILITY_NAMED_IAM</pre> | AWS Umum, DevOps insinyur | 
| Unduh data sampel.  | Untuk men-download data input dari [openmlke](https://www.openml.org/) mesin lokal Anda, jalankan perintah berikut:<pre>python scripts/download_data.py</pre> | AWS Umum | 
| Jalankan secara lokal untuk pengujian cepat. | Untuk menjalankan kode pelatihan secara lokal untuk pengujian, jalankan perintah berikut:<pre>python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data</pre><br />Log dari semua eksekusi disimpan oleh waktu eksekusi dalam folder bernama`outputs`. Untuk informasi lebih lanjut, lihat bagian “Output” di [GitHub repositori](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).<br />Anda juga dapat melakukan beberapa pelatihan secara paralel, dengan parameter yang berbeda, dengan menggunakan `--multirun` fungsionalitas. Untuk detail selengkapnya, lihat [dokumentasi Hydra](https://hydra.cc/docs/tutorials/basic/running_your_app/multi-run/). | Ilmuwan data | 

### Jalankan alur kerja di AI SageMaker
<a name="run-workflows-on-sm"></a>


| Tugas | Deskripsi | Keterampilan 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:<pre>export ECR_REPO_NAME=hydra-sm-artifact<br />export image_tag=latest<br />export AWS_REGION="<your_aws_region>" # for instance, us-east-1<br />export ACCOUNT_ID="<your_account_id>"<br />export BUCKET_NAME_DATA=hydra-sample-data-$ACCOUNT_ID<br />export BUCKET_NAME_CONFIG=hydra-sample-config-$ACCOUNT_ID<br />export AWS_DEFAULT_REGION=$AWS_REGION<br />export ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/hydra-sample-sagemaker<br />export INPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/input/<br />export OUTPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/output/</pre> | AWS Umum | 
| Buat dan dorong gambar Docker. | Untuk membuat image Docker dan mendorongnya ke repositori Amazon ECR, jalankan perintah berikut:<pre>chmod +x scripts/create_and_push_image.sh<br />scripts/create_and_push_image.sh $ECR_REPO_NAME $image_tag $AWS_REGION $ACCOUNT_ID</pre><br />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: <pre>aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv" </pre> | Insinyur data, AWS Umum | 
| Kirimkan 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:<pre>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</pre> | 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](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra/blob/main/scripts/start_sagemaker_hpo_job.py). Hyperparameter yang akan disetel harus melewati muatan boto3, bukan saluran ke pekerjaan pelatihan.<br />Untuk memulai pekerjaan optimasi hyperparameter (HPO), jalankan perintah berikut:<pre>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</pre> | Ilmuwan data | 

## Pemecahan masalah
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| 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
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-resources"></a>
+ [Latih model dengan Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) (AWS dokumentasi)
+ [Apa itu Tuning Hyperparameter?](https://aws.amazon.com/what-is/hyperparameter-tuning/#:~:text=Hyperparameter%20tuning%20allows%20data%20scientists,the%20model%20as%20a%20hyperparameter.)

## Informasi tambahan
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional"></a>

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](https://hydra.cc/), 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.

 