Creación de un modelo
En el ejemplo siguiente, se muestra cómo crear un modelo usando AWS SDK para Python (Boto3). Las primeras líneas definen:
sagemaker_client: un objeto del cliente de SageMaker AI de bajo nivel que facilita el envío y la recepción de solicitudes a servicios de AWS.sagemaker_role: una variable de cadena con el nombre de recurso de Amazon (ARN) del rol de IAM de SageMaker AI.aws_region: una variable de cadena con el nombre de su región de AWS.
import boto3 # Specify your AWS Region aws_region='<aws_region>'# Create a low-level SageMaker service client. sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Role to give SageMaker permission to access AWS services. sagemaker_role= "arn:aws:iam::<account>:role/*"
A continuación, especifique la ubicación del modelo prentrenado almacenado en Amazon S3. En este ejemplo, usamos un modelo XGBoost prentrenado llamado demo-xgboost-model.tar.gz. El URI completo de Amazon S3 se almacena en una variable de cadena model_url:
#Create a variable w/ the model S3 URI s3_bucket ='<your-bucket-name>'# Provide the name of your S3 bucket bucket_prefix='saved_models' model_s3_key = f"{bucket_prefix}/demo-xgboost-model.tar.gz" #Specify S3 bucket w/ model model_url = f"s3://{s3_bucket}/{model_s3_key}"
Especifique un contenedor principal. Para el contenedor principal, especifique la imagen de Docker que contiene el código de inferencia, los artefactos (del entrenamiento previo) y un mapa de entorno personalizado que el código de inferencia utiliza al implementar el modelo para las predicciones.
En este ejemplo, especificamos una imagen de contenedor de algoritmo integrado de XGBoost:
from sagemaker import image_uris # Specify an AWS container image. container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')
Cree un modelo en Amazon SageMaker AI con CreateModel. Especifique lo siguiente:
ModelName: un nombre para el modelo (en este ejemplo, se almacena como una variable de cadena llamadamodel_name).ExecutionRoleArn: el nombre de recurso de Amazon (ARN) del rol de IAM que Amazon SageMaker AI puede asumir para obtener acceso a los artefactos del modelo y a imágenes de Docker para su implementación en instancias de cómputo de ML o para trabajos de transformación por lotes.PrimaryContainer: la ubicación de la imagen de Docker principal que contiene el código de inferencia, los artefactos asociados y mapas de entorno personalizados que el código de inferencia utiliza cuando el modelo se implementa para predicciones.
model_name ='<The_name_of_the_model>'#Create model create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': container, 'ModelDataUrl': model_url, })
Consulte la descripción de CreateModel en la Guía de referencia de la API de SageMaker para obtener una lista completa de los parámetros de la API.
Si utiliza un contenedor proporcionado por SageMaker AI, puede aumentar el tiempo de espera y los tamaños de carga útil del servidor de modelos, desde los valores predeterminados hasta los máximos admitidos por el marco, configurando las variables de entorno en este paso. Es posible que no pueda aprovechar el tiempo de espera y los tamaños de carga máximos que admite la inferencia asíncrona si no establece estas variables de forma explícita. En el siguiente ejemplo, se muestra cómo puede establecer las variables de entorno para un contenedor de inferencia de PyTorch basado en TorchServe.
model_name ='<The_name_of_the_model>'#Create model create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': container, 'ModelDataUrl': model_url, 'Environment': { 'TS_MAX_REQUEST_SIZE': '100000000', 'TS_MAX_RESPONSE_SIZE': '100000000', 'TS_DEFAULT_RESPONSE_TIMEOUT': '1000' }, })
Cuando termine de crear el punto de conexión, debería probar que haya configurado las variables de entorno correctamente; para ello, imprímalas desde su script inference.py. En la siguiente tabla, se enumeran las variables de entorno de varios marcos que puede configurar para cambiar los valores predeterminados.
| Marcos | Variables de entorno |
|---|---|
|
PyTorch 1.8 (basado en TorchServe) |
'TS_MAX_REQUEST_SIZE': '100000000' 'TS_MAX_RESPONSE_SIZE': '100000000' 'TS_DEFAULT_RESPONSE_TIMEOUT': '1000' |
|
PyTorch 1.4 (basado en MMS) |
'MMS_MAX_REQUEST_SIZE': '1000000000' 'MMS_MAX_RESPONSE_SIZE': '1000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT': '900' |
|
HuggingFace Inference Container (basado en MMS) |
'MMS_MAX_REQUEST_SIZE': '2000000000' 'MMS_MAX_RESPONSE_SIZE': '2000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT': '900' |