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.
Construya su propio contenedor para terminales de SageMaker IA Multi-Model
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 API y comportamientos adicionales que se deben seguir. Este contrato adicional incluye nuevas API para cargar, enumerar, obtener y descargar modelos, así como una API distinta para invocar modelos. También hay distintos comportamientos para situaciones de error que deben cumplir las API. 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 Ejecute Real-time predicciones con una canalización de inferencias.
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 servir modelos de machine learning que se pueden instalar en contenedores para proporcionar el front-end que cumpla los requisitos de las nuevas API de contenedor de punto de conexión multimodelo. 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 El kit de herramientas de inferencia de IA
es una biblioteca que incorpora una configuración y unos ajustes que lo hacen compatible con SageMaker los puntos finales multimodelo de IA. 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.
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.
Pre-built Los contenedores que admiten puntos finales 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
nota
El kit de herramientas de inferencia de SageMaker IA solo admite controladores de modelos de Python. Si desea implementar el controlador en cualquier otro lenguaje, debe compilar su propio contenedor que implemente API de puntos de conexión multimodelo adicionales. Para obtener información, consulte Contrato de contenedores personalizado para terminales Multi-Model.
Para ampliar un contenedor mediante el kit de herramientas de inferencia de IA SageMaker
-
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. -
Importe el conjunto de herramientas de inferencia y utilice su función
model_server.start_model_serverpara iniciar MMS. El siguiente ejemplo procede del archivodockerd-entrypoint.pydel cuaderno de muestras. Observe que la llamada amodel_server.start_model_serverpasa 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() -
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 suDockerfile. Las líneas siguientes son del archivo Dockerfileutilizado 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"] -
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