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.
Temas
- Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU
- Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por GPU
- Usa el kit de herramientas de inferencia de IA SageMaker
- Contrato para contenedores personalizados para 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.
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
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
-
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_server
para iniciar MMS. El siguiente ejemplo procede del archivodockerd-entrypoint.py
del cuaderno de muestras. Observe que la llamada amodel_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()
-
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