[ad_1]
La implementación de modelos en el aprendizaje automático (ML) se está volviendo cada vez más compleja. No desea implementar solo un modelo de ML, sino grandes grupos de modelos de ML representados como flujos de trabajo de conjunto. Estos flujos de trabajo constan de varios modelos de ML. Producir estos modelos ML es un desafío, ya que debe cumplir con varios requisitos de rendimiento y latencia.
Amazon SageMaker admite conjuntos de una sola instancia con Triton Inference Server. Esta característica le permite ejecutar conjuntos de modelos que se ajustan a una sola instancia. Detrás de escena, SageMaker aprovecha Triton Inference Server para administrar el conjunto en cada instancia detrás del punto final para maximizar el rendimiento y la utilización del hardware con una latencia de inferencia extremadamente baja (milisegundos de un solo dígito). Triton también le permite elegir entre una amplia gama de marcos de ML compatibles (incluidos TensorFlow, PyTorch, ONNX, XGBoost y NVIDIA TensorRT) y backends de infraestructura, incluidos GPU, CPU y AWS Inferentia.
Esta función de SageMaker le permite optimizar sus cargas de trabajo evitando costosas latencias de red y aprovechando la localidad de datos y cómputo para canalizaciones de inferencia de conjunto. En esta publicación, discutimos los beneficios de usar Triton Inference Server junto con consideraciones sobre si es la opción adecuada para su carga de trabajo.
descripción general de la solución
Triton Inference Server está diseñado para permitir que los equipos implementen, ejecuten y escalen modelos de IA capacitados desde cualquier marco en cualquier infraestructura basada en GPU o CPU. Además, se ha optimizado para proporcionar una potente inferencia a gran escala con funciones como procesamiento por lotes dinámico, ejecuciones simultáneas, configuración óptima del modelo, capacidades de conjuntos de modelos y compatibilidad con entradas de transmisión.
Las cargas de trabajo deben tener en cuenta las características que ofrece Triton para garantizar que sus modelos puedan servir. Triton es compatible con varios marcos populares, incluidos TensorFlow, PyTorch, ONNX, XGBoost y NVIDIA TensorRT. Triton también es compatible con varios backends necesarios para que los algoritmos se ejecuten correctamente. Debe asegurarse de que sus modelos sean compatibles con estos backends y, si un backend no lo hace, puede usar Triton para implementar e integrar los suyos propios. También debe verificar si la versión de su algoritmo es compatible y asegurarse de que el backend relevante acepte los artefactos del modelo. Para verificar si su algoritmo particular es compatible, consulte Triton Inference Server Backend para obtener una lista de los backends admitidos de forma nativa administrados por NVIDIA.
Puede haber algunos escenarios en los que sus modelos o conjuntos de modelos no funcionen en Triton sin que se requiera más esfuerzo, p. B. cuando no hay un backend compatible de forma nativa para su algoritmo. Hay algunas otras consideraciones que deben tenerse en cuenta, p. B. El formato de la carga útil puede no ser ideal, especialmente si el tamaño de su carga útil puede ser grande para su solicitud. Como siempre, debe validar su rendimiento después de implementar estas cargas de trabajo para garantizar que se cumplan sus expectativas.
Tomemos un modelo de red neuronal para la clasificación de imágenes y veamos cómo podemos acelerar nuestras cargas de trabajo. En este ejemplo, usamos el backend NVIDIA DALI para acelerar nuestro preprocesamiento en el contexto de nuestro conjunto.
Crear conjuntos de modelos Triton
Triton Inference Server simplifica la implementación de modelos de IA a gran escala. Triton Inference Server viene con una solución práctica que simplifica la creación de canalizaciones de preprocesamiento y posprocesamiento. La plataforma Triton Inference Server proporciona el programador de conjuntos que puede usar para crear modelos de conjuntos de canalización que participen en el proceso de inferencia al tiempo que garantizan la eficiencia y optimizan el rendimiento.
Triton Inference Server sirve modelos de repositorios de modelos. Veamos el diseño del repositorio de modelos para el modelo Ensemble, que contiene el modelo de preprocesamiento DALI, el modelo TensorFlow Inception V3 y la configuración del conjunto de modelos. Cada subdirectorio contiene la información del repositorio para los modelos correspondientes. Que config.pbtxt
El archivo describe la configuración del modelo para los modelos. Cada directorio debe tener una subcarpeta numérica para cada versión del modelo y se ejecuta desde un backend específico compatible con Triton.
NVIDIA DALI
Para esta publicación, usamos la Biblioteca de carga de datos de NVIDIA (DALI) como modelo de preprocesamiento en nuestro conjunto de modelos. NVIDIA DALI es una biblioteca de preprocesamiento y carga de datos para acelerar las aplicaciones de aprendizaje profundo. Ofrece una colección de bloques de construcción optimizados para cargar y procesar datos de imagen, video y audio. Puede usarlo como un reemplazo directo portátil para cargadores de datos integrados e iteradores de datos en marcos de aprendizaje profundo populares.
El siguiente código muestra la configuración del modelo para un backend DALI:
Modelo de inicio V3
Para esta publicación, mostramos cómo se usa DALI en un conjunto de modelos con Inception V3. El modelo TensorFlow preentrenado de Inception V3 se entrega en formato GraphDef como un solo archivo llamado » model.graphdef
. Que config.pbtxt
El archivo contiene información sobre el nombre del modelo, la plataforma, max_batch_size
y contratos de entrada y salida. Recomendamos configurar el max_batch_size
Configurado a menos del tamaño de pila del modelo Inception V3. El archivo de etiquetas contiene etiquetas de clase para 1000 clases diferentes. Copiamos las etiquetas del modelo de clasificación Inception en el inception_graphdef
Directorio en el repositorio de modelos. El archivo de etiquetas contiene 1000 etiquetas de clase del conjunto de datos de clasificación de ImageNet.
conjunto tritón
El siguiente código muestra una configuración de modelo de un modelo de conjunto para el preprocesamiento DALI y la clasificación de imágenes:
Crear un punto final de SageMaker
Los terminales de SageMaker permiten el alojamiento en tiempo real cuando se requieren tiempos de respuesta de milisegundos. SageMaker maneja el trabajo pesado indiferenciado de la administración de alojamiento de modelos y tiene la capacidad de escalar automáticamente. También se proporcionan una serie de funciones, incluido el alojamiento de múltiples variantes de su modelo, las pruebas A/B de sus modelos, la integración con Amazon CloudWatch para hacer que el rendimiento del modelo sea observable y el monitoreo de la desviación del modelo.
Vamos a crear un modelo de SageMaker a partir de los artefactos del modelo que cargamos en Amazon Simple Storage Service (Amazon S3).
A continuación, también proporcionamos una variable de entorno adicional: SAGEMAKER_TRITON_DEFAULT_MODEL_NAME
, que especifica el nombre del modelo que Triton cargará. El valor de esta clave debe coincidir con el nombre de la carpeta en el paquete del modelo cargado en Amazon S3. Esta variable es opcional cuando se utiliza un solo modelo. Para los modelos Ensemble, se debe especificar esta clave para que Triton se inicie en SageMaker.
Además, puede establecer SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT
y SAGEMAKER_TRITON_THREAD_COUNT
para optimizar el número de hilos.
Usando el modelo anterior, creamos una configuración de punto final donde podemos especificar el tipo y la cantidad de instancias que queremos en el punto final:
Usaremos esta configuración de punto final para crear un nuevo punto final de SageMaker y esperar a que se complete la implementación. El estado cambia a InService si la implementación se realiza correctamente.
carga de inferencia
La imagen de carga útil de entrada pasa por la canalización DALI de preprocesamiento y se utiliza en el programador de conjuntos proporcionado por Triton Inference Server. Construimos la carga útil para pasar al punto final de inferencia:
conclusión del conjunto
Cuando el punto final se está ejecutando, podemos usar la imagen de muestra para ejecutar una solicitud de inferencia con JSON como formato de carga útil. Para el formato de solicitud de inferencia, Triton utiliza los protocolos de inferencia estándar de la comunidad KFServing.
Con el binary+json
formato, necesitamos especificar la longitud de los metadatos de la solicitud en el encabezado para que Triton pueda analizar correctamente la carga útil binaria. Esto se hace usando un encabezado de tipo de contenido personalizado application/vnd.sagemaker-triton.binary+json;json-header-size={}
.
Esto es diferente de usar un Inference-Header-Content-Length
Encabezados en un servidor Triton independiente, ya que los encabezados personalizados no están permitidos en SageMaker.
El paquete tritonclient proporciona métodos de utilidad para generar la carga útil sin necesidad de conocer los detalles de la especificación. Usamos los siguientes métodos para convertir nuestra solicitud de inferencia en un formato binario que ofrece latencias más bajas para la inferencia. Consulte el cuaderno de GitHub para obtener detalles de implementación.
Conclusión
En esta publicación, mostramos cómo puede producir conjuntos de modelos que se ejecutan en una sola instancia en SageMaker. Este patrón de diseño puede ser útil para combinar la lógica de procesamiento previo y posterior junto con las predicciones inferenciales. SageMaker usa Triton para ejecutar la inferencia de conjuntos en un solo contenedor en una instancia que admite todos los marcos principales.
Para obtener más ejemplos de conjuntos de Triton en SageMaker, consulte el repositorio de GitHub. ¡Intentalo!
Sobre los autores
parque jacob es arquitecto de soluciones en Amazon Web Services. Trabaja con Amazon.com para diseñar, desarrollar e implementar soluciones tecnológicas en AWS y tiene un interés particular en la IA y el aprendizaje automático. En su tiempo libre le gusta explorar nuevas culturas, nuevas experiencias y mantenerse al día con las últimas tendencias tecnológicas.
Vikram Elango es Arquitecto Senior de Soluciones Especializado en IA/ML en Amazon Web Services con sede en Virginia, EE. UU. Vikram apoya a los clientes en las industrias de finanzas y seguros con diseño y liderazgo de pensamiento para construir e implementar aplicaciones de aprendizaje automático a escala. Su enfoque actual es el procesamiento del lenguaje natural, la IA responsable, la optimización de la inferencia y el escalado del ML en toda la empresa. En su tiempo libre le gusta viajar, hacer caminatas, cocinar y acampar con su familia.
Saurabh Tricande es gerente sénior de productos para Amazon SageMaker Inference. Le apasiona trabajar con clientes y lo impulsa el objetivo de democratizar el aprendizaje automático. Se centra en los principales desafíos relacionados con la implementación de aplicaciones ML complejas, modelos ML multiinquilino, optimizaciones de costos y la facilitación de la implementación de modelos de aprendizaje profundo. En su tiempo libre, a Saurabh le gusta caminar, aprender sobre tecnologías innovadoras, seguir TechCrunch y pasar tiempo con su familia.
[ad_2]