Logotipo de Zephyrnet

Cómo CCC Intelligent Solutions creó un enfoque personalizado para alojar modelos complejos de IA mediante Amazon SageMaker

Fecha:

Esta publicación está coescrita por Christopher Diaz, Sam Kinard, Jaime Hidalgo y Daniel Suarez de CCC Intelligent Solutions.

En esta publicación, discutimos cómo Soluciones Inteligentes CCC (CCC) combinado Amazon SageMaker con otros servicios de AWS para crear una solución personalizada capaz de albergar los tipos de modelos complejos de inteligencia artificial (IA) previstos. CCC es una plataforma líder de software como servicio (SaaS) para la economía multimillonaria de seguros de propiedad y accidentes que impulsa las operaciones de aseguradoras, reparadores, fabricantes de automóviles, proveedores de piezas, prestamistas y más. La tecnología en la nube de CCC conecta a más de 30,000 XNUMX empresas que digitalizan flujos de trabajo, comercio y experiencias de clientes de misión crítica. Como líder de confianza en IA, Internet de las cosas (IoT), experiencia del cliente y gestión de redes y flujos de trabajo, CCC ofrece innovaciones que hacen que la vida de las personas avance cuando más importa.

El desafío

CCC procesa más de $ 1 billón de transacciones de reclamos anualmente. A medida que la compañía continúa evolucionando para integrar la IA en su catálogo de productos nuevos y existentes, esto requiere enfoques sofisticados para entrenar e implementar modelos de conjunto de aprendizaje automático (ML) multimodal para resolver necesidades comerciales complejas. Estos son una clase de modelos que encapsulan algoritmos patentados y experiencia en el dominio de la materia que CCC ha perfeccionado a lo largo de los años. Estos modelos deberían poder ingerir nuevas capas de datos matizados y reglas de clientes para crear resultados de predicción únicos. En esta publicación de blog, aprenderemos cómo CCC aprovechó el alojamiento de Amazon SageMaker y otros servicios de AWS para implementar o alojar varios modelos multimodales en una canalización de inferencia de conjunto.

Como se muestra en el siguiente diagrama, un conjunto es una colección de dos o más modelos que están orquestados para ejecutarse de manera lineal o no lineal para producir una sola predicción. Cuando se apilan linealmente, los modelos individuales de un conjunto pueden invocarse directamente para predicciones y luego consolidarse para unificación. A veces, los modelos de conjunto también se pueden implementar como una canalización de inferencia en serie.

Para nuestro caso de uso, la canalización del conjunto es estrictamente no lineal, como se muestra en el siguiente diagrama. Las canalizaciones de conjuntos no lineales son teóricamente gráficos directamente acíclicos (DAG). Para nuestro caso de uso, esta canalización de DAG tenía modelos independientes que se ejecutan en paralelo (Servicios B, C) y otros modelos que usan predicciones de pasos anteriores (Servicio D).

Una práctica que surge de la cultura impulsada por la investigación en CCC es la revisión continua de las tecnologías que se pueden aprovechar para brindar más valor a los clientes. Cuando CCC enfrentó este desafío conjunto, el liderazgo lanzó una iniciativa de prueba de concepto (POC) para evaluar minuciosamente las ofertas de AWS y descubrir, específicamente, si Amazon SageMaker y otras herramientas de AWS podrían administrar el alojamiento de modelos de IA individuales en entornos complejos y no lineales. conjuntos

El conjunto explicó: En este contexto, un conjunto es un grupo de 2 o más modelos de IA que trabajan juntos para producir 1 predicción general.

Preguntas que impulsan la investigación.

¿Se puede usar Amazon SageMaker para alojar conjuntos complejos de modelos de IA que funcionan juntos para proporcionar una predicción general? Si es así, ¿puede SageMaker ofrecer otros beneficios listos para usar, como mayor automatización, confiabilidad, monitoreo, escalado automático y medidas de ahorro de costos?

Encontrar formas alternativas de implementar los modelos de IA de CCC utilizando los avances tecnológicos de los proveedores de la nube permitirá a CCC llevar soluciones de IA al mercado más rápido que su competencia. Además, tener más de una arquitectura de implementación brinda flexibilidad al encontrar el equilibrio entre el costo y el rendimiento en función de las prioridades comerciales.

