Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat mendaftarkan model SageMaker AI Amazon dengan membuat versi model yang menentukan grup model yang menjadi miliknya. Versi model harus menyertakan artefak model (bobot terlatih model) dan opsional kode inferensi untuk model tersebut.
Pipa inferensi adalah model SageMaker AI yang terdiri dari urutan linier 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. Pipa inferensi di Amazon AI SageMaker
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 model SageMaker AI, gunakan langkah-langkah berikut. AWS SDK for Python (Boto3)
Topik
Daftarkan Versi Model (SageMaker AI Pipelines)
Untuk mendaftarkan versi model dengan menggunakan pipeline pembuatan model SageMaker AI, 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 (Studio atau Studio Klasik)
Untuk mendaftarkan versi model di konsol Amazon SageMaker Studio, selesaikan langkah-langkah berikut berdasarkan apakah Anda menggunakan Studio atau Studio Classic.
-
Buka konsol SageMaker Studio dengan mengikuti petunjuk di Luncurkan Amazon SageMaker Studio.
-
Di panel navigasi kiri, pilih Model dari menu.
-
Pilih tab Model terdaftar, jika belum dipilih.
-
Tepat di bawah label tab Model terdaftar, pilih Grup Model dan Model saya, jika belum dipilih.
-
PilihPendaftaran. Ini akan membuka halaman model Register.
-
Ikuti petunjuk yang diberikan di halaman model Daftar.
-
Setelah Anda meninjau pilihan Anda, pilih Daftar. Setelah selesai, Anda akan dibawa ke halaman Ikhtisar versi model.
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.
Untuk mengaktifkan kemampuan ditemukan lintas akun, yang memungkinkan akun lain melihat grup paket model dari akun pemilik sumber daya, lihat. Kemampuan untuk ditemukan lintas akun
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 di SageMaker AI, 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.
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
- SageMaker Klien AI 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 tindakan SageMaker AI, seperti peran dengan kebijakan AmazonSageMakerFullAccess
terkelola. Untuk informasi tentang kebijakan yang dikelola SageMaker AI, lihatAWS kebijakan terkelola untuk Amazon SageMaker AI.
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.

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
}/*",
"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))