Cree su propio contenedor para terminales SageMaker multimodelo de IA - Amazon SageMaker AI

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

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

Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU

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 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 sea capaz de cargar y servir varios modelos de forma simultánea, hay otros comportamientos que deben APIs seguirse. Este contrato adicional incluye nuevos modelos APIs para cargar, enumerar, obtener y descargar modelos, y una API diferente para invocar 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.

Para ayudarle a implementar estos requisitos para un contenedor personalizado, hay dos bibliotecas disponibles:

  • 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 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

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. Para crear tus propias dependencias, puedes crear tu propio contenedor con el servidor de inferencia NVIDIA Triton 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

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

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 más información, consulte Contrato para contenedores personalizados para puntos de conexión multimodelo.

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_handler.py en el cuaderno de muestras.

  2. 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()
  3. 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 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"]
  4. 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