En función de nuestros requisitos, finalizamos la siguiente lista de características como una lista de verificación para una arquitectura de implementación de nivel de producción:

  • Compatibilidad con conjuntos complejos
  • Tiempo de actividad garantizado para todos los componentes
  • Escalado automático personalizable para modelos de IA implementados
  • Preservación de la entrada y salida del modelo de IA
  • Métricas de uso y registros para todos los componentes
  • Mecanismos de ahorro de costos

Dado que la mayoría de las soluciones de IA de CCC se basan en modelos de visión por computadora, se requería una nueva arquitectura para admitir archivos de imagen y video que continúan aumentando en resolución. Había una gran necesidad de diseñar e implementar esta arquitectura como un modelo asíncrono.

Después de ciclos de investigación y esfuerzos iniciales de evaluación comparativa, CCC determinó que SageMaker encajaba perfectamente para cumplir con la mayoría de sus requisitos de producción, especialmente el tiempo de actividad garantizado que SageMaker proporciona para la mayoría de sus componentes de inferencia. La característica predeterminada de los puntos de enlace de inferencia asincrónica de Amazon SageMaker que guarda la entrada/salida en Amazon S3 simplifica la tarea de conservar los datos generados a partir de conjuntos complejos. Además, dado que cada modelo de IA está alojado en su propio punto final, se vuelve más fácil administrar las políticas de escalado automático a nivel de modelo o punto final. Al simplificar la administración, un beneficio potencial de ahorro de costos de esto es que los equipos de desarrollo pueden asignar más tiempo para ajustar las políticas de escalado para minimizar el aprovisionamiento excesivo de recursos informáticos.

Habiendo decidido continuar con el uso de SageMaker como componente central de la arquitectura, también nos dimos cuenta de que SageMaker puede ser parte de una arquitectura aún más grande, complementada con muchos otros servicios administrados por AWS sin servidor. Esta elección era necesaria para facilitar las necesidades de observabilidad y orquestación de orden superior de esta arquitectura compleja.

En primer lugar, para eliminar las limitaciones de tamaño de la carga útil y reducir en gran medida el riesgo de tiempo de espera durante escenarios de alto tráfico, CCC implementó una arquitectura que ejecuta predicciones de forma asíncrona utilizando Puntos finales de inferencia asincrónica de SageMaker junto con otros servicios administrados por AWS como los componentes básicos. Además, la interfaz de usuario del sistema sigue el patrón de diseño de disparar y olvidar. En otras palabras, una vez que un usuario ha subido su entrada al sistema, no se necesita hacer nada más. Serán notificados cuando la predicción esté disponible. La siguiente figura ilustra una descripción general de alto nivel de nuestra arquitectura asíncrona basada en eventos. En la próxima sección, profundicemos en el flujo de ejecución de la arquitectura diseñada.

Solución paso-a-paso

Paso 1

Un cliente hace una solicitud al AWS API Gateway punto final El contenido de la solicitud contiene el nombre del servicio de IA del que necesitan una predicción y el método de notificación deseado.

Esta solicitud se pasa a un lambda función llamada nueva predicción, cuyas funciones principales son:

  • Comprobar si el servicio solicitado por el cliente está disponible.
  • Asigne un ID de predicción único a la solicitud. El usuario puede utilizar este ID de predicción para comprobar el estado de la predicción durante todo el proceso.
  • Generar un Amazon S3 URL prefirmada que el usuario deberá usar en el siguiente paso para cargar el contenido de entrada de la solicitud de predicción.
  • Crea una entrada en Amazon DynamoDB con la información de la solicitud recibida.

Luego, la función Lambda devolverá una respuesta a través del punto de enlace de API Gateway con un mensaje que incluye el ID de predicción asignado a la solicitud y la URL prefirmada de Amazon S3.

Paso 2

El cliente carga de forma segura el contenido de entrada de predicción en un depósito de S3 mediante la URL prefirmada generada en el paso anterior. El contenido de entrada depende del servicio de IA y puede estar compuesto por imágenes, datos tabulares o una combinación de ambos.

Paso 3

El depósito de S3 está configurado para desencadenar un evento cuando el usuario carga el contenido de entrada. Esta notificación se envía a una cola de Amazon SQS y la gestiona una función de Lambda denominada Entrada de proceso. Entrada de proceso Lambda obtendrá la información relacionada con ese ID de predicción de DynamoDB para obtener el nombre del servicio al que se realizará la solicitud.

