

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criar um endpoint multimodelo
<a name="create-multi-model-endpoint"></a>

Você pode usar o console de SageMaker IA ou o AWS SDK para Python (Boto) para criar um endpoint multimodelo. Para criar um endpoint baseado em CPU ou GPU por meio do console, consulte o procedimento do console nas seções a seguir. Se você quiser criar um endpoint multimodelo com o AWS SDK para Python (Boto), use o procedimento de CPU ou GPU nas seções a seguir. Os fluxos de trabalho da CPU e da GPU são semelhantes, mas têm várias diferenças, como os requisitos de contêiner.

**Topics**
+ [Criar um endpoint multimodelo (console)](#create-multi-model-endpoint-console)
+ [Crie um endpoint multimodelo usando com o CPUs AWS SDK para Python (Boto3)](#create-multi-model-endpoint-sdk-cpu)
+ [Crie um endpoint multimodelo usando com o GPUs AWS SDK para Python (Boto3)](#create-multi-model-endpoint-sdk-gpu)

## Criar um endpoint multimodelo (console)
<a name="create-multi-model-endpoint-console"></a>

Você pode criar endpoints multimodelo com compatibilidade com CPU e GPU por meio do console. Use o procedimento a seguir para criar um endpoint multimodelo por meio do console de SageMaker IA.

**Como criar um endpoint multimodelo (console)**

1. Abra o console do Amazon SageMaker AI em [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Escolha **Modelo**. No grupo **Inferência**, escolha **Criar modelo**. 

1. Em **Nome do modelo**, insira um nome.

1. Para **Perfil do IAM**, escolha ou crie um perfil do IAM que tenha a política `AmazonSageMakerFullAccess` do IAM anexada. 

1.  Na seção **Definição do contêiner** para **Fornecer opções de imagem de inferência e artefatos de modelo**, escolha **Usar vários modelos**.  
![\[A seção da página Criar modelo onde você pode escolher Usar vários modelos.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/mme-create-model-ux-2.PNG)

1. Para a **imagem de contêiner de inferência**, insira o caminho do Amazon ECR para a imagem de contêiner desejada.

   Para modelos de GPU, você deve usar um contêiner com compatibilidade com NVIDIA Triton Inference Server. Para obter uma lista de imagens de contêiner que funcionam com endpoints compatíveis com GPU, consulte os [contêineres de inferência NVIDIA Triton (somente suporte para SM)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only). Para obter mais informações sobre o NVIDIA Triton Inference Server, consulte [Usar o Triton Inference](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) Server com IA. SageMaker 

1. Escolha **Criar modelo**.

1. Implante seu endpoint multimodelo como faria com um endpoint de modelo único. Para instruções, consulte [Implante o modelo nos serviços de hospedagem de SageMaker IA](ex1-model-deployment.md#ex1-deploy-model).

## Crie um endpoint multimodelo usando com o CPUs AWS SDK para Python (Boto3)
<a name="create-multi-model-endpoint-sdk-cpu"></a>

Use a seção a seguir para criar um endpoint multimodelo com compatibilidade com instâncias de CPU. Você cria um endpoint multimodelo usando o Amazon SageMaker AI [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model), [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config), da [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) APIs mesma forma que criaria um endpoint de modelo único, mas com duas alterações. Ao definir o contêiner do modelo, você precisa passar um novo `Mode` valor de parâmetro, `MultiModel`. Você também precisa passar o campo `ModelDataUrl` que especifica o prefixo do Amazon S3 em que os artefatos do modelo estão localizados, em vez do caminho para um artefato de modelo único como faria ao implantar um único modelo.

Para um exemplo de notebook que usa SageMaker IA para implantar vários XGBoost modelos em um endpoint, consulte Notebook de amostra de [endpoint XGBoost multimodelo](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html). 

O procedimento a seguir descreve as principais etapas usadas nesse exemplo para criar um endpoint multimodelo apoiado por CPU.

**Para implantar o modelo (AWS SDK para Python (Boto 3))**

1. Obtenha um contêiner com uma imagem que ofereça compatibilidade com a implantação de endpoints multimodelo. Para obter uma lista de algoritmos integrados e contêineres de framework que oferecem apoio a endpoints multimodelo, consulte [Algoritmos, frameworks e instâncias compatíveis para endpoints multimodelo](multi-model-support.md). Neste exemplo, usamos o algoritmo integrado [Algoritmo k-nearest neighbors (k-NN)](k-nearest-neighbors.md). Chamamos a função utilitária do [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html) `image_uris.retrieve()` para obter o endereço da imagem do algoritmo integrado K-Nearest Neighbors.

   ```
   import sagemaker
   region = sagemaker_session.boto_region_name
   image = sagemaker.image_uris.retrieve("knn",region=region)
   container = { 
                 'Image':        image,
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel'
               }
   ```

1. Obtenha um cliente de AWS SDK para Python (Boto3) SageMaker IA e crie o modelo que usa esse contêiner.

   ```
   import boto3
   sagemaker_client = boto3.client('sagemaker')
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container])
   ```

1. (Opcional) Se você estiver usando um pipeline de inferência serial, obtenha os contêineres adicionais para inclusão no pipeline e inclua-os no argumento `Containers` do `CreateModel`:

   ```
   preprocessor_container = { 
                  'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>'
               }
   
   multi_model_container = { 
                 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>',
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel'
               }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [preprocessor_container, multi_model_container]
               )
   ```
**nota**  
Você pode usar somente um multi-model-enabled endpoint em um pipeline de inferência serial.

1. (Opcional) Se o seu caso de uso não se beneficia do cache de modelo, defina o valor do campo `ModelCacheSetting` do parâmetro `MultiModelConfig` como `Disabled` e inclua-o no argumento `Container` da chamada para `create_model`. O valor do campo `ModelCacheSetting` é `Enabled` por padrão.

   ```
   container = { 
                   'Image': image, 
                   'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                   'Mode': 'MultiModel' 
                   'MultiModelConfig': {
                           // Default value is 'Enabled'
                           'ModelCacheSetting': 'Disabled'
                   }
              }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container]
               )
   ```

1. Configure o endpoint multimodelo para o modelo. Recomendamos configurar seus endpoints com pelo menos duas instâncias. Isso permite que a SageMaker IA forneça um conjunto altamente disponível de previsões em várias zonas de disponibilidade para os modelos.

   ```
   response = sagemaker_client.create_endpoint_config(
                   EndpointConfigName = '<ENDPOINT_CONFIG_NAME>',
                   ProductionVariants=[
                        {
                           'InstanceType':        'ml.m4.xlarge',
                           'InitialInstanceCount': 2,
                           'InitialVariantWeight': 1,
                           'ModelName':            '<MODEL_NAME>',
                           'VariantName':          'AllTraffic'
                         }
                   ]
              )
   ```
**nota**  
Você pode usar somente um multi-model-enabled endpoint em um pipeline de inferência serial.

1. Crie o endpoint multimodelo usando os parâmetros `EndpointName` e `EndpointConfigName`.

   ```
   response = sagemaker_client.create_endpoint(
                 EndpointName       = '<ENDPOINT_NAME>',
                 EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')
   ```

## Crie um endpoint multimodelo usando com o GPUs AWS SDK para Python (Boto3)
<a name="create-multi-model-endpoint-sdk-gpu"></a>

Utilize a seguinte seção para criar um endpoint multimodelo com compatibilidade com GPU: Você cria um endpoint multimodelo usando o Amazon SageMaker AI [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model), [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config), e da [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) APIs mesma forma que cria endpoints de modelo único, mas há várias mudanças. Ao definir o contêiner do modelo, você precisa passar um novo `Mode` valor de parâmetro, `MultiModel`. Você também precisa passar o campo `ModelDataUrl` que especifica o prefixo do Amazon S3 em que os artefatos do modelo estão localizados, em vez do caminho para um artefato de modelo único como faria ao implantar um único modelo. Para endpoints multimodelo baseados em GPU, você também deve usar um contêiner com o NVIDIA Triton Inference Server que seja otimizado para execução em instâncias de GPU. Para obter uma lista de imagens de contêiner que funcionam com endpoints compatíveis com GPU, consulte os [contêineres de inferência NVIDIA Triton (somente suporte para SM)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only).

Para ver um exemplo de caderno que demonstra como criar um endpoint multimodelo apoiado por GPUs, consulte [Executar vários modelos de aprendizado profundo com endpoints multimodelo (MME) de SageMaker IA da GPUs Amazon](https://github.com/aws/amazon-sagemaker-examples/blob/main/multi-model-endpoints/mme-on-gpu/cv/resnet50_mme_with_gpu.ipynb).

O procedimento a seguir destaca as etapas principais para criar um endpoints multimodelo com compatibilidade com GPUs.

**Para implantar o modelo (AWS SDK para Python (Boto 3))**

1. Defina a imagem de contêiner. Para criar um endpoint multimodelo com suporte de GPU para ResNet modelos, defina o contêiner para usar a imagem do [NVIDIA Triton Server](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html). Esse contêiner oferece apoio a endpoints multimodelo e é otimizado para execução em instâncias de GPU. Chamamos a função utilitária [SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html) `image_uris.retrieve()` para obter o endereço da imagem. Por exemplo:

   ```
   import sagemaker
   region = sagemaker_session.boto_region_name
   
   // Find the sagemaker-tritonserver image at 
   // https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-triton/resnet50/triton_resnet50.ipynb
   // Find available tags at https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only
   
   image = "<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/sagemaker-tritonserver:<TAG>".format(
       account_id=account_id_map[region], region=region
   )
   
   container = { 
                 'Image':        image,
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel',
                 "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "resnet"},
               }
   ```

1. Obtenha um cliente de AWS SDK para Python (Boto3) SageMaker IA e crie o modelo que usa esse contêiner.

   ```
   import boto3
   sagemaker_client = boto3.client('sagemaker')
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container])
   ```

1. (Opcional) Se você estiver usando um pipeline de inferência serial, obtenha os contêineres adicionais para inclusão no pipeline e inclua-os no argumento `Containers` do `CreateModel`:

   ```
   preprocessor_container = { 
                  'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>'
               }
   
   multi_model_container = { 
                 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>',
                 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                 'Mode':         'MultiModel'
               }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [preprocessor_container, multi_model_container]
               )
   ```
**nota**  
Você pode usar somente um multi-model-enabled endpoint em um pipeline de inferência serial.

1. (Opcional) Se o seu caso de uso não se beneficia do cache de modelo, defina o valor do campo `ModelCacheSetting` do parâmetro `MultiModelConfig` como `Disabled` e inclua-o no argumento `Container` da chamada para `create_model`. O valor do campo `ModelCacheSetting` é `Enabled` por padrão.

   ```
   container = { 
                   'Image': image, 
                   'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>',
                   'Mode': 'MultiModel' 
                   'MultiModelConfig': {
                           // Default value is 'Enabled'
                           'ModelCacheSetting': 'Disabled'
                   }
              }
   
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container]
               )
   ```

1. Configurar o Endpoints de vários modelos com instâncias compatíveis com GPU para o modelo. Recomendamos configurar seus endpoints com mais de uma instância para permitir alta disponibilidade e maiores ocorrências no cache.

   ```
   response = sagemaker_client.create_endpoint_config(
                   EndpointConfigName = '<ENDPOINT_CONFIG_NAME>',
                   ProductionVariants=[
                        {
                           'InstanceType':        'ml.g4dn.4xlarge',
                           'InitialInstanceCount': 2,
                           'InitialVariantWeight': 1,
                           'ModelName':            '<MODEL_NAME>',
                           'VariantName':          'AllTraffic'
                         }
                   ]
              )
   ```

1. Crie o endpoint multimodelo usando os parâmetros `EndpointName` e `EndpointConfigName`.

   ```
   response = sagemaker_client.create_endpoint(
                 EndpointName       = '<ENDPOINT_NAME>',
                 EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')
   ```