Exafunction admite AWS Inferentia para desbloquear el mejor rendimiento de precio para la inferencia de aprendizaje automático PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Exafunction es compatible con AWS Inferentia para desbloquear el mejor rendimiento de precio para la inferencia de aprendizaje automático

En todas las industrias, los modelos de aprendizaje automático (ML) son cada vez más profundos, los flujos de trabajo se vuelven más complejos y las cargas de trabajo operan a escalas más grandes. Se dedican esfuerzos y recursos significativos para hacer que estos modelos sean más precisos, ya que esta inversión da como resultado directamente mejores productos y experiencias. Por otro lado, hacer que estos modelos funcionen de manera eficiente en producción es una tarea no trivial que a menudo se pasa por alto, a pesar de ser clave para lograr los objetivos de rendimiento y presupuesto. En esta publicación, cubrimos cómo Exafunction y Inferencia de AWS trabajen juntos para desbloquear una implementación fácil y rentable de modelos ML en producción.

exfuncion es una empresa emergente enfocada en permitir que las empresas realicen ML a escala de la manera más eficiente posible. Uno de sus productos es ExaDeploy, una solución SaaS fácil de usar para servir cargas de trabajo de ML a escala. ExaDeploy organiza de manera eficiente sus cargas de trabajo de ML en recursos mixtos (CPU y aceleradores de hardware) para maximizar la utilización de los recursos. También se ocupa del escalado automático, la colocación de cómputo, los problemas de red, la tolerancia a fallas y más, para garantizar una implementación eficiente y confiable. Basado en inferencia de AWS Instancias de Amazon EC2 Inf1 están diseñados específicamente para ofrecer el costo por inferencia más bajo en la nube. ExaDeploy ahora admite instancias Inf1, lo que permite a los usuarios obtener tanto los ahorros basados ​​en hardware de los aceleradores como los ahorros basados ​​en software de la orquestación y virtualización de recursos optimizados a escala.

Resumen de la solución

Cómo resuelve ExaDeploy la eficiencia de la implementación

Para garantizar la utilización eficiente de los recursos informáticos, debe tener en cuenta la asignación adecuada de recursos, el escalado automático, la coubicación informática, la gestión de la latencia y los costes de la red, la tolerancia a fallos, el control de versiones y la reproducibilidad, y mucho más. A escala, cualquier ineficiencia afecta sustancialmente los costos y la latencia, y muchas grandes empresas han abordado estas ineficiencias creando equipos internos y experiencia. Sin embargo, no es práctico para la mayoría de las empresas asumir esta sobrecarga financiera y organizativa de crear software generalizable que no es la competencia central deseada de la empresa.

ExaDeploy está diseñado para resolver estos puntos débiles de eficiencia de implementación, incluidos los que se observan en algunas de las cargas de trabajo más complejas, como las de vehículos autónomos y aplicaciones de procesamiento de lenguaje natural (NLP). En algunas cargas de trabajo de AA de lotes grandes, ExaDeploy ha reducido los costos en más del 85 % sin sacrificar la latencia o la precisión, con un tiempo de integración tan bajo como un día de ingeniero. Se ha demostrado que ExaDeploy escala automáticamente y administra miles de instancias de recursos de acelerador de hardware simultáneas sin degradación del sistema.

Las características clave de ExaDeploy incluyen:

  • Corre en tu nube: Ninguno de sus modelos, entradas o salidas sale nunca de su red privada. Continúe utilizando los descuentos de su proveedor de nube.
  • Recursos de aceleradores compartidos: ExaDeploy optimiza los aceleradores utilizados al permitir que varios modelos o cargas de trabajo compartan recursos de aceleradores. También puede identificar si varias cargas de trabajo están implementando el mismo modelo y luego compartir el modelo entre esas cargas de trabajo, optimizando así el acelerador utilizado. Sus capacidades automáticas de reequilibrio y vaciado de nodos maximizan la utilización y minimizan los costos.

Exafunction admite AWS Inferentia para desbloquear el mejor rendimiento de precio para la inferencia de aprendizaje automático PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

  • Modelo escalable de implementación sin servidor: ExaDeploy escala automáticamente en función de la saturación de recursos del acelerador. Escale dinámicamente hasta 0 o hasta miles de recursos.
  • Soporte para una variedad de tipos de cómputo: puede descargar modelos de aprendizaje profundo de todos los principales marcos de ML, así como código arbitrario de C++, núcleos CUDA, operaciones personalizadas y funciones de Python.
  • Registro y control de versiones de modelos dinámicos: Los nuevos modelos o versiones de modelos se pueden registrar y ejecutar sin tener que reconstruir o volver a implementar el sistema.
  • Ejecución punto a punto: los clientes se conectan directamente a los recursos del acelerador remoto, lo que permite una baja latencia y un alto rendimiento. Incluso pueden almacenar el estado de forma remota.
  • Ejecución asincrónica: ExaDeploy admite la ejecución asincrónica de modelos, lo que permite a los clientes paralelizar el cómputo local con el trabajo de recursos del acelerador remoto.
  • Canalizaciones remotas tolerantes a fallas: ExaDeploy permite a los clientes componer dinámicamente cálculos remotos (modelos, preprocesamiento, etc.) en canalizaciones con garantía de tolerancia a fallas. El sistema ExaDeploy maneja las fallas de pod o nodo con recuperación y reproducción automáticas, de modo que los desarrolladores nunca tengan que pensar en garantizar la tolerancia a fallas.
  • Monitoreo listo para usar: ExaDeploy proporciona métricas de Prometheus y paneles de Grafana para visualizar el uso de recursos del acelerador y otras métricas del sistema.