Este servicio puede ser un único modelo de IA, en cuyo caso el Entrada de proceso Lambda realizará una solicitud al extremo de SageMaker que aloja ese modelo (Paso 3-A), o puede ser un servicio de IA conjunto, en cuyo caso el Entrada de proceso Lambda realizará una solicitud a la máquina de estado de las funciones de paso que aloja la lógica de conjunto (Paso 3-B).

En cualquiera de las opciones (modelo de IA único o servicio de IA de conjunto), cuando la predicción final esté lista, se almacenará en el depósito S3 apropiado y se notificará a la persona que llama a través del método especificado en el Paso 1 (más detalles sobre las notificaciones en el Paso 4).

Paso 3-A

Si el ID de predicción está asociado a un único modelo de IA, el Entrada de proceso Lambda realizará una solicitud al extremo de SageMaker que sirve el modelo. En este sistema, se admiten dos tipos de terminales de SageMaker:

  • Asincrónico: Los Entrada de proceso Lambda realiza la solicitud al extremo asíncrono de SageMaker. La respuesta inmediata incluye la ubicación de S3 donde SageMaker guardará el resultado de la predicción. Esta solicitud es asíncrona, sigue el patrón disparar y olvidar y no bloquea el flujo de ejecución de la función Lambda.
  • Sincrónico: Los Entrada de proceso Lambda realiza la solicitud al extremo síncrono de SageMaker. Dado que es una solicitud síncrona, Process Input espera la respuesta y, una vez obtenida, la almacena en S3 de forma análoga a como lo harían los extremos asíncronos de SageMaker.

En ambos casos (endpoints síncronos o asíncronos), la predicción se procesa de forma equivalente, almacenando la salida en un bucket de S3. Cuando el punto de enlace asíncrono de SageMaker completa una predicción, se activa un evento de Amazon SNS. Este comportamiento también se replica para los puntos finales sincrónicos con lógica adicional en la función de Lambda.

Paso 3-B

Si el ID de predicción está asociado con un conjunto de IA, el Entrada de proceso Lambda hará la solicitud a la función de paso asociada a ese AI Ensemble. Como se mencionó anteriormente, un AI Ensemble es una arquitectura basada en un grupo de modelos de IA que trabajan juntos para generar una única predicción general. La orquestación de un conjunto de IA se realiza a través de una función de paso.

La función de paso tiene un paso por servicio de IA que comprende el conjunto. Cada paso invocará una función Lambda que preparará la entrada de su servicio de IA correspondiente utilizando diferentes combinaciones del contenido de salida de llamadas de servicio de IA anteriores de pasos anteriores. Luego hace una llamada a cada servicio de IA que, en este contexto, puede ser un solo modelo de IA u otro conjunto de IA.

La misma función Lambda, llamada ObtenerTransformarLlamada utilizado para manejar las predicciones intermedias de un AI Ensemble se utiliza en toda la función de paso, pero con diferentes parámetros de entrada para cada paso. Esta entrada incluye el nombre del servicio AI que se llamará. También incluye la definición de asignación para construir la entrada para el servicio de IA especificado. Esto se hace usando una sintaxis personalizada que Lambda puede decodificar, que en resumen, es un diccionario JSON donde los valores deben reemplazarse con el contenido de las predicciones de IA anteriores. Lambda descargará estas predicciones anteriores de Amazon S3.

En cada paso, el ObtenerTransformarLlamada Lambda lee de Amazon S3 las salidas anteriores que se necesitan para construir la entrada del servicio de IA especificado. A continuación, invocará el Nueva predicción Código Lambda utilizado anteriormente en el Paso 1 y proporcione el nombre del servicio, el método de devolución de llamada ("función de paso") y el token necesario para la devolución de llamada en la carga útil de la solicitud, que luego se guarda en DynamoDB como un nuevo registro de predicción. Lambda también almacena la entrada creada de esa etapa en un depósito S3. Dependiendo de si esa etapa es un modelo de IA único o un conjunto de IA, Lambda realiza una solicitud a un punto final de SageMaker o a una función de paso diferente que administra un conjunto de IA que es una dependencia del conjunto principal.

