Daftarkan Versi Model - Amazon SageMaker

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

Daftarkan Versi Model

Anda dapat mendaftarkan SageMaker model Amazon dengan membuat versi model yang menentukan grup model yang menjadi miliknya. Versi model harus mencakup artefak model (bobot terlatih model) dan kode inferensi untuk model tersebut.

Pipa inferensi adalah SageMaker model yang terdiri dari urutan linier dari dua hingga lima belas kontainer yang memproses permintaan inferensi. Anda mendaftarkan pipeline inferensi dengan menentukan kontainer dan variabel lingkungan terkait. Untuk informasi lebih lanjut tentang pipa inferensi, lihat. Model host bersama dengan logika pra-pemrosesan sebagai pipa inferensi serial di belakang satu titik akhir

Anda dapat mendaftarkan model dengan pipeline inferensi, dengan menentukan wadah dan variabel lingkungan terkait. Untuk membuat versi model dengan pipeline inferensi dengan menggunakan konsol Amazon SageMaker Studio, atau dengan membuat langkah dalam pipeline pembuatan SageMaker model, gunakan langkah-langkah berikut. AWS SDK for Python (Boto3)

Daftarkan Versi Model (SageMakerPipelines)

Untuk mendaftarkan versi model dengan menggunakan pipa bangunan SageMaker model, buat RegisterModel langkah dalam pipeline Anda. Untuk informasi tentang membuat RegisterModel langkah sebagai bagian dari pipeline, lihatLangkah 8: Tentukan RegisterModel Langkah untuk Membuat Paket Model.

Daftarkan Versi Model (Boto3)

Untuk mendaftarkan versi model dengan menggunakan Boto3, hubungi operasi create_model_package API.

Pertama, Anda mengatur kamus parameter untuk diteruskan ke operasi create_model_package API.

# Specify the model source model_url = "s3://your-bucket-name/model.tar.gz" modelpackage_inference_specification = { "InferenceSpecification": { "Containers": [ { "Image": image_uri, "ModelDataUrl": model_url } ], "SupportedContentTypes": [ "text/csv" ], "SupportedResponseMIMETypes": [ "text/csv" ], } } # Alternatively, you can specify the model source like this: # modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url create_model_package_input_dict = { "ModelPackageGroupName" : model_package_group_name, "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)", "ModelApprovalStatus" : "PendingManualApproval" } create_model_package_input_dict.update(modelpackage_inference_specification)

Kemudian Anda memanggil operasi create_model_package API, meneruskan kamus parameter yang baru saja Anda atur.

create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict) model_package_arn = create_model_package_response["ModelPackageArn"] print('ModelPackage Version ARN : {}'.format(model_package_arn))

Daftarkan Versi Model (konsol)

Untuk mendaftarkan versi model di konsol Amazon SageMaker Studio, selesaikan langkah-langkah berikut berdasarkan apakah Anda menggunakan Studio atau Studio Classic.

