Criar um modelo
O exemplo a seguir mostra como criar um usando o AWS SDK for Python (Boto3). As primeiras linhas definem:
sagemaker_client: um objeto cliente de baixo nível do SageMaker AI que facilita o envio e o recebimento de solicitações de serviços da AWS.sagemaker_role: uma variável de string com o nome do recurso da Amazon (ARN) do perfil do IAM do SageMaker AI.aws_region: uma variável de string com o nome da sua região 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/*"
Em seguida, especifique a localização do modelo pré-treinado armazenado no Amazon S3. Neste exemplo, usamos um modelo pré-treinado do XGBoost chamado demo-xgboost-model.tar.gz. O URI completo do Amazon S3 é armazenado em uma variável de string 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 um contêiner primário. Para o contêiner principal, você especifica a imagem do Docker que contém o código de inferência, os artefatos (do treinamento anterior) e um mapa do ambiente personalizado que o código de inferência usa quando você implanta o modelo para predições.
Neste exemplo, especificamos uma imagem de contêiner do algoritmo integrado do XGBoost:
from sagemaker import image_uris # Specify an AWS container image. container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')
Criar um modelo no Amazon SageMaker AI com CreateModel. Especifique o seguinte:
ModelName: um nome para seu modelo (neste exemplo, ele é armazenado como uma variável de string chamadamodel_name).ExecutionRoleArn: o nome do recurso da Amazon (ARN) do perfil do IAM que o Amazon SageMaker AI pode aceitar para acessar artefatos de modelo e imagem do Docker para implantação em instâncias de computação de ML ou para trabalhos de transformação de lote.PrimaryContainer: A localização da imagem do Docker primária que contém código de inferência, artefatos associados e mapas de ambiente personalizado usado pelo código de inferência quando o modelo é implantado para predições.
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 a descrição CreateModel no Guia de referência da API SageMaker para obter uma lista completa dos parâmetros de API.
Se estiver usando um contêiner fornecido pelo SageMaker AI, poderá aumentar os valores padrão de tempo limite do servidor de modelo e de carga útil para os valores máximos permitidos pelo framework definindo variáveis de ambiente nesta etapa. Talvez você não consiga aproveitar o tempo limite máximo e os tamanhos de carga útil que a inferência assíncrona é compatível com se não definir explicitamente essas variáveis. O exemplo a seguir mostra como você pode definir as variáveis de ambiente para um contêiner de inferência do PyTorch baseado no 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' }, })
Quando terminar de criar seu endpoint, verifique se definiu as variáveis de ambiente corretamente imprimindo-as do seu script inference.py. A tabela a seguir lista as variáveis de ambiente de uma série de estruturas que você pode definir para alterar os valores padrão.
| Framework | Variáveis de ambiente |
|---|---|
|
PyTorch 1.8 (baseado no TorchServe) |
'TS_MAX_REQUEST_SIZE': '100000000' 'TS_MAX_RESPONSE_SIZE': '100000000' 'TS_DEFAULT_RESPONSE_TIMEOUT': '1000' |
|
PyTorch 1.4 (baseado em MMS) |
'MMS_MAX_REQUEST_SIZE': '1000000000' 'MMS_MAX_RESPONSE_SIZE': '1000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT': '900' |
|
Contêiner de inferência HuggingFace (baseado em MMS) |
'MMS_MAX_REQUEST_SIZE': '2000000000' 'MMS_MAX_RESPONSE_SIZE': '2000000000' 'MMS_DEFAULT_RESPONSE_TIMEOUT': '900' |