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. Pipa inferensi di Amazon SageMaker
Anda dapat mendaftarkan model dengan pipeline inferensi, dengan menentukan kontainer 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)
Topik
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 create_model_package
API operasi.
# 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 create_model_package
API operasi, 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.
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 IAM sumber daya 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 KMS kunci 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.
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
— Grup ARN 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 IAM sumber daya 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.
AmazonECR, Amazon S3, dan AWS KMS kebijakan ditunjukkan dalam contoh kode berikut.
Contoh ECR kebijakan Amazon
{ "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))