Studio
  1. Buka konsol SageMaker Studio dengan mengikuti petunjuk di Luncurkan Amazon SageMaker Studio.

  2. Di panel navigasi kiri, pilih Model dari menu.

  3. Pilih tab Model terdaftar, jika belum dipilih.

  4. Tepat di bawah label tab Model terdaftar, pilih Grup Model, jika belum dipilih.

  5. Pilih Daftar, lalu pilih Versi model.

  6. Dalam formulir versi model Register, masukkan informasi berikut:

    • Di dropdown nama grup Model, pilih nama grup model yang menjadi milik versi Anda.

    • (Opsional) Masukkan deskripsi untuk versi model Anda.

    • Di menu tarik-turun Status Persetujuan Model, pilih status persetujuan versi.

    • (Opsional) Di bidang Metadata khusus, pilih + Tambahkan baru dan tambahkan tag khusus sebagai pasangan nilai kunci.

  7. Pilih Selanjutnya.

  8. Dalam formulir Spesifikasi Inferensi, masukkan informasi berikut:

    • Di Inference image location (ECR), masukkan lokasi gambar inferensi ECR Anda.

    • Di lokasi artefak Model (S3), masukkan lokasi bucket Amazon S3 dari artefak data model Anda.

    • Untuk menentukan dan memasukkan konfigurasi data atau variabel lingkungan, pilih Konfigurasi tambahan dan masukkan informasi ini.

    • Untuk menambahkan lebih banyak wadah, pilih + Tambahkan wadah.

    • Dalam tipe instance inferensi Realtime, masukkan tipe instance yang akan digunakan untuk inferensi waktu nyata.

    • Dalam jenis instance inferensi Transform, masukkan tipe instance yang akan digunakan untuk transformasi batch.

    • Di Jenis konten yang didukung, masukkan jenis MIME masukan Anda.

    • Di jenis konten respons yang didukung, masukkan jenis MIME keluaran Anda.

  9. Pilih Selanjutnya.

  10. Dalam formulir Rekomendasi Inferensi opsional, masukkan informasi berikut:

    • Untuk masalah Bisnis, pilih aplikasi yang berlaku untuk model Anda.

    • Untuk Tugas, pilih jenis masalah yang berlaku untuk model Anda.

    • Untuk alamat bucket S3, masukkan lokasi bucket Amazon S3 dari muatan sampel Anda.

    • Untuk wadah pertama, masukkan informasi berikut:

      • Untuk nama Model, masukkan nama model seperti yang digunakan di kebun binatang model.

      • Untuk Framework, pilih kerangka kerja.

      • Untuk versi Framework, masukkan versi kerangka kerja.

    • Ulangi langkah sebelumnya untuk semua kontainer.

  11. Pilih Selanjutnya.

  12. Pilih kotak centang di samping satu atau beberapa metrik model yang ditampilkan.

  13. Pilih Selanjutnya.

  14. Pastikan pengaturan yang ditampilkan sudah benar, dan pilih Daftar versi model. Jika Anda kemudian melihat jendela modal dengan pesan kesalahan, pilih Lihat (di sebelah pesan) untuk melihat sumber kesalahan.

  15. Konfirmasikan versi model baru Anda muncul di halaman grup model induk.

Studio Classic
  1. Masuk ke Amazon SageMaker Studio Classic. Untuk informasi selengkapnya, lihat Meluncurkan Amazon SageMaker Studio Classic.

  2. Di panel navigasi kiri, pilih ikon Beranda ( ).

  3. Pilih Model, dan kemudian registri Model.

  4. Buka formulir Register Version. Anda dapat melakukannya dengan salah satu dari dua cara berikut:

    • Pilih Tindakan, lalu pilih Buat versi model.

    • Pilih nama grup model yang ingin Anda buat versi model, lalu pilih Buat versi model.

  5. Dalam formulir versi model Register, masukkan informasi berikut:

    • Dalam dropdown nama grup paket Model, pilih nama grup model.

    • (Opsional) Masukkan deskripsi untuk versi model Anda.

    • Di menu tarik-turun Status Persetujuan Model, pilih status persetujuan versi.

    • (Opsional) Di bidang metadata kustom, tambahkan tag khusus sebagai pasangan nilai kunci.

  6. Pilih Selanjutnya.

  7. Dalam formulir Spesifikasi Inferensi, masukkan informasi berikut:

    • Masukkan lokasi gambar inferensi Anda.

    • Masukkan lokasi artefak data model Anda.

    • (Opsional) Masukkan informasi tentang gambar yang akan digunakan untuk pekerjaan inferensi transformasi dan real-time, serta jenis MIME input dan output yang didukung.

  8. Pilih Selanjutnya.

  9. (Opsional) Berikan detail untuk membantu rekomendasi titik akhir.

  10. Pilih Selanjutnya.

  11. (Opsional) Pilih metrik model yang ingin Anda sertakan.

  12. Pilih Selanjutnya.

  13. Pastikan pengaturan yang ditampilkan sudah benar, dan pilih Daftar versi model. Jika Anda kemudian melihat jendela modal dengan pesan kesalahan, pilih Lihat (di sebelah pesan) untuk melihat sumber kesalahan.

  14. Konfirmasikan versi model baru Anda muncul di halaman grup model induk.

