Prasyarat untuk menggunakan Amazon Inference Recommender SageMaker - Amazon SageMaker

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

Prasyarat untuk menggunakan Amazon Inference Recommender SageMaker

Sebelum Anda dapat menggunakan Amazon SageMaker Inference Recommender, Anda harus menyelesaikan langkah-langkah prasyarat. Sebagai contoh, kami menunjukkan cara menggunakan model pra-terlatih PyTorch (v1.7.1) ResNet -18 untuk kedua jenis pekerjaan rekomendasi Amazon SageMaker Inference Recommender. Contoh yang ditampilkan menggunakan AWS SDK for Python (Boto3).

catatan
  • Contoh kode berikut menggunakan Python. Hapus karakter ! awalan jika Anda menjalankan salah satu contoh kode berikut di terminal Anda atau AWS CLI.

  • Anda dapat menjalankan contoh berikut dengan kernel Python 3 (TensorFlow 2.6 Python CPU 3.8 Optimized) di notebook Amazon Studio. SageMaker Untuk informasi selengkapnya tentang Studio, lihat SageMaker Studio Amazon.

  1. Buat IAM peran untuk Amazon SageMaker.

    Buat IAM peran untuk Amazon SageMaker yang memiliki kebijakan AmazonSageMakerFullAccess IAM terkelola terlampir.

  2. Siapkan lingkungan Anda.

    Impor dependensi dan buat variabel untuk SageMaker IAM peran Anda (dari Langkah 1), dan klien. Wilayah AWS SageMaker

    !pip install --upgrade pip awscli botocore boto3 --quiet from sagemaker import get_execution_role, Session, image_uris import boto3 region = boto3.Session().region_name role = get_execution_role() sagemaker_client = boto3.client("sagemaker", region_name=region) sagemaker_session = Session()
  3. (Opsional) Tinjau model yang ada yang dipatokan oleh Inference Recommender.

    Inferensi Rekomendasi tolok ukur model dari kebun binatang model populer. Inference Recommender mendukung model Anda meskipun belum benchmark.

    Gunakan ListModelMetaData untuk mendapatkan objek respons yang mencantumkan domain, kerangka kerja, tugas, dan nama model model pembelajaran mesin yang ditemukan di kebun binatang model umum.

    Anda menggunakan domain, kerangka kerja, versi kerangka kerja, tugas, dan nama model di langkah selanjutnya untuk memilih gambar Docker inferensi dan mendaftarkan model Anda dengan SageMaker Model Registry. Berikut ini menunjukkan bagaimana untuk daftar metadata model dengan untuk SDK Python (Boto3):

    list_model_metadata_response=sagemaker_client.list_model_metadata()

    Outputnya mencakup ringkasan model (ModelMetadataSummaries) dan metadata respons (ResponseMetadata) mirip dengan contoh berikut:

    { 'ModelMetadataSummaries': [{ 'Domain': 'NATURAL_LANGUAGE_PROCESSING', 'Framework': 'PYTORCH:1.6.0', 'Model': 'bert-base-cased', 'Task': 'FILL_MASK' }, { 'Domain': 'NATURAL_LANGUAGE_PROCESSING', 'Framework': 'PYTORCH:1.6.0', 'Model': 'bert-base-uncased', 'Task': 'FILL_MASK' }, { 'Domain': 'COMPUTER_VISION', 'Framework': 'MXNET:1.8.0', 'Model': 'resnet18v2-gluon', 'Task': 'IMAGE_CLASSIFICATION' }, { 'Domain': 'COMPUTER_VISION', 'Framework': 'PYTORCH:1.6.0', 'Model': 'resnet152', 'Task': 'IMAGE_CLASSIFICATION' }], 'ResponseMetadata': { 'HTTPHeaders': { 'content-length': '2345', 'content-type': 'application/x-amz-json-1.1', 'date': 'Tue, 19 Oct 2021 20:52:03 GMT', 'x-amzn-requestid': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }, 'HTTPStatusCode': 200, 'RequestId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'RetryAttempts': 0 } }

    Untuk demo ini, kami menggunakan model PyTorch (v1.7.1) ResNet -18 untuk melakukan klasifikasi gambar. Contoh kode Python berikut menyimpan kerangka kerja, versi kerangka kerja, domain, dan tugas ke dalam variabel untuk digunakan nanti:

    # ML framework details framework = 'pytorch' framework_version = '1.7.1' # ML model details ml_domain = 'COMPUTER_VISION' ml_task = 'IMAGE_CLASSIFICATION'
  4. Unggah model pembelajaran mesin Anda ke Amazon S3.

    Gunakan model PyTorch (v1.7.1) ResNet -18 ini jika Anda tidak memiliki model pembelajaran mesin yang telah dilatih sebelumnya:

    # Optional: Download a sample PyTorch model import torch from torchvision import models, transforms, datasets # Create an example input for tracing image = torch.zeros([1, 3, 256, 256], dtype=torch.float32) # Load a pretrained resnet18 model from TorchHub model = models.resnet18(pretrained=True) # Tell the model we are using it for evaluation (not training). Note this is required for Inferentia compilation. model.eval() model_trace = torch.jit.trace(model, image) # Save your traced model model_trace.save('model.pth')

    Unduh contoh skrip inference.py inferensi. Buat code direktori dan pindahkan skrip inferensi ke code direktori.

    # Download the inference script !wget https://aws-ml-blog-artifacts.s3.us-east-2.amazonaws.com/inference.py # move it into a code/ directory !mkdir code !mv inference.py code/

    Amazon SageMaker memerlukan model pembelajaran mesin yang telah dilatih sebelumnya untuk dikemas sebagai TAR file terkompresi (). *.tar.gz Kompres model dan skrip inferensi Anda untuk memenuhi persyaratan ini:

    !tar -czf test.tar.gz model.pth code/inference.py

    Saat titik akhir Anda disediakan, file dalam arsip diekstraksi ke /opt/ml/model/ titik akhir.

    Setelah Anda mengompres model dan model artefak sebagai .tar.gz file, unggah ke bucket Amazon S3 Anda. Contoh berikut menunjukkan cara mengunggah model Anda ke Amazon S3 menggunakan: AWS CLI

    !aws s3 cp test.tar.gz s3://{your-bucket}/models/
  5. Pilih gambar inferensi Docker bawaan atau buat Inference Docker Image Anda sendiri.

    SageMaker menyediakan wadah untuk algoritme bawaan dan gambar Docker bawaan untuk beberapa kerangka kerja pembelajaran mesin yang paling umum, seperti ApacheMXNet,,, dan Chainer. TensorFlow PyTorch Untuk daftar lengkap gambar yang tersedia, lihat SageMaker Gambar Deep Learning Containers yang Tersedia.

    Jika tidak ada SageMaker kontainer yang ada yang memenuhi kebutuhan Anda dan Anda tidak memiliki wadah sendiri, buat image Docker baru. Lihat Wadah dengan kode inferensi khusus untuk informasi tentang cara membuat image Docker Anda.

    Berikut ini menunjukkan bagaimana untuk mengambil gambar inferensi PyTorch versi 1.7.1 menggunakan Python: SageMaker SDK

    from sagemaker import image_uris ## Uncomment and replace with your own values if you did not define ## these variables a previous step. #framework = 'pytorch' #framework_version = '1.7.1' # Note: you can use any CPU-based instance here, # this is just to set the arch as CPU for the Docker image instance_type = 'ml.m5.2xlarge' image_uri = image_uris.retrieve(framework, region, version=framework_version, py_version='py3', instance_type=instance_type, image_scope='inference')

    Untuk daftar SageMaker Instans yang tersedia, lihat SageMakerHarga Amazon.

  6. Buat contoh arsip payload.

    Buat arsip yang berisi file individual yang dapat dikirim oleh alat pengujian beban ke SageMaker titik akhir Anda. Kode inferensi Anda harus dapat membaca format file dari payload sampel.

    Berikut ini mengunduh gambar.jpg yang digunakan contoh ini pada langkah selanjutnya untuk model ResNet -18.

    !wget https://cdn.pixabay.com/photo/2020/12/18/05/56/flowers-5841251_1280.jpg

    Kompres muatan sampel sebagai tarball:

    !tar -cvzf payload.tar.gz flowers-5841251_1280.jpg

    Unggah payload sampel ke Amazon S3 dan perhatikan Amazon S3: URI

    !aws s3 cp payload.tar.gz s3://{bucket}/models/

    Anda memerlukan Amazon S3 URI di langkah selanjutnya, jadi simpan dalam variabel:

    bucket_prefix='models' bucket = '<your-bucket-name>' # Provide the name of your S3 bucket payload_s3_key = f"{bucket_prefix}/payload.tar.gz" sample_payload_url= f"s3://{bucket}/{payload_s3_key}"
  7. Siapkan masukan model Anda untuk pekerjaan rekomendasi

    Untuk prasyarat terakhir, Anda memiliki dua opsi untuk menyiapkan input model Anda. Anda dapat mendaftarkan model Anda dengan SageMaker Model Registry, yang dapat Anda gunakan untuk membuat katalog model untuk produksi, atau Anda dapat membuat SageMaker model dan menentukannya di ContainerConfig bidang saat membuat pekerjaan rekomendasi. Opsi pertama adalah yang terbaik jika Anda ingin memanfaatkan fitur yang disediakan Model Registry, seperti mengelola versi model dan mengotomatiskan penerapan model. Opsi kedua sangat ideal jika Anda ingin memulai dengan cepat. Untuk opsi pertama, lanjutkan ke langkah 7. Untuk opsi kedua, lewati langkah 7 dan lanjutkan ke langkah 8.

  8. Opsi 1: Daftarkan model Anda di registri model

    Dengan SageMaker Model Registry, Anda dapat membuat katalog model untuk produksi, mengelola versi model, mengaitkan metadata (seperti metrik pelatihan) dengan model, mengelola status persetujuan model, menyebarkan model ke produksi, dan mengotomatiskan penerapan model dengan CI/CD.

    Bila Anda menggunakan SageMaker Model Registry untuk melacak dan mengelola model Anda, mereka direpresentasikan sebagai paket model berversi dalam grup paket model. Paket model tidak berversi bukan bagian dari grup model. Grup paket model menyimpan beberapa versi atau iterasi model. Meskipun tidak diperlukan untuk membuatnya untuk setiap model dalam registri, mereka membantu mengatur berbagai model yang semuanya memiliki tujuan yang sama dan menyediakan versi otomatis.

    Untuk menggunakan Amazon SageMaker Inference Recommender, Anda harus memiliki paket model berversi. Anda dapat membuat paket model berversi secara terprogram dengan atau AWS SDK for Python (Boto3) dengan Amazon Studio Classic. SageMaker Untuk membuat paket model berversi secara terprogram, pertama buat grup paket model dengan paket. CreateModelPackageGroup API Selanjutnya, buat paket model menggunakan file CreateModelPackageAPI. Memanggil metode ini membuat paket model berversi.

    Lihat Buat Grup Model dan Daftarkan Versi Model untuk petunjuk terperinci tentang cara membuat grup paket model secara terprogram dan interaktif dan cara membuat paket model berversi, masing-masing, dengan Amazon Studio Classic dan AWS SDK for Python (Boto3) Amazon. SageMaker

    Contoh kode berikut menunjukkan cara membuat paket model berversi menggunakan. AWS SDK for Python (Boto3)

    catatan

    Anda tidak perlu menyetujui paket model untuk membuat pekerjaan Inference Recommender.

    1. Buat grup paket model

      Buat grup paket model dengan file CreateModelPackageGroupAPI. Berikan nama ke grup paket model untuk ModelPackageGroupName dan secara opsional memberikan deskripsi paket model di ModelPackageGroupDescription lapangan.

      model_package_group_name = '<INSERT>' model_package_group_description = '<INSERT>' model_package_group_input_dict = { "ModelPackageGroupName" : model_package_group_name, "ModelPackageGroupDescription" : model_package_group_description, } model_package_group_response = sagemaker_client.create_model_package_group(**model_package_group_input_dict)

      Lihat Panduan SageMaker API Referensi Amazon untuk daftar lengkap argumen opsional dan wajib yang dapat Anda sampaikan CreateModelPackageGroup.

      Buat paket model dengan menentukan image Docker yang menjalankan kode inferensi dan lokasi Amazon S3 dari artefak model Anda dan berikan nilai untuknya. InferenceSpecification InferenceSpecificationharus berisi informasi tentang pekerjaan inferensi yang dapat dijalankan dengan model berdasarkan paket model ini, termasuk yang berikut:

      • ECRJalur Amazon dari gambar yang menjalankan kode inferensi Anda.

      • (Opsional) Jenis instance yang didukung paket model untuk pekerjaan transformasi dan titik akhir waktu nyata yang digunakan untuk inferensi.

      • Format konten input dan output yang didukung paket model untuk inferensi.

      Selain itu, Anda harus menentukan parameter berikut saat membuat paket model:

      • Domain: Domain pembelajaran mesin dari paket model Anda dan komponennya. Domain pembelajaran mesin yang umum termasuk visi komputer dan pemrosesan bahasa alami.

      • Tugas: Tugas pembelajaran mesin yang diselesaikan oleh paket model Anda. Tugas pembelajaran mesin yang umum termasuk deteksi objek dan klasifikasi gambar. Tentukan OTHER "" jika tidak ada tugas yang tercantum dalam Panduan API Referensi yang memenuhi kasus penggunaan Anda. Lihat deskripsi API bidang Tugas untuk daftar tugas pembelajaran mesin yang didukung.

      • SamplePayloadUrl: Jalur Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) tempat muatan sampel disimpan. Jalur ini harus menunjuk ke satu TAR arsip GZIP terkompresi (akhiran .tar.gz).

      • Kerangka kerja: Kerangka pembelajaran mesin dari gambar wadah paket model.

      • FrameworkVersion: Versi kerangka dari gambar wadah paket model.

      Jika Anda memberikan daftar jenis instans yang diizinkan untuk digunakan untuk menghasilkan inferensi secara real-time SupportedRealtimeInferenceInstanceTypes, Inference Recommender membatasi ruang pencarian untuk jenis instans selama pekerjaan. Default Gunakan parameter ini jika Anda memiliki batasan anggaran atau mengetahui ada sekumpulan tipe instance tertentu yang dapat mendukung model dan gambar kontainer Anda.

      Pada langkah sebelumnya, kami mengunduh model ResNet 18 yang telah dilatih sebelumnya dan menyimpannya di bucket Amazon S3 di direktori bernama. models Kami mengambil gambar inferensi Deep Learning Container PyTorch (v1.7.1) dan menyimpannya URI dalam variabel yang disebut. image_uri Gunakan variabel-variabel tersebut dalam contoh kode berikut untuk mendefinisikan kamus yang digunakan sebagai masukan ke CreateModelPackageAPI.

      # Provide the Amazon S3 URI of your compressed tarfile # so that Model Registry knows where to find your model artifacts bucket_prefix='models' bucket = '<your-bucket-name>' # Provide the name of your S3 bucket model_s3_key = f"{bucket_prefix}/test.tar.gz" model_url= f"s3://{bucket}/{model_s3_key}" # Similar open source model to the packaged model # The name of the ML model as standardized by common model zoos nearest_model_name = 'resnet18' # The supported MIME types for input and output data. In this example, # we are using images as input. input_content_type='image/jpeg' # Optional - provide a description of your model. model_package_description = '<INSERT>' ## Uncomment if you did not store the domain and task in an earlier ## step #ml_domain = 'COMPUTER_VISION' #ml_task = 'IMAGE_CLASSIFICATION' ## Uncomment if you did not store the framework and framework version ## in a previous step. #framework = 'PYTORCH' #framework_version = '1.7.1' # Optional: Used for optimizing your model using SageMaker Neo # PyTorch uses NCHW format for images data_input_configuration = "[[1,3,256,256]]" # Create a dictionary to use as input for creating a model pacakge group model_package_input_dict = { "ModelPackageGroupName" : model_package_group_name, "ModelPackageDescription" : model_package_description, "Domain": ml_domain, "Task": ml_task, "SamplePayloadUrl": sample_payload_url, "InferenceSpecification": { "Containers": [ { "Image": image_uri, "ModelDataUrl": model_url, "Framework": framework.upper(), "FrameworkVersion": framework_version, "NearestModelName": nearest_model_name, "ModelInput": {"DataInputConfig": data_input_configuration} } ], "SupportedContentTypes": [input_content_type] } }
    2. Buat paket model

      Gunakan CreateModelPackage API untuk membuat paket model. Lulus kamus masukan yang ditentukan pada langkah sebelumnya:

      model_package_response = sagemaker_client.create_model_package(**model_package_input_dict)

      Anda memerlukan paket model ARN untuk menggunakan Amazon SageMaker Inference Recommender. Perhatikan paket model atau simpan dalam variabel: ARN

      model_package_arn = model_package_response["ModelPackageArn"] print('ModelPackage Version ARN : {}'.format(model_package_arn))
  9. Opsi 2: Buat model dan konfigurasikan ContainerConfig bidang

    Gunakan opsi ini jika Anda ingin memulai pekerjaan rekomendasi inferensi dan tidak perlu mendaftarkan model Anda di Registri Model. Pada langkah-langkah berikut, Anda membuat model SageMaker dan mengonfigurasi ContainerConfig bidang sebagai masukan untuk pekerjaan rekomendasi.

    1. Buat model

      Buat model dengan CreateModelAPI. Untuk contoh yang memanggil metode ini saat menerapkan model ke SageMaker Hosting, lihat Membuat Model (AWS SDK for Python (Boto3)).

      Pada langkah sebelumnya, kami mengunduh model ResNet 18 yang telah dilatih sebelumnya dan menyimpannya di bucket Amazon S3 di direktori bernama. models Kami mengambil gambar inferensi Deep Learning Container PyTorch (v1.7.1) dan menyimpannya URI dalam variabel yang disebut. image_uri Kami menggunakan variabel-variabel tersebut dalam contoh kode berikut di mana kami mendefinisikan kamus yang digunakan sebagai masukan ke CreateModelAPI.

      model_name = '<name_of_the_model>' # Role to give SageMaker permission to access AWS services. sagemaker_role= "arn:aws:iam::<region>:<account>:role/*" # Provide the Amazon S3 URI of your compressed tarfile # so that Model Registry knows where to find your model artifacts bucket_prefix='models' bucket = '<your-bucket-name>' # Provide the name of your S3 bucket model_s3_key = f"{bucket_prefix}/test.tar.gz" model_url= f"s3://{bucket}/{model_s3_key}" #Create model create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': image_uri, 'ModelDataUrl': model_url, })
    2. Konfigurasikan ContainerConfig bidang

      Selanjutnya, Anda harus mengkonfigurasi ContainerConfigbidang dengan model yang baru saja Anda buat dan tentukan parameter berikut di dalamnya:

      • Domain: Domain pembelajaran mesin model dan komponennya, seperti visi komputer atau pemrosesan bahasa alami.

      • TaskTugas pembelajaran mesin yang diselesaikan model, seperti klasifikasi gambar atau deteksi objek.

      • PayloadConfig: Konfigurasi untuk payload untuk pekerjaan rekomendasi. Untuk informasi selengkapnya tentang subbidang, lihatRecommendationJobPayloadConfig.

      • Framework: Kerangka pembelajaran mesin dari gambar wadah, seperti PyTorch.

      • FrameworkVersion: Versi kerangka gambar kontainer.

      • (Opsional)SupportedInstanceTypes: Daftar jenis instance yang digunakan untuk menghasilkan kesimpulan secara real-time.

      Jika Anda menggunakan SupportedInstanceTypes parameter, Inference Recommender membatasi ruang pencarian untuk jenis instance selama pekerjaan. Default Gunakan parameter ini jika Anda memiliki batasan anggaran atau mengetahui ada sekumpulan tipe instance tertentu yang dapat mendukung model dan gambar kontainer Anda.

      Dalam contoh kode berikut, kita menggunakan parameter yang didefinisikan sebelumnya, bersama denganNearestModelName, untuk mendefinisikan kamus yang digunakan sebagai masukan ke CreateInferenceRecommendationsJobAPI.

      ## Uncomment if you did not store the domain and task in a previous step #ml_domain = 'COMPUTER_VISION' #ml_task = 'IMAGE_CLASSIFICATION' ## Uncomment if you did not store the framework and framework version in a previous step #framework = 'PYTORCH' #framework_version = '1.7.1' # The name of the ML model as standardized by common model zoos nearest_model_name = 'resnet18' # The supported MIME types for input and output data. In this example, # we are using images as input input_content_type='image/jpeg' # Optional: Used for optimizing your model using SageMaker Neo # PyTorch uses NCHW format for images data_input_configuration = "[[1,3,256,256]]" # Create a dictionary to use as input for creating an inference recommendation job container_config = { "Domain": ml_domain, "Framework": framework.upper(), "FrameworkVersion": framework_version, "NearestModelName": nearest_model_name, "PayloadConfig": { "SamplePayloadUrl": sample_payload_url, "SupportedContentTypes": [ input_content_type ] }, "DataInputConfig": data_input_configuration "Task": ml_task, }