ExaDeploy es compatible con AWS Inferentia

Las instancias Inf2 de Amazon EC1 basadas en AWS Inferentia están diseñadas para cargas de trabajo de inferencia específicas de aprendizaje profundo. Estas instancias brindan un rendimiento de hasta 2.3 veces y un ahorro de costos de hasta un 70 % en comparación con la generación actual de instancias de inferencia de GPU.

ExaDeploy ahora es compatible con AWS Inferentia y juntos desbloquean el mayor rendimiento y los ahorros de costos logrados a través de la aceleración de hardware especialmente diseñada y la orquestación optimizada de recursos a escala. Veamos los beneficios combinados de ExaDeploy y AWS Inferentia al considerar una carga de trabajo de ML moderna muy común: cargas de trabajo de cómputo mixto por lotes.

Características hipotéticas de la carga de trabajo:

  • 15 ms de procesamiento previo/posterior solo de CPU
  • Inferencia de modelo (15 ms en GPU, 5 ms en AWS Inferentia)
  • 10 clientes, cada uno hace una solicitud cada 20 ms
  • El costo relativo aproximado de CPU:Inferentia:GPU es 1:2:4 (basado en los precios bajo demanda de Amazon EC2 para c5.xlarge, inf1.xlarge y g4dn.xlarge)

La siguiente tabla muestra cómo se perfila cada una de las opciones:

Preparar Recursos necesitados Cost Estado latente
GPU sin ExaDeploy 2 CPU, 2 GPU por cliente (total 20 CPU, 20 GPU) 100 30 ms
GPU con ExaDeploy 8 GPU compartidas en 10 clientes, 1 CPU por cliente 42 30 ms
AWS Inferentia sin ExaDeploy 1 CPU, 1 AWS Inferentia por cliente (total 10 CPU, 10 Inferentia) 30 20 ms
Inferencia de AWS con ExaDeploy 3 AWS Inferentia compartidos entre 10 clientes, 1 CPU por cliente 16 20 ms

Ejemplo de ExaDeploy en AWS Inferentia

En esta sección, repasamos los pasos para configurar ExaDeploy a través de un ejemplo con nodos inf1 en un modelo BERT PyTorch. Vimos un rendimiento promedio de 1140 muestras/seg para el modelo bert-base, lo que demuestra que ExaDeploy introdujo poca o ninguna sobrecarga para este modelo único, escenario de carga de trabajo única.

Paso 1: configurar un Servicio Amazon Elastic Kubernetes (Amazon EKS) clúster

Se puede abrir un clúster de Amazon EKS con nuestro Módulo AWS Terraform. Para nuestro ejemplo, usamos un inf1.xlarge para AWS Inferencia.

Paso 2: Configurar ExaDepoy

El segundo paso es configurar ExaDeploy. En general, la implementación de ExaDeploy en instancias inf1 es sencilla. La configuración sigue principalmente el mismo procedimiento que en las instancias de la unidad de procesamiento de gráficos (GPU). La principal diferencia es cambiar la etiqueta del modelo de GPU a AWS Inferentia y volver a compilar el modelo. Por ejemplo, pasar de instancias g4dn a inf1 utilizando las interfaces de programación de aplicaciones (API) de ExaDeploy requirió solo aproximadamente 10 líneas de código para cambiar.

  • Un método simple es usar Exafunction Módulo Terraform AWS Kubernetes or Gráfico de timón. Estos implementan los componentes principales de ExaDeploy para que se ejecuten en el clúster de Amazon EKS.
  • Compile el modelo en un formato serializado (p. ej., TorchScript, modelos guardados en TF, ONNX, etc.). Para AWS Inferentia, seguimos este tutorial.
  • Registre el modelo compilado en el repositorio de módulos de ExaDeploy.
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • Prepare los datos para el modelo (es decir, no ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • Ejecute el modelo de forma remota desde el cliente.
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy y AWS Inferentia: Mejor juntos

AWS Inferentia está ampliando los límites del rendimiento para la inferencia de modelos y ofrece el costo por inferencia más bajo en la nube. Dicho esto, las empresas necesitan la orquestación adecuada para disfrutar de los beneficios de precio-rendimiento de Inf1 a escala. El servicio de ML es un problema complejo que, si se aborda internamente, requiere experiencia que se aleja de los objetivos de la empresa y, a menudo, retrasa los plazos de los productos. ExaDeploy, que es la solución de software de implementación de ML de Exafunction, se ha convertido en el líder de la industria. Atiende incluso las cargas de trabajo de ML más complejas, a la vez que brinda experiencias de integración fluidas y soporte de un equipo de clase mundial. Juntos, ExaDeploy y AWS Inferentia desbloquean un mayor rendimiento y ahorros de costos para las cargas de trabajo de inferencia a escala.

Conclusión

En esta publicación, le mostramos cómo Exafunction es compatible con AWS Inferentia para el aprendizaje automático de rendimiento. Para obtener más información sobre la creación de aplicaciones con Exafunction, visite exfuncion. Para conocer las prácticas recomendadas sobre la creación de cargas de trabajo de aprendizaje profundo en Inf1, visite Instancias Amazon EC2 Inf1.


Acerca de los autores

Nicholas Jiang, ingeniero de software, Exafunción

Jonathan Ma, ingeniero de software, Exafunción

Prem Nair, ingeniero de software, Exafunción

Anshul Ramachandran, ingeniero de software, Exafunción

Shruti Koparkar, gerente sénior de marketing de productos, AWS

Sello de tiempo:

Mas de Aprendizaje automático de AWS