Criar um endpoint de vários modelos - Amazon SageMaker

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 de vários modelos

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

Criar um endpoint multimodelo (console)

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

Como criar um endpoint de vários modelos (console)
  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. Escolha Model (Modelo). No grupo Inference (Inferência), escolha Create model (Criar modelo).

  3. Em Model name (Nome do modelo), insira um nome.

  4. Para IAMfunção, escolha ou crie uma IAM função que tenha a AmazonSageMakerFullAccess IAM política 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 na qual você pode escolher Usar vários modelos.
  6. Para a imagem do contêiner Inference, insira o ECR caminho da Amazon para a imagem de contêiner desejada.

    Para GPU modelos, você deve usar um contêiner apoiado pelo NVIDIA Triton Inference Server. Para obter uma lista de imagens de contêiner que funcionam com endpoints GPU protegidos, consulte os NVIDIATriton Inference Containers (somente suporte para SM). Para obter mais informações sobre o NVIDIA Triton Inference Server, consulte Usar o Triton Inference Server com. SageMaker

  7. Escolha Criar modelo.

  8. Implante seu endpoint de vários modelos como faria com um endpoint de modelo único. Para obter instruções, consulte Implante o modelo em serviços SageMaker de hospedagem.

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

Use a seção a seguir para criar um endpoint multimodelo apoiado por CPU instâncias. Você cria um endpoint multimodelo usando o Amazon SageMaker create_model, create_endpoint_config, e da create_endpointAPIsmesma 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 usado SageMaker 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 nessa amostra para criar um endpoint multimodelo CPU suportado.

Para implantar o modelo (AWS SDKpara Python (Boto 3))
  1. Obtenha um contêiner com uma imagem que ofereça suporte à implantação de endpoints de vários modelos. Para obter uma lista de algoritmos integrados e contêineres de framework que oferecem suporte a endpoints de vários modelos, consulte Algoritmos, frameworks e instâncias compatíveis. Neste exemplo, usamos o algoritmo integrado Algoritmo k-nearest neighbors (k-NN). Chamamos a função SDK utilitária SageMaker Python 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 AWS SDK for Python (Boto3) SageMaker cliente 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 de vários modelos para o modelo. Recomendamos configurar seus endpoints com pelo menos duas instâncias. Isso permite SageMaker fornecer 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 de vários modelos 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)

Use a seção a seguir para criar um endpoint multimodelo GPU suportado. Você cria um endpoint multimodelo usando o Amazon SageMaker create_model, create_endpoint_config, e da create_endpointAPIsmesma 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 GPU suportados, você também deve usar um contêiner com o NVIDIA Triton Inference Server que seja otimizado para execução em instâncias. GPU Para obter uma lista de imagens de contêiner que funcionam com endpoints GPU protegidos, consulte os NVIDIATriton Inference Containers (somente suporte para SM).

Para ver um exemplo de notebook que demonstra como criar um endpoint multimodelo apoiado porGPUs, consulte Executar vários modelos de aprendizado profundo com os endpoints multimodelo GPUs da Amazon SageMaker (). MME

O procedimento a seguir descreve as principais etapas para criar um endpoint multimodelo GPU suportado.

Para implantar o modelo (AWS SDKpara Python (Boto 3))
  1. Defina a imagem de contêiner. Para criar um endpoint multimodelo com GPU suporte para ResNet modelos, defina o contêiner para usar a imagem do NVIDIATriton Server. Esse contêiner oferece suporte a endpoints de vários modelos e é otimizado para execução em GPU instâncias. Chamamos a função SDK utilitária do SageMaker Python 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 AWS SDK for Python (Boto3) SageMaker cliente 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 com instâncias GPU apoiadas 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 de vários modelos usando os parâmetros EndpointName e EndpointConfigName.

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