

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

# Siapkan Model Anda untuk Deployment
<a name="edge-getting-started-step2"></a>

Di bagian ini Anda akan membuat objek SageMaker AI dan AWS IoT klien, mengunduh model pembelajaran mesin yang telah dilatih sebelumnya, mengunggah model Anda ke bucket Amazon S3 Anda, mengkompilasi model Anda untuk perangkat target Anda SageMaker dengan Neo, dan mengemas model Anda sehingga dapat digunakan dengan agen Edge Manager.

1. **Impor pustaka dan buat objek klien.**

   Tutorial ini menggunakan AWS SDK untuk Python (Boto3) untuk membuat klien untuk berinteraksi dengan SageMaker AI, Amazon S3, dan. AWS IoT

   Impor Boto3, tentukan Wilayah Anda, dan inisialisasi objek klien yang Anda butuhkan seperti yang ditunjukkan pada contoh berikut:

   ```
   import boto3
   import json
   import time
   
   AWS_REGION = 'us-west-2'# Specify your Region
   bucket = {{'bucket-name'}}
   
   sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION)
   iot_client = boto3.client('iot', region_name=AWS_REGION)
   ```

   Tentukan variabel dan tetapkan peran ARN yang Anda buat SageMaker untuk AI AWS IoT dan sebagai string:

   ```
   # Replace with the role ARN you created for SageMaker
   sagemaker_role_arn = "arn:aws:iam::{{<account>:role/*}}"
   
   # Replace with the role ARN you created for AWS IoT. 
   # Note: The name must start with 'SageMaker'
   iot_role_arn = "arn:aws:iam::{{<account>:role/SageMaker*}}"
   ```

1. **Latih model pembelajaran mesin.**

   Lihat [Train a Model with Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) untuk informasi selengkapnya tentang cara melatih model pembelajaran mesin menggunakan SageMaker AI. Anda dapat mengunggah model yang dilatih secara lokal secara opsional langsung ke bucket Amazon S3 URI.

   Jika Anda belum memiliki model, Anda dapat menggunakan model pra-terlatih untuk langkah selanjutnya dalam tutorial ini. Misalnya, Anda dapat menyimpan model MobileNet V2 dari TensorFlow kerangka kerja. MobileNet V2 adalah model klasifikasi gambar yang dioptimalkan untuk aplikasi seluler. Untuk informasi lebih lanjut tentang MobileNet V2, lihat [MobileNet GitHub README](https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet).

   Ketik berikut ini ke Notebook Jupyter Anda untuk menyimpan model V2 yang telah dilatih sebelumnya MobileNet :

   ```
   # Save the MobileNet V2 model to local storage
      import tensorflow as tf
      model = tf.keras.applications.MobileNetV2()
      model.save(“mobilenet_v2.h5”)
   ```
**catatan**  
Jika Anda belum TensorFlow menginstal, Anda dapat melakukannya dengan menjalankan `pip install tensorflow=2.4`
Gunakan TensorFlow versi 2.4 atau lebih rendah untuk tutorial ini.

   Model akan disimpan ke dalam `mobilenet_v2.h5` file. Sebelum mengemas model, Anda harus terlebih dahulu mengkompilasi model Anda menggunakan SageMaker Neo. Lihat [Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](neo-supported-devices-edge.md) untuk memeriksa apakah versi Anda TensorFlow (atau kerangka kerja pilihan lainnya) saat ini didukung oleh SageMaker Neo.

   SageMaker Neo membutuhkan model untuk disimpan sebagai file TAR terkompresi. Kemas ulang sebagai file TAR terkompresi (\*.tar.gz):

   ```
   # Package MobileNet V2 model into a TAR file 
      import tarfile
      
      tarfile_name='mobilenet-v2.tar.gz'
      
      with tarfile.open(tarfile_name, mode='w:gz') as archive:
          archive.add('mobilenet-v2.h5')
   ```

1. **Unggah model Anda ke Amazon S3.**

   Setelah Anda memiliki model pembelajaran mesin, simpan di ember Amazon S3. *Contoh berikut menggunakan AWS CLI perintah untuk mengunggah model ke bucket Amazon S3 yang Anda buat sebelumnya di direktori bernama models.* Ketik berikut ini ke Notebook Jupyter Anda:

   ```
   !aws s3 cp mobilenet-v2.tar.gz s3://{bucket}/models/
   ```