Daftarkan Versi Model dari Akun yang Berbeda

Untuk mendaftarkan versi model dengan Grup Model yang dibuat oleh AWS akun lain, Anda harus menambahkan kebijakan AWS Identity and Access Management sumber daya lintas akun untuk mengaktifkan akun tersebut. Misalnya, satu AWS akun di organisasi Anda bertanggung jawab atas model pelatihan, dan akun lain bertanggung jawab untuk mengelola, menerapkan, dan memperbarui model. Anda membuat kebijakan sumber daya IAM dan menerapkan kebijakan ke sumber daya akun tertentu yang ingin Anda berikan akses untuk kasus ini. Untuk informasi selengkapnya tentang kebijakan sumber daya lintas akun AWS, lihat Logika evaluasi kebijakan lintas akun di AWS Identity and Access Management Panduan Pengguna.

catatan

Anda juga harus menggunakan kunci KMS untuk mengenkripsi tindakan konfigurasi data keluaran selama pelatihan untuk penerapan model lintas akun.

Untuk mengaktifkan registri model lintas akun SageMaker, Anda harus menyediakan kebijakan sumber daya lintas akun untuk Grup Model yang berisi versi model. Berikut ini adalah contoh yang membuat kebijakan lintas akun untuk Grup Model dan menerapkan kebijakan ini ke sumber daya tertentu tersebut.

Konfigurasi berikut harus diatur dalam akun sumber yang mendaftarkan model lintas akun di Grup Model. Dalam contoh ini, akun sumber adalah akun pelatihan model yang akan melatih dan kemudian mendaftarkan akun silang model ke dalam Model Registry dari akun Model Registry.

Contoh mengasumsikan bahwa Anda sebelumnya mendefinisikan variabel berikut:

  • sm_client- Klien SageMaker Boto3.

  • model_package_group_name— Grup Model yang ingin Anda berikan aksesnya.

  • model_package_group_arn— ARN Grup Model tempat Anda ingin memberikan akses lintas akun.

  • bucket- Bucket Amazon S3 tempat artefak pelatihan model disimpan.

Untuk dapat menerapkan model yang dibuat di akun yang berbeda, pengguna harus memiliki peran yang memiliki akses ke SageMaker tindakan, seperti peran dengan kebijakan AmazonSageMakerFullAccess terkelola. Untuk informasi tentang kebijakan SageMaker terkelola, lihatAWS Kebijakan Terkelola untuk Amazon SageMaker.

Kebijakan sumber daya IAM yang diperlukan

Diagram berikut menangkap kebijakan yang diperlukan untuk memungkinkan pendaftaran model lintas akun. Seperti yang ditunjukkan, kebijakan ini harus aktif selama pelatihan model untuk mendaftarkan model dengan benar ke dalam akun Model Registry.

Kebijakan yang diperlukan untuk mendaftarkan model di seluruh akun.

Amazon ECR, Amazon S3, AWS KMS dan kebijakan ditunjukkan dalam contoh kode berikut.

Contoh kebijakan Amazon ECR

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{model_registry_account}:root" }, "Action": [ "ecr:BatchGetImage", "ecr:Describe*" ] } ] }