Una vez que se realiza la solicitud, la función de paso ingresa a un estado pendiente hasta que recibe el token de devolución de llamada que indica que puede pasar a la siguiente etapa. La acción de enviar un token de devolución de llamada se realiza mediante una función Lambda llamada notificaciones (más detalles en el Paso 4) cuando la predicción intermedia esté lista. Este proceso se repite para cada etapa definida en la función de paso hasta que la predicción final esté lista.

Paso 4

Cuando una predicción está lista y almacenada en el depósito de S3, se activa una notificación de SNS. Este evento se puede desencadenar de diferentes maneras dependiendo del flujo:

  1. Automáticamente cuando un extremo asíncrono de SageMaker completa una predicción.
  2. Como el último paso de la función de paso.
  3. By Entrada de proceso or ObtenerTransformarLlamada Lambda cuando un extremo sincrónico de SageMaker ha devuelto una predicción.

Para B y C, creamos un mensaje SNS similar al que A envía automáticamente.

Una función de Lambda denominada notificaciones está suscrita a este tema de SNS. Las notificaciones Lambda obtendrán la información relacionada con el ID de predicción de DynamoDB, actualizarán la entrada con el valor de estado a "completado" o "error" y realizarán la acción necesaria según el modo de devolución de llamada guardado en el registro de la base de datos.

Si esta predicción es una predicción intermedia de un conjunto de IA, como se describe en el paso 3-B, el modo de devolución de llamada asociado a esta predicción será "función de paso" y el registro de la base de datos tendrá un token de devolución de llamada asociado con el paso específico en el función de paso. La Lambda de notificaciones realizará una llamada a la API de AWS Step Functions utilizando el método "SendTaskSuccess" o "SendTaskFailure". Esto permitirá que la función de paso continúe con el siguiente paso o salga.

Si la predicción es el resultado final de la función de paso y el modo de devolución de llamada es "Webhook" [o correo electrónico, intermediarios de mensajes (Kafka), etc.], las notificaciones de Lambda notificarán al cliente de la manera especificada. En cualquier momento, el usuario puede solicitar el estado de su predicción. La solicitud debe incluir el ID de predicción que se asignó en el Paso 1 y apuntar a la URL correcta dentro de API Gateway para enrutar la solicitud a la función de Lambda llamada dE TRATAMIENTOS.

Los resultados Lambda realizará una solicitud a DynamoDB, obteniendo el estado de la solicitud y devolviendo la información al usuario. Si el estado de la predicción es error, los detalles relevantes sobre la falla se incluirán en la respuesta. Si el estado de predicción es comercial, se devolverá una URL prefirmada de S3 para que el usuario descargue el contenido de la predicción.

Resultados

Los resultados preliminares de las pruebas de rendimiento son prometedores y respaldan el caso de que CCC amplíe la implementación de esta nueva arquitectura de implementación.

Observaciones notables:

  • Las pruebas revelan la solidez en el procesamiento de solicitudes simultáneas o por lotes con un alto rendimiento y una tasa de fallas del 0 por ciento durante escenarios de alto tráfico.
  • Las colas de mensajes brindan estabilidad dentro del sistema durante las afluencias repentinas de solicitudes hasta que los disparadores de escala pueden proporcionar recursos informáticos adicionales. Al triplicar el tráfico, la latencia de solicitud promedio solo aumentó en un 3 por ciento.
  • El precio de la estabilidad es una mayor latencia debido a la sobrecarga de comunicación entre los diversos componentes del sistema. Cuando el tráfico de usuarios está por encima del umbral de referencia, la latencia adicional se puede mitigar parcialmente al proporcionar más recursos informáticos si el rendimiento es una prioridad más alta que el costo.
  • Los puntos finales de inferencia asíncrona de SageMaker permiten escalar a cero el recuento de instancias mientras mantienen el punto final activo para recibir solicitudes. Esta funcionalidad permite que las implementaciones continúen ejecutándose sin incurrir en costos de cómputo y escalar desde cero cuando sea necesario en dos escenarios: implementaciones de servicios utilizadas en entornos de prueba más bajos y aquellas que tienen un tráfico mínimo sin requerir un procesamiento inmediato.

Conclusión

