Registro de una versión del modelo - Amazon SageMaker

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 Alojamiento de modelos junto con la lógica de preprocesamiento como una canalización de inferencia en serie detrás de un punto de conexión.

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.

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 operación create_model_package API.

En primer lugar, debe configurar el diccionario de parámetros para pasarlo a la operación de la 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)

A continuación, llamas a la operación de la create_model_package API y pasas al diccionario de parámetros que acabas 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))

Registra una versión del modelo (consola)

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.

Studio
  1. Abre la consola de SageMaker Studio siguiendo las instrucciones de Launch Amazon SageMaker Studio.

  2. En el panel de navegación izquierdo, selecciona Modelos en el menú.

  3. Seleccione la pestaña Modelos registrados, si aún no la ha seleccionado.

  4. Justo debajo de la etiqueta de la pestaña Modelos registrados, elija Grupos de modelos, si aún no lo ha seleccionado.

  5. Seleccione Registrar y, a continuación, elija la versión del modelo.

  6. En el formulario Registrar la versión del modelo, ingrese la siguiente información:

    • En el menú desplegable Nombre del grupo de modelos, seleccione el nombre del grupo de modelos al que pertenece su versión.

    • Escriba una descripción para la versión del modelo (opcional).

    • En el menú desplegable Estado de aprobación del modelo, seleccione el estado de aprobación de la versión.

    • (Opcional) En el campo Metadatos personalizados, elija + Añadir nuevas y añada etiquetas personalizadas como pares clave-valor.

  7. Elija Siguiente.

  8. En el formulario de Especificación de inferencia, ingrese la siguiente información:

    • En Ubicación de la imagen de inferencia (ECR), introduzca la ubicación de la imagen de inferencia del ECR.

    • En Ubicación del artefacto del modelo (S3), introduzca la ubicación del depósito de Amazon S3 de los artefactos de datos del modelo.

    • Para especificar e introducir variables de entorno o de configuración de datos, elija Configuración adicional e introduzca esta información.

    • Para añadir más contenedores, seleccione + Añadir contenedor.

    • En Tipo de instancia de inferencia en tiempo real, introduzca el tipo de instancia que se utilizará para la inferencia en tiempo real.

    • En el tipo de instancia de inferencia de transformación, introduzca el tipo de instancia que se utilizará para las transformaciones por lotes.

    • En Tipos de contenido compatibles, introduce los tipos MIME de entrada.

    • En Tipos de contenido de respuesta compatibles, introduce los tipos MIME de salida.

  9. Elija Siguiente.

  10. En el formulario de recomendación de inferencia opcional, introduzca la siguiente información:

    • En Business Problem, elija la aplicación que se aplique a su modelo.

    • En Tarea, elija el tipo de problema que se aplica a su modelo.

    • En el caso de la dirección del depósito de S3, introduzca la ubicación del depósito de Amazon S3 de la carga útil de muestra.

    • Para el primer contenedor, introduzca la siguiente información:

      • En Nombre del modelo, introduzca el nombre del modelo tal como se usa en los zoológicos modelo.

      • En Framework, elija un framework.

      • Para la versión Framework, introduzca una versión Framework.

    • Repita el paso anterior para todos los contenedores.

  11. Elija Siguiente.

  12. Seleccione la casilla de verificación situada junto a una o más de las métricas del modelo que se muestran.

  13. Elija Siguiente.

  14. Asegúrese de que la configuración mostrada sea correcta y elija Registrar la versión del modelo. Si posteriormente ve una ventana modal con un mensaje de error, seleccione Ver (junto al mensaje) para ver el origen del error.

  15. Confirme que la nueva versión del modelo aparezca en la página del grupo de modelos principal.

Studio Classic
  1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte Lanzamiento de Amazon SageMaker Studio Classic.

  2. En el panel de navegación izquierdo, elija el icono de Inicio ( ).

  3. Elija Modelos y, a continuación, Registro de modelos.

  4. Abra el formulario Registrar versión. Puede hacerlo de una de las dos formas siguientes:

    • Elija Acciones y, a continuación, elija Crear versión del modelo.

    • Seleccione el nombre del grupo de modelos para el que desea crear una versión del modelo y, a continuación, elija Crear versión del modelo.

  5. En el formulario Registrar la versión del modelo, ingrese la siguiente información:

    • En el menú desplegable Nombre del grupo de paquetes de modelos, seleccione el nombre del grupo de modelos.

    • Escriba una descripción para la versión del modelo (opcional).

    • En el menú desplegable Estado de aprobación del modelo, seleccione el estado de aprobación de la versión.

    • (Opcional) En el campo Metadatos personalizados, añada etiquetas personalizadas como pares clave-valor.

  6. Elija Siguiente.

  7. En el formulario de Especificación de inferencia, ingrese la siguiente información:

    • Ingrese la ubicación de la imagen de inferencia.

    • Ingrese la ubicación de los artefactos de los datos del modelo.

    • (Opcional) Introduzca información sobre las imágenes que desee utilizar en los trabajos de transformación e inferencia en tiempo real, así como los tipos MIME de entrada y salida compatibles.

  8. Elija Siguiente.

  9. Proporcione detalles para facilitar las recomendaciones de puntos de conexión (opcional).

  10. Elija Siguiente.

  11. Elija las métricas del modelo que desee incluir (opcional).

  12. Elija Siguiente.

  13. Asegúrese de que la configuración mostrada sea correcta y elija Registrar la versión del modelo. Si posteriormente ve una ventana modal con un mensaje de error, seleccione Ver (junto al mensaje) para ver el origen del error.

  14. Confirme que la nueva versión del modelo aparezca en la página del grupo de modelos principal.

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 recursos de IAM 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 debe usar una clave de KMS para cifrar la acción de configuración de los datos de salida durante el entrenamiento para la implementación de un modelo entre cuentas.

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 ARN del grupo modelo 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 acerca de las políticas administradas de SageMaker , consulte AWS Políticas gestionadas para Amazon SageMaker.

Políticas de recursos de IAM 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.

Las políticas necesarias para registrar los modelos en todas las cuentas.

En los siguientes ejemplos de código se muestran Amazon ECR, Amazon S3 y las AWS KMS políticas.

Ejemplo de política de 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*" ] } ] }

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 política AWS KMS

{ "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}/*" }] } # 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))