Ubuntu

Una guía para la publicación de modelos de AA

Una guía para la publicación de modelos de AA

TL; DR: La forma en que implementa modelos en producción es lo que separa un ejercicio académico de una inversión en ML que genera valor para su negocio. A escala, esto se vuelve dolorosamente complejo. Esta guía lo guía a través de las mejores prácticas y métodos de la industria, y concluye con una herramienta práctica, KFServing, que aborda el servicio de modelos a escala.

Del entrenamiento al servicio de modelos

Si está haciendo aprendizaje automático dentro de una organización, es probable que esté buscando construir uno de dos tipos de sistema:

  1. Sistema analítico para tomar decisiones basadas en datos
  2. Sistema operacional para construir productos basados ​​en datos

La formación de modelos de alta precisión es solo una pequeña parte de la creación de sistemas de aprendizaje automático que aportarán valor a su organización. Quieres modelos que sean excelentes para predecir cosas, pero ese no es el final de tu viaje.

La fase de entrenamiento finaliza cuando vuelca su modelo, de manera simplista una matriz n-dimensional de pesos optimizados, en:

  1. Un archivo binario, p. Ej. .compartimiento
  2. Un archivo de objeto legible por humanos, p. Ej. .json

Una vez que tenga un modelo razonablemente bueno en un archivo, solo habrá terminado en un 20%.

Su próximo gran desafío es permitir que sus aplicaciones en producción (analíticas u operativas) hagan uso de este modelo para la inferencia, es decir, hacer predicciones sobre nuevos datos.

Las complejidades del aprendizaje automático moderno a escala

Tradicionalmente, el aprendizaje automático estaba reservado para académicos que tenían las habilidades matemáticas para desarrollar algoritmos complejos y modelos ML / DL. Sin embargo, los expertos en algoritmos carecían de conocimientos sobre cómo producir estos modelos para el consumo a escala.

Con la gran demanda del mercado para la implementación de modelos en producción y la falta de capacidades operativas dentro de los equipos tradicionales de ciencia de datos, ha surgido una necesidad de trabajo colaborativo de competencias cruzadas (ciencia de datos, ingeniería de datos, infraestructura y DevOps) y herramientas apropiadas junto con un nuevo campo: MLOps.

En lugar de un patrón de enviar y olvidar presente en el software tradicional, los sistemas de aprendizaje automático requieren una gran cantidad de ciclos de iteración y una mejora continua, como se representa en la imagen a continuación:

Algunas de las complejidades de la gestión de estos modernos sistemas de IA incluyen:

  1. Infraestructura compleja (bare metal, nube virtualizada, orquestación de contenedores) con hardware diverso (CPU, GPU, DPU, TPU, FPGA, ASIC) y diversas necesidades de entorno: bibliotecas, marcos.
  2. Varios pasos en el flujo de trabajo de ML con diferentes requisitos (por ejemplo, cálculo rápido para el entrenamiento, gran ancho de banda para la ingestión de datos, bajo cálculo y mucho trabajo manual en la preparación de datos)
  3. Gestión del ciclo de vida del modelo – A diferencia del software tradicional, los modelos de aprendizaje automático no se pueden implementar ni olvidar, ya que los nuevos datos pueden implicar la necesidad de verificar la desviación del modelo y actualizarlo automáticamente. La trazabilidad de los modelos en producción se vuelve imperativa.
  4. Cumplimiento de las operaciones actuales, sin introducir flujos de trabajo completamente nuevos para los equipos de DevOps
  5. Adaptación organizacional a esta nueva corresponsabilidad

Todo esto se suma a una alta deuda técnica y ciclos de desarrollo costosos a menos que se implementen grandes procesos, metodologías y herramientas.

Llevando modelos a producción

Hay algunas opciones cuando se trata de poner en producción sus modelos de ML.

Modelo incrustado en la aplicación

La forma más directa de usar su modelo dentro de una aplicación se llama incrustación de modelo. En este método, simplemente inserta el archivo que contiene su modelo dentro del código de su aplicación, y la aplicación accederá directamente a él.

Esto tiene algunas ventajas, ya que la infraestructura más simple y el acceso directo brindan el máximo rendimiento durante la inferencia y, al estar integrado en la aplicación, permite el uso sin conexión. Sin embargo, este no es un método escalable y, en general, hoy en día no se considera una gran práctica.

Modelo servido como API

El método más utilizado hoy en día es modelo de servicio o modelo como servicio.

Esta arquitectura separa eficazmente la aplicación del modelo a través de una API, lo que simplifica los procesos organizativos, el control de versiones y la reutilización del modelo, actualizaciones integradas con implementaciones por fases y separación de hardware, lo que permite que la aplicación y el servidor de modelos tengan hardware diverso (CPU, GPU, FPGA) y escalado independiente a petición.

Las plataformas MLOps modernas como Kubeflow solo admiten la arquitectura Model as a Service.

Una alternativa a incrustar el modelo es envolver un archivo binario de modelo alrededor de un microservicio (por ejemplo, la aplicación Python Flask) que incluye un método, clase o biblioteca para hacer que el modelo sea consumible por otras aplicaciones.

Modelo como ejemplo de código – imagen de AQUÍ

Esto es difícil de administrar y no es muy escalable, ya que la implementación es específica del marco. Necesita crear un microservicio que sea compatible con los marcos que desea usar en su aplicación final, y hay docenas de ellos.

Modelo guardado y utilizado como biblioteca

Finalmente, el mejor enfoque si deseas algo que pueda escalar sin muchos problemas de crecimiento es usar su modelo como datos.

En este método, guardas el modelo de una manera estandarizada (por ejemplo, Tensorflow SavedModel, PMML, PFA u ONNX) que se puede leer mediante programación en cualquier entorno, lenguaje y marco de programación moderno, lo que permite la reutilización en diversas aplicaciones.

Ejemplo de modelo guardado de TensorFlow: imagen de AQUÍ

Esto puede ser un poco más desafiante inicialmente desde un punto de vista técnico, pero tiene enormes beneficios a largo plazo, ya que solo tiene que empaquetarlo una vez, y luego todas sus aplicaciones pueden consumir sus modelos guardados.

Sirviendo modelos en Kubernetes

La informática empresarial se está trasladando a Kubernetes, y durante mucho tiempo se ha hablado de Kubeflow como la plataforma para resolver MLOps a escala.

KFServing, el proyecto de servicio de modelos de Kubeflow, ha demostrado ser la herramienta más madura cuando se trata de herramientas de implementación de modelos de código abierto en K8, con características como implementaciones de canary, inferencias sin servidor de múltiples marcos y explicabilidad del modelo.

Obtenga más información sobre KFServing en ¿Qué es KFServing?

Más información sobre MLOps

Canonical ofrece capacitación en MLOps y Kubeflow para empresas junto con servicios profesionales como seguridad y soporte, implementaciones personalizadas, consultoría y Kubeflow completamente administrado; lea la página de servicios de inteligencia artificial de Ubuntu para obtener más detalles.

Simplifique sus operaciones de Kubeflow

Obtenga el paquete de Kubeflow más reciente Operadores encantados, que proporciona capacidad de composición, operaciones de día 0 y día 2 para todas las aplicaciones de Kubeflow, incluido KFServing.

Ponte en marcha en 5 minutos

Leave a Comment

You may also like