Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Registro de una versión del modelo
Puedes registrar un SageMaker modelo de Amazon creando una versión del modelo que especifique el grupo de modelos al que pertenece. La versión del modelo debe incluir tanto los artefactos del modelo (los pesos entrenados de un modelo) como el código de inferencia del modelo.
Una canalización de inferencia es un SageMaker modelo compuesto por una secuencia lineal de dos a quince contenedores que procesan las solicitudes de inferencia. Para registrar una canalización de inferencia, especifique los contenedores y las variables de entorno asociadas. Para obtener más información sobre las canalizaciones de inferencia, consulte Canalizaciones de inferencia en Amazon SageMaker.
Para registrar un modelo con una canalización de inferencia, especifique los contenedores y las variables de entorno asociadas. Para crear una versión del modelo con una canalización de inferencia mediante la AWS SDK for Python (Boto3) consola de Amazon SageMaker Studio o mediante la creación de un paso en una canalización de creación de SageMaker modelos, siga estos pasos.
Temas
Registre una versión del modelo (SageMakerPipelines)
Para registrar una versión del modelo mediante una canalización de creación de SageMaker modelos, cree un RegisterModel
paso en la canalización. Para obtener más información sobre cómo crear un paso RegisterModel
como parte de una canalización, consulte Paso 8: Defina un RegisterModel paso para crear un paquete modelo.
Registrar una versión del modelo (Boto3)
Para registrar una versión del modelo mediante Boto3, llame a la create_model_package
API operación.
En primer lugar, debe configurar el diccionario de parámetros para pasarlos a la create_model_package
API operación.
# 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)
A continuación, llama a la create_model_package
API operación e introduce el diccionario de parámetros que acaba de configurar.
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))
Registre una versión de modelo (Studio o Studio Classic)
Para registrar una versión modelo en la consola de Amazon SageMaker Studio, complete los siguientes pasos en función de si utiliza Studio o Studio Classic.
Registrar una versión del modelo desde una cuenta diferente
Para registrar versiones de modelos en un grupo de modelos creado por una AWS cuenta diferente, debe agregar una política de AWS Identity and Access Management recursos multicuenta para habilitar esa cuenta. Por ejemplo, una AWS cuenta de su organización es responsable del entrenamiento de los modelos y otra cuenta es responsable de administrar, implementar y actualizar los modelos. En este caso, debe crear políticas de IAM recursos y aplicarlas al recurso de cuenta específico al que desea conceder acceso. Para obtener más información sobre las políticas de recursos multicuentas AWS, consulte la Lógica de evaluación de políticas multicuentas en la Guía del AWS Identity and Access Management usuario.
nota
También debes usar una KMS clave para cifrar la acción de configuración de los datos de salida durante el entrenamiento para implementar un modelo multicuenta.
Para habilitar el registro del modelo multicuenta SageMaker, debe proporcionar una política de recursos multicuenta para el grupo de modelos que contenga las versiones del modelo. A continuación se muestra un ejemplo en el que se crean políticas entre cuentas para el grupo de modelos y se aplican a ese recurso específico.
La siguiente configuración debe establecerse en la cuenta de origen que registra los modelos entre cuentas en un grupo de modelos. En este ejemplo, la cuenta de origen es la cuenta de entrenamiento del modelo que entrenará y, a continuación, registrará la cuenta cruzada del modelo en el registro de modelos de la cuenta del registro de modelos.
En el ejemplo se supone que ha definido previamente las siguientes variables:
-
sm_client
— Un cliente de SageMaker Boto3. -
model_package_group_name
— El grupo de modelos al que desea conceder acceso. -
model_package_group_arn
— El grupo modelo ARN al que desea conceder acceso entre cuentas. -
bucket
— El depósito de Amazon S3 donde se almacenan los artefactos de entrenamiento del modelo.
Para poder implementar un modelo creado en una cuenta diferente, el usuario debe tener un rol que tenga acceso a SageMaker las acciones, como un rol con la política AmazonSageMakerFullAccess
administrada. Para obtener información sobre las políticas SageMaker administradas, consulteAWS Políticas gestionadas para Amazon SageMaker.
Políticas de IAM recursos obligatorias
El siguiente diagrama muestra las políticas necesarias para permitir el registro de modelos entre cuentas. Como se muestra, estas políticas deben estar activas durante el entrenamiento del modelo para registrar correctamente el modelo en la cuenta del registro de modelos.
AmazonECR, Amazon S3 y AWS KMS las políticas se muestran en los siguientes ejemplos de código.
Ejemplo de ECR política de Amazon
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{
model_registry_account
}:root" }, "Action": [ "ecr:BatchGetImage", "ecr:Describe*" ] } ] }
Ejemplo de política de 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
}/*" } ] }
Ejemplo de AWS KMS política
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{
model_registry_account
}:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" } ] }
Aplicar políticas de recursos a las cuentas
La siguiente configuración de políticas aplica las políticas descritas en la sección anterior y debe incluirse en la cuenta de entrenamiento de modelos.
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", ], )
La siguiente configuración debe colocarse en la cuenta del registro de modelos donde se encuentra el grupo de modelos.
# 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)
Por último, utilice la acción create_model_package
de la cuenta de entrenamiento de modelos para registrar el paquete de modelos en la cuenta cruzada.
# 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))