1. **Kompilasi model Anda dengan SageMaker Neo.**

   Kompilasi model pembelajaran mesin Anda dengan SageMaker Neo untuk perangkat edge. Anda perlu mengetahui URI bucket Amazon S3 tempat Anda menyimpan model terlatih, kerangka kerja pembelajaran mesin yang Anda gunakan untuk melatih model, bentuk input model, dan perangkat target Anda.

   Untuk model MobileNet V2, gunakan yang berikut ini:

   ```
   framework = 'tensorflow'
   target_device = 'jetson_nano'
   data_shape = '{"data":[1,3,224,224]}'
   ```

   SageMaker Neo membutuhkan bentuk input model tertentu dan format model berdasarkan kerangka pembelajaran mendalam yang Anda gunakan. Untuk informasi selengkapnya tentang cara menyimpan model Anda, lihat[Bentuk data input apa yang diharapkan SageMaker Neo?](neo-compilation-preparing-model.md#neo-job-compilation-expected-inputs). Untuk informasi selengkapnya tentang perangkat dan kerangka kerja yang didukung oleh Neo, lihat[Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung](neo-supported-devices-edge.md).

   Gunakan `CreateCompilationJob` API untuk membuat pekerjaan kompilasi dengan SageMaker Neo. Berikan nama untuk pekerjaan kompilasi, ARN Peran SageMaker AI, URI Amazon S3 tempat model Anda disimpan, bentuk input model, nama kerangka kerja, URI Amazon S3 tempat Anda SageMaker ingin AI menyimpan model yang dikompilasi, dan target perangkat edge Anda.

   ```
   # Specify the path where your model is stored
   model_directory = 'models'
   s3_model_uri = 's3://{}/{}/{}'.format(bucket, model_directory, tarfile_name)
   
   # Store compiled model in S3 within the 'compiled-models' directory
   compilation_output_dir = 'compiled-models'
   s3_output_location = 's3://{}/{}/'.format(bucket, compilation_output_dir)
   
   # Give your compilation job a name
   compilation_job_name = 'getting-started-demo'
   
   sagemaker_client.create_compilation_job(CompilationJobName=compilation_job_name,
                                           RoleArn=sagemaker_role_arn,
                                           InputConfig={
                                               'S3Uri': s3_model_uri,
                                               'DataInputConfig': data_shape,
                                               'Framework' : framework.upper()},
                                           OutputConfig={
                                               'S3OutputLocation': s3_output_location,
                                               'TargetDevice': target_device},
                                           StoppingCondition={'MaxRuntimeInSeconds': 900})
   ```

1. **Package model kompilasi Anda.**

   Pekerjaan pengemasan membutuhkan model yang SageMaker dikompilasi Neo dan membuat perubahan apa pun yang diperlukan untuk menerapkan model dengan mesin inferensi, agen Edge Manager. Untuk mengemas model Anda, buat pekerjaan pengemasan tepi dengan `create_edge_packaging` API atau konsol SageMaker AI.

   Anda perlu memberikan nama yang Anda gunakan untuk pekerjaan kompilasi Neo Anda, nama untuk pekerjaan pengemasan, peran ARN (lihat [Mengatur](edge-getting-started-step1.md) bagian), nama untuk model, versi model, dan URI bucket Amazon S3 untuk output pekerjaan pengemasan. Perhatikan bahwa nama pekerjaan pengemasan Edge Manager peka huruf besar/kecil. Berikut ini adalah contoh cara membuat pekerjaan pengemasan menggunakan API.

   ```
   edge_packaging_name='edge-packaging-demo'
   model_name="sample-model"
   model_version="1.1"
   ```

   Tentukan URI Amazon S3 tempat Anda ingin menyimpan model paket.

   ```
   # Output directory where you want to store the output of the packaging job
   packaging_output_dir = 'packaged_models'
   packaging_s3_output = 's3://{}/{}'.format(bucket, packaging_output_dir)
   ```

   Gunakan `CreateEdgePackagingJob` untuk mengemas model yang dikompilasi NEO Anda. Berikan nama untuk pekerjaan pengemasan tepi Anda dan nama yang Anda berikan untuk pekerjaan kompilasi Anda (dalam contoh ini, itu disimpan dalam variabel`compilation_job_name`). Juga berikan nama untuk model Anda, versi untuk model Anda (ini digunakan untuk membantu Anda melacak versi model apa yang Anda gunakan), dan URI S3 tempat Anda ingin SageMaker AI menyimpan model yang dikemas.

   ```
   sagemaker_client.create_edge_packaging_job(
                       EdgePackagingJobName=edge_packaging_name,
                       CompilationJobName=compilation_job_name,
                       RoleArn=sagemaker_role_arn,
                       ModelName=model_name,
                       ModelVersion=model_version,
                       OutputConfig={
                           "S3OutputLocation": packaging_s3_output
                           }
                       )
   ```