Como se observó durante el proceso de POC, el diseño innovador creado conjuntamente por CCC y AWS proporciona una base sólida para usar Amazon SageMaker con otros servicios administrados de AWS para alojar complejos conjuntos de IA multimodales y orquestar canalizaciones de inferencia de manera eficaz y sin problemas. Al aprovechar las funcionalidades listas para usar de Amazon SageMaker, como la inferencia asincrónica, CCC tiene más oportunidades para centrarse en tareas críticas especializadas para el negocio. En el espíritu de la cultura impulsada por la investigación de CCC, esta arquitectura novedosa continuará evolucionando a medida que CCC lidera el camino, junto con AWS, en el lanzamiento de nuevas y poderosas soluciones de IA para los clientes.

Para conocer los pasos detallados sobre cómo crear, invocar y monitorear puntos finales de inferencia asíncrona, consulte el documentación, que también contiene un cuaderno de muestra para ayudarte a empezar. Para obtener información sobre precios, visite Precios de Amazon SageMaker.

Para ver ejemplos sobre el uso de la inferencia asincrónica con datos no estructurados, como la visión por computadora y el procesamiento del lenguaje natural (NLP), consulte Ejecute inferencias de visión por computadora en videos grandes con puntos de enlace asíncronos de Amazon SageMaker y Mejore la investigación de alto valor con Hugging Face y los puntos finales de inferencia asíncrona de Amazon SageMaker, respectivamente.


Acerca de los autores

Cristóbal Díaz es ingeniero principal de I+D en CCC Intelligent Solutions. Como miembro del equipo de I+D, ha trabajado en una variedad de proyectos que van desde herramientas ETL, desarrollo web back-end, colaborando con investigadores para entrenar modelos de IA en sistemas distribuidos y facilitando la entrega de nuevos servicios de IA entre equipos de investigación y operaciones. Su enfoque reciente ha sido la investigación de soluciones de herramientas en la nube para mejorar varios aspectos del ciclo de vida de desarrollo del modelo de IA de la empresa. En su tiempo libre, le gusta probar nuevos restaurantes en su ciudad natal de Chicago y coleccionar tantos juegos de LEGO como pueda caber en su casa. Christopher obtuvo su Licenciatura en Ciencias de la Computación de la Universidad del Noreste de Illinois.

Ganador del premio Emmy sam kinard es Gerente Senior de Ingeniería de Software en CCC Intelligent Solutions. Con sede en Austin, Texas, se ocupa del AI Runtime Team, que es responsable de servir los productos de IA de CCC con alta disponibilidad y a gran escala. En su tiempo libre, Sam disfruta de la falta de sueño debido a sus dos maravillosos hijos. Sam tiene una Licenciatura en Ciencias de la Computación y una Licenciatura en Ciencias Matemáticas de la Universidad de Texas en Austin.

jaime hidalgo es ingeniero sénior de sistemas en CCC Intelligent Solutions. Antes de unirse al equipo de investigación de IA, dirigió la migración global de la empresa a la arquitectura de microservicios, diseñando, construyendo y automatizando la infraestructura en AWS para respaldar la implementación de productos y servicios en la nube. Actualmente, construye y respalda un clúster de centro de datos en las instalaciones creado para la capacitación en IA y también diseña y construye soluciones en la nube para el futuro de la investigación y el despliegue de IA de la empresa.

Daniel Suárez es ingeniero de ciencia de datos en CCC Intelligent Solutions. Como miembro del equipo de Ingeniería de IA, trabaja en la automatización y preparación de Modelos de IA en la producción, evaluación y monitoreo de métricas y otros aspectos de las operaciones de ML. Daniel recibió una Maestría en Ciencias de la Computación del Instituto de Tecnología de Illinois y una Maestría y Licenciatura en Ingeniería de Telecomunicaciones de la Universidad Politécnica de Madrid.

Arunprasath Shankar es un arquitecto sénior de soluciones de inteligencia artificial/aprendizaje automático en AWS, que ayuda a los clientes globales a escalar sus soluciones de inteligencia artificial de manera eficaz y eficiente en la nube. En su tiempo libre, Arun disfruta viendo películas de ciencia ficción y escuchando música clásica.

Justin McWhirter es gerente de arquitectura de soluciones en AWS. Trabaja con un equipo de increíbles arquitectos de soluciones que ayudan a los clientes a tener una experiencia positiva al adoptar la plataforma de AWS. Cuando no está en el trabajo, a Justin le gusta jugar videojuegos con sus dos hijos, jugar al hockey sobre hielo y hacer todoterreno en su Jeep.

punto_img

Información más reciente

punto_img