Contoh kebijakan Amazon S3

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{model_registry_account}:root" }, "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetObjectAcl" ], "Resource": "arn:aws:s3:::{bucket}/*" } ] }

AWS KMS Kebijakan sampel

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{model_registry_account}:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" } ] }

Menerapkan kebijakan sumber daya ke akun

Konfigurasi kebijakan berikut menerapkan kebijakan yang dibahas di bagian sebelumnya dan harus dimasukkan ke dalam akun pelatihan model.

import json # The Model Registry account id of the Model Group model_registry_account = "111111111111" # The model training account id where training happens model_training_account = "222222222222" # 1. Create a policy for access to the ECR repository # in the model training account for the Model Registry account Model Group ecr_repository_policy = {"Version": "2012-10-17", "Statement": [{"Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": f"arn:aws:iam::{model_registry_account}:root" }, "Action": [ "ecr:BatchGetImage", "ecr:Describe*" ] }] } # Convert the ECR policy from JSON dict to string ecr_repository_policy = json.dumps(ecr_repository_policy) # Set the new ECR policy ecr = boto3.client('ecr') response = ecr.set_repository_policy( registryId = model_training_account, repositoryName = "decision-trees-sample", policyText = ecr_repository_policy ) # 2. Create a policy in the model training account for access to the S3 bucket # where the model is present in the Model Registry account Model Group bucket_policy = {"Version": "2012-10-17", "Statement": [{"Sid": "AddPerm", "Effect": "Allow", "Principal": {"AWS": f"arn:aws:iam::{model_registry_account}:root" }, "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetObjectAcl" ], "Resource": "arn:aws:s3:::{bucket}/*" }] } # Convert the S3 policy from JSON dict to string bucket_policy = json.dumps(bucket_policy) # Set the new bucket policy s3 = boto3.client("s3") response = s3.put_bucket_policy( Bucket = bucket, Policy = bucket_policy) # 3. Create the KMS grant for the key used during training for encryption # in the model training account to the Model Registry account Model Group client = boto3.client("kms") response = client.create_grant( GranteePrincipal=model_registry_account, KeyId=kms_key_id Operations=[ "Decrypt", "GenerateDataKey", ], )

Konfigurasi berikut perlu dimasukkan ke dalam akun Model Registry di mana Grup Model ada.

# The Model Registry account id of the Model Group model_registry_account = "111111111111" # 1. Create policy to allow the model training account to access the ModelPackageGroup model_package_group_policy = {"Version": "2012-10-17", "Statement": [ { "Sid": "AddPermModelPackageVersion", "Effect": "Allow", "Principal": {"AWS": f"arn:aws:iam::{model_training_account}:root"}, "Action": ["sagemaker:CreateModelPackage"], "Resource": f"arn:aws:sagemaker:{region}:{model_registry_account}:model-package/{model_package_group_name}/*" } ] } # Convert the policy from JSON dict to string model_package_group_policy = json.dumps(model_package_group_policy) # Set the new policy response = sm_client.put_model_package_group_policy( ModelPackageGroupName = model_package_group_name, ResourcePolicy = model_package_group_policy)

Terakhir, gunakan create_model_package tindakan dari akun pelatihan model untuk mendaftarkan paket model di akun silang.

# Specify the model source model_url = "s3://{bucket}/model.tar.gz" #Set up the parameter dictionary to pass to the create_model_package API operation modelpackage_inference_specification = { "InferenceSpecification": { "Containers": [ { "Image": f"{model_training_account}.dkr.ecr.us-east-2.amazonaws.com/decision-trees-sample:latest", "ModelDataUrl": model_url } ], "SupportedContentTypes": [ "text/csv" ], "SupportedResponseMIMETypes": [ "text/csv" ], } } # Alternatively, you can specify the model source like this: # modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url create_model_package_input_dict = { "ModelPackageGroupName" : model_package_group_arn, "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)", "ModelApprovalStatus" : "PendingManualApproval" } create_model_package_input_dict.update(modelpackage_inference_specification) # Create the model package in the Model Registry account create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict) model_package_arn = create_model_package_response["ModelPackageArn"] print('ModelPackage Version ARN : {}'.format(model_package_arn))