

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cree su propio contenedor para terminales SageMaker multimodelo de IA
<a name="build-multi-model-build-container"></a>

Consulte las siguientes secciones para incorporar su propio contenedor y sus dependencias a los puntos de conexión multimodelo.

**Topics**
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU](#build-multi-model-container-cpu)
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por GPU](#build-multi-model-container-gpu)
+ [Usa el kit de herramientas de inferencia de IA SageMaker](#multi-model-inference-toolkit)
+ [Contrato para contenedores personalizados para puntos de conexión multimodelo](mms-container-apis.md)

## Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU
<a name="build-multi-model-container-cpu"></a>

Si ninguna de las imágenes de contenedor prediseñadas satisface sus necesidades, puede crear su propio contenedor para usarlo con puntos de conexión multimodelo respaldados por CPU.

Se espera que las imágenes personalizadas de Amazon Elastic Container Registry (Amazon ECR) implementadas en SageMaker Amazon AI cumplan con el contrato básico descrito [Código de inferencia personalizado con los servicios de alojamiento](your-algorithms-inference-code.md) en el que se rige la SageMaker forma en que la IA interactúa con un contenedor de Docker que ejecuta su propio código de inferencia. Para que un contenedor pueda cargar y servir varios modelos de forma simultánea, hay otros APIs comportamientos que se deben seguir. Este contrato adicional incluye nuevos modelos APIs para cargar, enumerar, obtener y descargar modelos, y una API diferente para invocar los modelos. También hay diferentes comportamientos en los escenarios de error que APIs es necesario respetar. Para indicar que el contenedor cumple los requisitos adicionales, puede agregar el siguiente comando al archivo de Docker:

```
LABEL com.amazonaws.sagemaker.capabilities.multi-models=true
```

SageMaker La IA también inyecta una variable de entorno en el contenedor

```
SAGEMAKER_MULTI_MODEL=true
```

Si está creando un punto de conexión multimodelo para una canalización de inferencia en serie, el archivo Docker debe tener las etiquetas necesarias para las canalizaciones de inferencia multimodelo y en serie. Para obtener más información acerca de las canalizaciones de información en serie, consulte [Ejecutar predicciones en tiempo real con una canalización de inferencia](inference-pipeline-real-time.md).

Para ayudarle a implementar estos requisitos para un contenedor personalizado, hay dos bibliotecas disponibles:
+ [Multi Model Server](https://github.com/awslabs/multi-model-server) es un marco de código abierto para ofrecer modelos de aprendizaje automático que se pueden instalar en contenedores para proporcionar la interfaz que cumpla con los requisitos del nuevo contenedor de puntos finales multimodelo. APIs Proporciona las capacidades de administración de modelos y front-end HTTP requeridas por los puntos de conexión multimodelo para alojar varios modelos dentro de un único contenedor, cargar y descargar modelos del contenedor dinámicamente y realizar inferencia en un modelo cargado especificado. También proporciona un backend conectable que admite un controlador backend personalizado conectable donde puede implementar su propio algoritmo.
+ [SageMaker AI Inference Toolkit](https://github.com/aws/sagemaker-inference-toolkit) es una biblioteca que dota al servidor multimodelo de una configuración y unos ajustes que lo hacen compatible con los puntos finales multimodelo de IA. SageMaker También le permite ajustar parámetros de rendimiento importantes, como el número de trabajadores por modelo, en función de las necesidades de su situación. 

## Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por GPU
<a name="build-multi-model-container-gpu"></a>

En la actualidad, las bibliotecas Multi Model Server y AI Inference Toolkit no admiten la funcionalidad «trae tu propio contenedor» (BYOC) en terminales multimodelo con instancias respaldadas por la GPU. SageMaker 

[Para crear puntos de conexión multimodelo con instancias respaldadas por GPU, puede utilizar el servidor de inferencia NVIDIA Triton, compatible con SageMaker IA, junto con los contenedores de [inferencia NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html).](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only) Para crear tus propias dependencias, puedes crear tu propio contenedor con el [servidor de inferencia NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) compatible con la SageMaker IA como imagen base de tu archivo de Docker:

```
FROM 301217895009.dkr.ecr.us-west-2.amazonaws.com/sagemaker-tritonserver:22.07-py3
```

**importante**  
Los contenedores con el servidor de inferencia Triton son los únicos contenedores compatibles que puede utilizar para puntos de conexión multimodelo respaldados por GPU.

## Usa el kit de herramientas de inferencia de IA SageMaker
<a name="multi-model-inference-toolkit"></a>

**nota**  
El kit de herramientas de inferencia de SageMaker IA solo es compatible con terminales multimodelo respaldados por la CPU. Actualmente, el kit de herramientas de inferencia de SageMaker IA no es compatible con los terminales multimodelo compatibles con la GPU.

Los contenedores prediseñados que admiten puntos de conexión multimodelo se muestran en [Algoritmos, marcos e instancias compatibles con puntos de conexión multimodelo](multi-model-support.md). Si desea usar cualquier otro marco o algoritmo, necesita compilar un contenedor. La forma más sencilla de hacerlo es utilizar el [kit de herramientas de inferencia de SageMaker IA](https://github.com/aws/sagemaker-inference-toolkit) para ampliar un contenedor prediseñado existente. El kit de herramientas de inferencia de SageMaker IA es una implementación para el servidor multimodelo (MMS) que crea puntos finales que se pueden implementar en la IA. SageMaker [Para ver un ejemplo de cuaderno que muestra cómo configurar e implementar un contenedor personalizado que admita terminales multimodelo en la SageMaker IA, consulte el cuaderno de muestra BYOC para terminales multimodelo.](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/multi_model_bring_your_own)

**nota**  
El kit de herramientas de inferencia de SageMaker IA solo admite controladores de modelos de Python. Si desea implementar su controlador en cualquier otro lenguaje, debe crear su propio contenedor que implemente el punto final multimodelo adicional. APIs Para obtener información, consulte [Contrato para contenedores personalizados para puntos de conexión multimodelo](mms-container-apis.md).

**Para ampliar un contenedor mediante el kit de herramientas de inferencia de SageMaker IA**

1. Cree un controlador del modelo. MMS espera un controlador del modelo, que es un archivo de Python que implementa funciones para preprocesar, obtener predicciones del modelo y procesar la salida en un controlador del modelo. Para obtener un ejemplo de un controlador del modelo, consulte [model\$1handler.py](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/model_handler.py) en el cuaderno de muestras.

1. Importe el conjunto de herramientas de inferencia y utilice su función `model_server.start_model_server` para iniciar MMS. El siguiente ejemplo procede del archivo `dockerd-entrypoint.py` del cuaderno de muestras. Observe que la llamada a `model_server.start_model_server` pasa el controlador del modelo descrito en el paso anterior:

   ```
   import subprocess
   import sys
   import shlex
   import os
   from retrying import retry
   from subprocess import CalledProcessError
   from sagemaker_inference import model_server
   
   def _retry_if_error(exception):
       return isinstance(exception, CalledProcessError or OSError)
   
   @retry(stop_max_delay=1000 * 50,
          retry_on_exception=_retry_if_error)
   def _start_mms():
       # by default the number of workers per model is 1, but we can configure it through the
       # environment variable below if desired.
       # os.environ['SAGEMAKER_MODEL_SERVER_WORKERS'] = '2'
       model_server.start_model_server(handler_service='/home/model-server/model_handler.py:handle')
   
   def main():
       if sys.argv[1] == 'serve':
           _start_mms()
       else:
           subprocess.check_call(shlex.split(' '.join(sys.argv[1:])))
   
       # prevent docker exit
       subprocess.call(['tail', '-f', '/dev/null'])
       
   main()
   ```

1. En su `Dockerfile`, copie el controlador del modelo del primer paso y especifique el archivo de Python del paso anterior como el punto de entrada en su `Dockerfile`. Las líneas siguientes son del archivo [Dockerfile](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/Dockerfile) utilizado en el cuaderno de muestras:

   ```
   # Copy the default custom service file to handle incoming data and inference requests
   COPY model_handler.py /home/model-server/model_handler.py
   
   # Define an entrypoint script for the docker image
   ENTRYPOINT ["python", "/usr/local/bin/dockerd-entrypoint.py"]
   ```

1. Compile y registre su contenedor. El siguiente guión de intérprete de comandos del cuaderno de muestras compila el contenedor y lo carga en un repositorio de Amazon Elastic Container Registry de su cuenta de AWS :

   ```
   %%sh
   
   # The name of our algorithm
   algorithm_name=demo-sagemaker-multimodel
   
   cd container
   
   account=$(aws sts get-caller-identity --query Account --output text)
   
   # Get the region defined in the current configuration (default to us-west-2 if none defined)
   region=$(aws configure get region)
   region=${region:-us-west-2}
   
   fullname="${account}.dkr.ecr.${region}.amazonaws.com/${algorithm_name}:latest"
   
   # If the repository doesn't exist in ECR, create it.
   aws ecr describe-repositories --repository-names "${algorithm_name}" > /dev/null 2>&1
   
   if [ $? -ne 0 ]
   then
       aws ecr create-repository --repository-name "${algorithm_name}" > /dev/null
   fi
   
   # Get the login command from ECR and execute it directly
   $(aws ecr get-login --region ${region} --no-include-email)
   
   # Build the docker image locally with the image name and then push it to ECR
   # with the full name.
   
   docker build -q -t ${algorithm_name} .
   docker tag ${algorithm_name} ${fullname}
   
   docker push ${fullname}
   ```

Ahora puede usar este contenedor para implementar puntos finales multimodelo en IA. SageMaker 

**Topics**
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU](#build-multi-model-container-cpu)
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por GPU](#build-multi-model-container-gpu)
+ [Usa el kit de herramientas de inferencia de IA SageMaker](#multi-model-inference-toolkit)
+ [Contrato para contenedores personalizados para puntos de conexión multimodelo](mms-container-apis.md)