Siapkan Model Anda untuk Deployment - Amazon SageMaker

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

Di bagian ini Anda akan membuat SageMaker dan objek 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 for Python (Boto3) untuk membuat klien untuk berinteraksi dengan SageMaker, 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 yang ARN Anda buat untuk SageMaker dan AWS IoT 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*"
  2. Latih model pembelajaran mesin.

    Lihat Melatih Model dengan Amazon SageMaker untuk informasi lebih lanjut tentang cara melatih model pembelajaran mesin menggunakan SageMaker. Anda dapat secara opsional mengunggah model terlatih lokal Anda langsung ke bucket Amazon URI S3.

    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.

    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 untuk memeriksa apakah versi Anda TensorFlow (atau kerangka kerja pilihan lainnya) saat ini didukung oleh SageMaker Neo.

    SageMaker Neo membutuhkan model untuk disimpan sebagai TAR file terkompresi. Kemas ulang sebagai TAR file 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')
  3. 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/
  4. Kompilasi model Anda dengan SageMaker Neo.

    Kompilasi model pembelajaran mesin Anda dengan SageMaker Neo untuk perangkat edge. Anda perlu mengetahui bucket Amazon S3 URI 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, lihatBentuk data input apa yang diharapkan SageMaker Neo?. Untuk informasi selengkapnya tentang perangkat dan kerangka kerja yang didukung oleh Neo, lihatKerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung.

    Gunakan CreateCompilationJob API untuk membuat pekerjaan kompilasi dengan SageMaker Neo. Berikan nama untuk pekerjaan kompilasi, SageMaker PeranARN, Amazon S3 URI tempat model Anda disimpan, bentuk input model, nama kerangka kerja, Amazon URI S3 tempat Anda SageMaker ingin 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})
  5. 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 SageMaker konsol.

    Anda perlu memberikan nama yang Anda gunakan untuk pekerjaan kompilasi Neo Anda, nama untuk pekerjaan pengemasan, peran ARN (lihat Mengatur bagian), nama untuk model, versi model, dan bucket Amazon S3 URI untuk output pekerjaan pengemasan. Perhatikan bahwa nama pekerjaan pengemasan Edge Manager peka huruf besar/kecil. Berikut ini adalah contoh cara membuat pekerjaan pengemasan menggunakanAPI.

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

    Tentukan Amazon S3 URI tempat Anda ingin menyimpan model yang dikemas.

    # 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 variabelcompilation_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 S3 URI tempat Anda SageMaker ingin menyimpan model paket.

    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 } )