

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

# Buat image container Docker kustom untuk SageMaker dan gunakan untuk pelatihan model di AWS Step Functions
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions"></a>

*Julia Bluszcz, Aubrey Oosthuizen, Mohan Gowda Purushothama, Neha Sharma, dan Mateusz Zaremba, Amazon Web Services*

## Ringkasan
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-summary"></a>

Pola ini menunjukkan cara membuat image container Docker untuk [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) dan menggunakannya untuk model pelatihan di [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html). Dengan mengemas algoritme kustom dalam wadah, Anda dapat menjalankan hampir semua kode di SageMaker lingkungan, terlepas dari bahasa pemrograman, kerangka kerja, atau dependensi.

Dalam contoh [SageMaker notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html) yang disediakan, image container Docker kustom disimpan di [Amazon Elastic Container Registry (Amazon ECR) Registry ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). Step Functions kemudian menggunakan wadah yang disimpan di Amazon ECR untuk menjalankan skrip pemrosesan Python. SageMaker Kemudian, wadah mengekspor model ke [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html).

## Prasyarat dan batasan
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ Peran [AWS Identity and Access Management (IAM) SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) dengan izin Amazon S3
+ Peran [IAM untuk Step](https://sagemaker-examples.readthedocs.io/en/latest/step-functions-data-science-sdk/step_functions_mlworkflow_processing/step_functions_mlworkflow_scikit_learn_data_processing_and_model_evaluation.html#Create-an-Execution-Role-for-Step-Functions) Functions
+ Keakraban dengan Python
+ Keakraban dengan Amazon SageMaker Python SDK
+ Keakraban dengan AWS Command Line Interface (AWS CLI)
+ Keakraban dengan AWS SDK for Python (Boto3)
+ Keakraban dengan Amazon ECR
+ Keakraban dengan Docker

**Versi produk**
+ AWS Step Functions Data Science SDK versi 2.3.0
+ Amazon SageMaker Python SDK versi 2.78.0

## Arsitektur
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-architecture"></a>

Diagram berikut menunjukkan contoh alur kerja untuk membuat image container Docker untuk SageMaker, kemudian menggunakannya untuk model pelatihan di Step Functions:

![\[Workflow untuk membuat image container Docker SageMaker untuk digunakan sebagai model pelatihan Step Functions.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/7857d57f-3077-4b06-8971-fb5846387693/images/37755e38-0bc4-4dd0-90c7-135d95b00053.png)


Diagram menunjukkan alur kerja berikut:

1. Seorang ilmuwan atau DevOps insinyur data menggunakan SageMaker notebook Amazon untuk membuat gambar kontainer Docker kustom.

1. Seorang ilmuwan atau DevOps insinyur data menyimpan gambar kontainer Docker di repositori pribadi Amazon ECR yang ada di registri pribadi.

1. Seorang ilmuwan atau DevOps insinyur data menggunakan wadah Docker untuk menjalankan pekerjaan pemrosesan SageMaker Python dalam alur kerja Step Functions.

**Otomatisasi dan skala**

Contoh SageMaker notebook dalam pola ini menggunakan jenis instance `ml.m5.xlarge` notebook. Anda dapat mengubah jenis instance agar sesuai dengan kasus penggunaan Anda. Untuk informasi selengkapnya tentang jenis instans SageMaker notebook, lihat [ SageMaker Harga Amazon](https://aws.amazon.com/sagemaker/pricing/).

## Alat
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-tools"></a>
+ [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](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membuat dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
+ [Amazon SageMaker Python SDK](https://github.com/aws/sagemaker-python-sdk) adalah pustaka sumber terbuka untuk melatih dan menerapkan model pembelajaran mesin. SageMaker
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi AWS Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.
+ [AWS Step Functions Data Science Python SDK](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/index.html) adalah pustaka open source yang membantu Anda membuat alur kerja Step Functions yang memproses dan menerbitkan model pembelajaran mesin.

## Epik
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-epics"></a>

### Buat gambar kontainer Docker khusus dan simpan di Amazon ECR
<a name="create-a-custom-docker-container-image-and-store-it-in-amazon-ecr"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan Amazon ECR dan buat registri pribadi baru. | Jika Anda belum melakukannya, siapkan Amazon ECR dengan mengikuti petunjuk dalam [Menyiapkan dengan Amazon ECR di Panduan](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html) Pengguna *Amazon ECR*. Setiap akun AWS dilengkapi dengan registri ECR Amazon pribadi default. | DevOps insinyur | 
| Buat repositori pribadi Amazon ECR. | Ikuti petunjuk dalam [Membuat repositori pribadi di Panduan](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) Pengguna *Amazon ECR*.Repositori yang Anda buat adalah tempat Anda akan menyimpan gambar kontainer Docker kustom Anda. | DevOps insinyur | 
| Buat Dockerfile yang menyertakan spesifikasi yang diperlukan untuk menjalankan pekerjaan SageMaker pemrosesan Anda.  | Buat Dockerfile yang menyertakan spesifikasi yang diperlukan untuk menjalankan pekerjaan SageMaker pemrosesan Anda dengan mengonfigurasi Dockerfile. Untuk petunjuknya, lihat [Mengadaptasi wadah pelatihan Anda sendiri](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) di *Panduan SageMaker Pengembang Amazon*.Untuk informasi selengkapnya tentang Dockerfiles, lihat [Referensi Dockerfile](https://docs.docker.com/engine/reference/builder/) dalam dokumentasi Docker.**Contoh sel kode notebook Jupyter untuk membuat Dockerfile***Sel 1*<pre># Make docker folder<br />!mkdir -p docker</pre>*Sel 2*<pre>%%writefile docker/Dockerfile<br /><br />FROM python:3.7-slim-buster<br /><br />RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3<br />ENV PYTHONUNBUFFERED=TRUE<br /><br />ENTRYPOINT ["python3"]</pre> | DevOps insinyur | 
| Buat gambar kontainer Docker Anda dan dorong ke Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.html)Untuk informasi selengkapnya, lihat [Membangun dan mendaftarkan kontainer](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.html#Building-and-registering-the-container) di *Membangun wadah algoritme Anda sendiri* GitHub.**Contoh sel kode notebook Jupyter untuk membangun dan mendaftarkan gambar Docker**Sebelum menjalankan sel berikut, pastikan Anda telah membuat Dockerfile dan menyimpannya di direktori yang disebut. `docker` Selain itu, pastikan Anda telah membuat repositori Amazon ECR, dan Anda mengganti `ecr_repository` nilai di sel pertama dengan nama repositori Anda.*Sel 1*<pre>import boto3<br />tag = ':latest'<br />account_id = boto3.client('sts').get_caller_identity().get('Account')<br />region = boto3.Session().region_name<br />ecr_repository = 'byoc'<br /><br />image_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag)</pre>*Sel 2*<pre># Build docker image<br />!docker build -t $image_uri docker</pre>*Sel 3*<pre># Authenticate to ECR<br />!aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com</pre>*Sel 4*<pre># Push docker image<br />!docker push $image_uri</pre>Anda harus [mengautentikasi klien Docker Anda ke registri pribadi](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html) Anda sehingga Anda dapat menggunakan perintah `docker push` dan`docker pull`. Perintah ini mendorong dan menarik gambar ke dan dari repositori di registri Anda. | DevOps insinyur | 

### Buat alur kerja Step Functions yang menggunakan gambar kontainer Docker kustom Anda
<a name="create-a-step-functions-workflow-that-uses-your-custom-docker-container-image"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat skrip Python yang mencakup pemrosesan kustom dan logika pelatihan model Anda. | Tulis logika pemrosesan khusus untuk dijalankan dalam skrip pemrosesan data Anda. Kemudian, simpan sebagai skrip Python bernama. `training.py`Untuk informasi selengkapnya, lihat [Membawa model Anda sendiri dengan Mode SageMaker Skrip aktif](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html) GitHub.**Contoh skrip Python yang mencakup pemrosesan kustom dan logika pelatihan model**<pre>%%writefile training.py<br />from numpy import empty<br />import pandas as pd<br />import os<br />from sklearn import datasets, svm<br />from joblib import dump, load<br /><br /><br />if __name__ == '__main__':<br />    digits = datasets.load_digits()<br />    #create classifier object<br />    clf = svm.SVC(gamma=0.001, C=100.)<br />    <br />    #fit the model<br />    clf.fit(digits.data[:-1], digits.target[:-1])<br />    <br />    #model output in binary format<br />    output_path = os.path.join('/opt/ml/processing/model', "model.joblib")<br />    dump(clf, output_path)</pre> | Ilmuwan data | 
| Buat alur kerja Step Functions yang menyertakan pekerjaan SageMaker Processing Anda sebagai salah satu langkahnya.  | Instal dan impor [AWS Step Functions Data Science SDK](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html) dan unggah file **training.py** ke Amazon S3. Kemudian, gunakan [Amazon SageMaker Python SDK](https://github.com/aws/sagemaker-python-sdk) untuk menentukan langkah pemrosesan di Step Functions.Pastikan Anda telah [membuat peran eksekusi IAM untuk Step Functions](https://sagemaker-examples.readthedocs.io/en/latest/step-functions-data-science-sdk/step_functions_mlworkflow_processing/step_functions_mlworkflow_scikit_learn_data_processing_and_model_evaluation.html#Create-an-Execution-Role-for-Step-Functions) di akun AWS Anda.**Contoh pengaturan lingkungan dan skrip pelatihan khusus untuk diunggah ke Amazon S3**<pre>!pip install stepfunctions<br /><br />import boto3<br />import stepfunctions<br />import sagemaker<br />import datetime<br /><br />from stepfunctions import steps<br />from stepfunctions.inputs import ExecutionInput<br />from stepfunctions.steps import (<br />    Chain<br />)<br />from stepfunctions.workflow import Workflow<br />from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput<br /><br />sagemaker_session = sagemaker.Session()<br />bucket = sagemaker_session.default_bucket() <br />role = sagemaker.get_execution_role()<br />prefix = 'byoc-training-model'<br /><br /># See prerequisites section to create this role<br />workflow_execution_role = f"arn:aws:iam::{account_id}:role/AmazonSageMaker-StepFunctionsWorkflowExecutionRole"<br /><br />execution_input = ExecutionInput(<br />    schema={<br />        "PreprocessingJobName": str})<br /><br /><br />input_code = sagemaker_session.upload_data(<br />    "training.py",<br />    bucket=bucket,<br />    key_prefix="preprocessing.py",<br />)</pre>**Contoh definisi langkah SageMaker pemrosesan yang menggunakan gambar Amazon ECR kustom dan skrip Python**Pastikan Anda menggunakan `execution_input` parameter untuk menentukan nama pekerjaan. Nilai parameter harus unik setiap kali pekerjaan berjalan. Juga, kode file **training.py** diteruskan sebagai `input` parameter ke`ProcessingStep`, yang berarti bahwa itu akan disalin di dalam wadah. Tujuan untuk `ProcessingInput` kode adalah sama dengan argumen kedua di dalam`container_entrypoint`.<pre>script_processor = ScriptProcessor(command=['python3'],<br />                image_uri=image_uri,<br />                role=role,<br />                instance_count=1,<br />                instance_type='ml.m5.xlarge')<br /><br /><br />processing_step = steps.ProcessingStep(<br />    "training-step",<br />    processor=script_processor,<br />    job_name=execution_input["PreprocessingJobName"],<br />    inputs=[<br />        ProcessingInput(<br />            source=input_code,<br />            destination="/opt/ml/processing/input/code",<br />            input_name="code",<br />        ),<br />    ],<br />    outputs=[<br />        ProcessingOutput(<br />            source='/opt/ml/processing/model', <br />            destination="s3://{}/{}".format(bucket, prefix), <br />            output_name='byoc-example')<br />    ],<br />    container_entrypoint=["python3", "/opt/ml/processing/input/code/training.py"],<br />)</pre>**Contoh alur kerja Step Functions yang menjalankan pekerjaan SageMaker pemrosesan**Contoh alur kerja ini mencakup langkah pekerjaan SageMaker pemrosesan saja, bukan alur kerja Step Functions yang lengkap. Untuk contoh alur kerja lengkap, lihat [Contoh notebook SageMaker dalam](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html#example-notebooks-in-sagemaker) dokumentasi AWS Step Functions Data Science SDK.<pre>workflow_graph = Chain([processing_step])<br /><br />workflow = Workflow(<br />    name="ProcessingWorkflow",<br />    definition=workflow_graph,<br />    role=workflow_execution_role<br />)<br /><br />workflow.create()<br /># Execute workflow<br />execution = workflow.execute(<br />    inputs={<br />        "PreprocessingJobName": str(datetime.datetime.now().strftime("%Y%m%d%H%M-%SS")),  # Each pre processing job (SageMaker processing job) requires a unique name,<br />    }<br />)<br />execution_output = execution.get_output(wait=True)</pre> | Ilmuwan data | 

## Sumber daya terkait
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-resources"></a>
+ [Memproses data](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) (*Panduan SageMaker Pengembang Amazon*)
+ [Mengadaptasi wadah pelatihan Anda sendiri](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) (*Panduan SageMaker Pengembang Amazon*)