Fusión de solicitudes de ML mediante el uso de SQS y multiprocesamiento: hacia la IA

Estás leyendo la publicación: Fusión de solicitudes de ML mediante el uso de SQS y multiprocesamiento: hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

Consideremos un sitio que tiene muchos usuarios y predice si hay perros en las fotos publicadas. Necesitamos poner en cola y procesar todas las solicitudes entrantes y dar resultados a los usuarios en poco tiempo.

En mis experimentos con Flask, no obtuve los resultados que quería y se ve un poco como una caja negra. Con el aprendizaje profundo, hemos aprendido que las GPU no son solo para juegos. Aunque las GPU son óptimas para el entrenamiento, pueden encontrar limitaciones en la inferencia.

Podemos desbloquear el poder de múltiples CPU para acelerar la predicción.

En este artículo se discutirán y presentarán estos temas:

  • Qué es SQS y por qué usarlo
  • Por qué usar multiprocesamiento
  • Un experimento y código

¿Qué es SQS?

SQS es un servicio de cola de mensajes completamente administrado de Amazon que le permite desacoplar y hacer crecer microservicios, sistemas distribuidos y aplicaciones sin servidor. SQS elimina la complejidad y el gasto de administrar y operar middleware orientado a mensajes, lo que permite a los desarrolladores concentrarse en un trabajo único. Puede transmitir, almacenar y recibir mensajes a través de componentes de software utilizando SQS en cualquier volumen sin perder mensajes ni necesitar la disponibilidad de otros servicios.

SQS proporciona dos tipos diferentes de colas de mensajes. Las colas estándar proporcionan un alto rendimiento, pedidos de mejor esfuerzo y entrega al menos una vez. Las colas SQS FIFO están diseñadas para garantizar que los mensajes se procesen solo una vez, en la secuencia en que se reciben.

🔥 Recomendado:  ¿Cuál es un buen salario para una persona soltera?

¿Cuáles son los beneficios de Amazon SQS?

Durabilidad: Para garantizar la seguridad de sus mensajes, Amazon SQS los almacena en varios servidores. Las colas estándar admiten la entrega de mensajes al menos una vez y las colas FIFO admiten el procesamiento de mensajes exactamente una vez.

Disponibilidad: Amazon SQS utiliza una infraestructura redundante para brindar acceso altamente simultáneo a los mensajes y alta disponibilidad para producir y consumir mensajes.

Escalabilidad: Amazon SQS puede procesar cada solicitud almacenada en búfer de forma independiente, escalando de forma transparente para manejar cualquier aumento o pico de carga sin instrucciones de aprovisionamiento.

Fiabilidad: Amazon SQS bloquea sus mensajes durante el procesamiento para que varios productores puedan enviar y varios consumidores puedan recibir mensajes al mismo tiempo.

Paga por lo que usas: Cuando usa SQS, solo se le cobra por los mensajes que lee y escribe (consulte los detalles en la sección Precios). No hay tarifas recurrentes o base.

AWS SQS — Sondeo largo: Cuando un consumidor solicita un mensaje de la cola, opcionalmente puede “esperar” a que lleguen los mensajes y, si no hay nada en la cola, esto se denomina sondeo prolongado. Long Polling reduce la cantidad de llamadas API realizadas a SQS y aumenta la eficiencia y la latencia de su aplicación. El tiempo de espera puede ser de 1 segundo a 20 segundos. El sondeo largo es preferible al sondeo corto. El sondeo largo se puede habilitar en el nivel de la cola o en el nivel de la API mediante WaitTimeSeconds.

Selección de instancias para la eficacia

Hay instancias en AWS que se adaptan a diferentes trabajos. Por ejemplo, CPU o optimizado para memoria. Necesitamos Computar máquinas optimizadas para hacer la multiplicación de matrices.

Las instancias optimizadas para computación son ideales para aplicaciones vinculadas a computación que se benefician de procesadores de alto rendimiento. C5, C6 y Hpc6a son ejemplos de instancias optimizadas para computación.

🔥 Recomendado:  ¿Cuántas personas usan Robinhood en 2023? (Estadísticas de uso)

Estas instancias son adecuadas para lo siguiente:

  • Cargas de trabajo de procesamiento por lotes
  • Transcodificación de medios
  • Servidores web de alto rendimiento
  • Informática de alto rendimiento (HPC)
  • Modelado científico
  • Servidores de juegos dedicados y motores de publicación de anuncios
  • Inferencia de aprendizaje automático y otras aplicaciones de computación intensiva

EC2 Inf1 las instancias funcionan con AWS inferencial, un chip personalizado creado por AWS para acelerar la inferencia de aprendizaje automático. Estas instancias ofrecen el costo más bajo para la inferencia de aprendizaje profundo en la nube.

Chips inferenciales con los últimos procesadores escalables Intel Xeon personalizados de segunda generación y redes de hasta 100 Gbps para permitir una inferencia de alto rendimiento. Esta poderosa configuración permite que las instancias Inf1 brinden un rendimiento hasta 3 veces mayor y un costo por inferencia hasta un 40 % más bajo que las instancias G4 de Amazon EC2, que ya eran las instancias de menor costo para la inferencia de aprendizaje automático disponible en la nube.

¿Por qué multiprocesamiento?

El enhebrar módulo utiliza subprocesos, el multiprocesamiento El módulo utiliza procesos. La diferencia es que los subprocesos se ejecutan en el mismo espacio de memoria, mientras que los procesos tienen memoria separada. Esto hace que sea un poco más difícil compartir objetos entre procesos con multiprocesamiento. El multiprocesamiento aprovecha múltiples CPU y núcleos.

Los experimentos muestran que el multiprocesamiento es más rápido y efectivo para la inferencia de modelos. A medida que aumentaba el número de subprocesos, se observó una disminución en el rendimiento.

Arquitectura de solución

En el plan arquitectónico, la interfaz guarda los archivos en S3 y los pone en cola en SQS para su procesamiento. La instancia EC2 verifica constantemente SQS, si hay una cola, procesa el elemento y lo elimina de la cola.

🔥 Recomendado:  Ingreso promedio por visitante: el KPI para generar dinero

Las instancias EC2 tienen más de un núcleo de CPU. Al usar estos núcleos con multiprocesamiento, podemos acelerar el proceso y la cola se borra rápidamente. Según la cantidad de solicitudes entrantes, puede elegir el tipo de instancia ec2 correcto.

Codifiquemos

  • Importamos nuestras bibliotecas necesarias.
  • Se requiere S3fs para leer archivos de s3 y deberá agregar credenciales.
  • En términos del experimento, cuando aparezca una imagen, predeciremos con el modelo de xcepción preentrenado.
  • Además, el parámetro WaitTimeSeconds utiliza 20 segundos de sondeo largo. De esta forma, reduciremos el número de solicitudes innecesarias y los costes disminuirán.
  • El consumidor revisa constantemente la cola de SQS y procesa las solicitudes. En el ejemplo de código, comenzamos con 12 de estos consumidores. La máquina que probé tenía 16 núcleos de CPU. Usar menos de la cantidad de núcleos disponibles será ventajoso en términos de creación y administración de múltiples procesos.

En este artículo, hicimos un experimento sobre el aprendizaje automático, pero esta arquitectura también se puede adaptar a otros problemas.

Recursos


Fusión de solicitudes de ML mediante el uso de SQS y multiprocesamiento se publicó originalmente en Hacia la IA en Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.

Publicado a través de Hacia la IA