Criar um endpoint multimodelo - SageMaker IA da Amazon

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

Você pode usar o console de SageMaker IA ou o AWS SDK for 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 for 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.

Criar um endpoint multimodelo (console)

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/.

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

  3. Em Nome do modelo, insira um nome.

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

  5. 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.
  6. 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). Para obter mais informações sobre o NVIDIA Triton Inference Server, consulte Usar o Triton Inference Server com IA. SageMaker

  7. Escolha Criar modelo.

  8. Implante seu endpoint multimodelo como faria com um endpoint de modelo único. Para obter instruções, consulte Implante o modelo nos serviços de hospedagem de SageMaker IA.

Crie um endpoint multimodelo usando com o CPUs AWS SDK for Python (Boto3)

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 create_model, create_endpoint_config, da 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.

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. Neste exemplo, usamos o algoritmo integrado Algoritmo k-nearest neighbors (k-NN). Chamamos a função utilitária do SageMaker Python SDK 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' }
  2. Obtenha um cliente de AWS SDK for 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])
  3. (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.

  4. (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] )
  5. 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.

  6. 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 for Python (Boto3)

Utilize a seguinte seção para criar um endpoint multimodelo com compatibilidade com GPU: Você cria um endpoint multimodelo usando o Amazon SageMaker AI create_model, create_endpoint_config, e da 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).

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.

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. 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 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"}, }
  2. Obtenha um cliente de AWS SDK for 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])
  3. (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.

  4. (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] )
  5. 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' } ] )
  6. Crie o endpoint multimodelo usando os parâmetros EndpointName e EndpointConfigName.

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