Implementación de modelos ML con FastAPI y Docker

Como científico de datos, ha creado un modelo exitoso después de invertir mucho tiempo y esfuerzo. Desea ponerlo a disposición de otros equipos de su empresa para que pueda integrarse en sus aplicaciones. Sin embargo, este puede ser un proceso desafiante, por lo que planea usar herramientas para simplificarlo.

Entiendes que simplemente crear un modelo efectivo no es suficiente para asegurar su éxito. Es importante integrarlo en producción rápidamente en lugar de dejarlo en su computadora donde su potencial es limitado. Esto requiere una planificación y tácticas cuidadosas para garantizar un lanzamiento rápido y una rápida adopción del modelo.

El propósito de este blog es guiarlo a través de todo el proceso de implementación de un modelo en producción utilizando un caso de uso completo de extremo a extremo. El enfoque inicial consistirá en proporcionar una descripción general de Fast API, seguido de una exploración en profundidad de su funcionalidad a través del desarrollo de una API como ejemplo concreto.

Índice de contenidos
  1. ¿Qué proporciona exactamente una API?
  2. ¿Por qué optamos por FastApi?
  3. Implementando nuestro caso de uso en la práctica
    1. Paso 1:
    2. Paso 2:
  4. Implementación en Docker Container
  5. Conclusión
  6. preguntas frecuentes
    1. ¿Cuáles son los beneficios de usar FastAPI para implementar modelos de aprendizaje automático?
    2. ¿Cómo se puede usar Docker para implementar modelos de aprendizaje automático?
    3. ¿Cuáles son algunas de las mejores prácticas para implementar modelos de aprendizaje automático con FastAPI y Docker?
    4. ¿Se pueden usar FastAPI y Docker para implementar modelos capacitados en diferentes lenguajes o marcos?

¿Qué proporciona exactamente una API?

Una interfaz de programación de aplicaciones (API) sirve como facilitador entre dos aplicaciones autónomas, lo que les permite comunicarse e interactuar sin problemas entre sí. Para los desarrolladores que buscan hacer que su programa esté disponible y fácilmente integrable para otros, crear una API que actúe como un punto de entrada a su servicio es un enfoque muy eficaz. Esta API actúa como un guardián, lo que permite a los desarrolladores interactuar con el programa a través de consultas HTTP sin necesidad de ver o comprender el código base subyacente o instalar ningún software adicional. En esencia, la API abstrae el funcionamiento interno del programa, lo que simplifica el proceso de integración general para otros desarrolladores y usuarios finales y proporciona una capa de abstracción que promueve la facilidad de uso y la accesibilidad.

¿Por qué optamos por FastApi?

Quizás ya esté familiarizado con Django, Flask y otros marcos. La API rápida, por otro lado, brilla cuando se trata de la creación rápida de microservicios RESTful. Esto puede ilustrarse con el estudio de análisis de referencia realizado por techempower.

El marco preferido para crear API escalables, confiables y de alto rendimiento en un entorno de producción es FastAPI. Recientemente, FastAPI ha crecido sustancialmente en popularidad y adopción por parte de los usuarios, especialmente entre desarrolladores web, científicos de datos e ingenieros de aprendizaje automático. Debido a su sintaxis simple, FastAPI es fácil de usar. Tiene una sintaxis similar a la de Flask, por lo que la transición debería ser simple si está considerando cambiar de Flask a FastAPI. FastAPI no incluye un servidor web integrado como lo hace Flask. FastAPI se creó principalmente para construir API.

Leer más: 3 requisitos previos para comprender cómo funciona el aprendizaje automático

Implementando nuestro caso de uso en la práctica

Aquí implementaré la última implementación de yolov7 con FastApi y docker. Como todos sabemos, la familia YOLO está entrenada en base al conjunto de datos de coco, que contiene 80 clases. YOLOv7 es el modelo de detección de objetos en tiempo real más rápido y preciso para tareas de visión artificial. YOLOv7 proporciona una precisión de detección de objetos en tiempo real significativamente mejorada sin aumentar la costos de inferencia.

Paso 1:

Clonar el repositorio oficial de git de yolov7

Paso 2:

Nuestro objetivo es proporcionar un punto final en FastApi donde podamos seleccionar la clase particular de yolov7 para la detección y cargar la imagen. La respuesta será el recuento de ID de clase particulares detectados, y el tiempo necesario para eso se dará en la respuesta. El código FastApi será así

Aquí, la función de detección realizará la detección de yolov7 y, como argumento, se pasará la identificación de la clase.

El argumento de la línea de comando para ejecutar esto será uvicorn main:app –reload. el resultado sera asi

La línea 1 muestra que el servidor unicornio se está ejecutando en el puerto localhost (http://127.0.0.1) 8000.

La URL http://127.0.0.1:8000/docs proporciona un panel completo para interactuar con nuestra API. A continuación se muestra el resultado.

Si desea probar esto, proporcione la identificación de la clase y la imagen y haga clic en ejecutar. La respuesta se mostrará así.

Aquí di la identificación de clase como cero, lo que ayuda a detectar las personas en una imagen y el resultado se muestra en respuesta como 10 personas.

Al observar la sección del cuerpo de la respuesta de la API, podemos ver su resultado de la siguiente manera

Implementación en Docker Container

Es hora de implementar nuestra API en un Contenedor Docker ahora que está listo. El objetivo de la contenedorización es hacer que nuestra API sea más segura y portátil para que pueda operar de manera uniforme y consistente en cualquier plataforma (incluida la nube).

A continuación se muestra el contenido de Dockerfile.dep para nuestra aplicación.

Cree el archivo dockerdep usando el comando

docker build -t yolo-dep:último -f ./Dockerfile.dep .

El Dockerfile contiene

Use este comando para construir la imagen de la ventana acoplable

docker build -t yolo-model:último .

Para ejecutar el contenedor acoplable use el comando

ventana acoplable ejecutar -p 8000: 8000 yolo-modelo: último

Así desplegó su API rápida aplicación en la ventana acoplable.

Lea también: Tipos de algoritmos de aprendizaje automático

Conclusión

Al investigar las diversas funcionalidades y capacidades de FastAPI, un marco altamente beneficioso y versátil que facilita el desarrollo de WebAPI, pudimos descubrir varias características fascinantes y cautivadoras. Armados con este nuevo conocimiento, procedimos a emplear FastAPI para que funcione como una API para nuestro modelo de aprendizaje automático, aprovechando todo el potencial del marco para crear una API excepcional y sin problemas. Además, aprovechando los beneficios y la versatilidad de FastAPI, pudimos construir un contenedor Docker completo, lo que marcó otro logro notable en nuestra búsqueda para implementar un modelo de aprendizaje automático robusto y completamente funcional en producción.

Si está buscando implementar su modelo de aprendizaje automático con FastApi y Docker, comuníquese con Neoito hoy. Nuestro equipo puede ayudarlo a crear aplicaciones avanzadas que aprovechen el poder de estas tecnologías. Ya sea que tenga un proyecto específico en mente o esté buscando orientación y apoyo, Neoito puede ayudarlo.

No dude en comunicarse y ver cómo podemos trabajar juntos para hacer realidad sus ideas.

preguntas frecuentes

¿Cuáles son los beneficios de usar FastAPI para implementar modelos de aprendizaje automático?

FastAPI es un marco web de alto rendimiento que ofrece varios beneficios para implementar modelos de aprendizaje automático. Algunos de los beneficios clave incluyen su rápido rendimiento, la generación automática de documentación API y la fácil integración con bibliotecas de ciencia de datos como PyTorch y TensorFlow.

¿Cómo se puede usar Docker para implementar modelos de aprendizaje automático?

Docker es una plataforma de creación de contenedores que le permite empaquetar su modelo de aprendizaje automático junto con sus dependencias e implementarlo en un entorno autónomo. Al usar Docker, puede asegurarse de que su modelo se ejecutará de manera consistente en diferentes entornos, lo que facilita la implementación y la escala.

¿Cuáles son algunas de las mejores prácticas para implementar modelos de aprendizaje automático con FastAPI y Docker?

Algunas prácticas recomendadas para implementar modelos de aprendizaje automático con FastAPI y Docker incluyen el uso de variables de entorno para administrar la configuración, el uso de un Dockerfile independiente para la producción y la implementación de medidas de seguridad adecuadas, como limitación de velocidad y autenticación.

¿Se pueden usar FastAPI y Docker para implementar modelos capacitados en diferentes lenguajes o marcos?

Sí, FastAPI y Docker se pueden usar para implementar modelos capacitados en diferentes lenguajes o marcos, siempre que el modelo se pueda servir a través de una API REST. Sin embargo, pueden ser necesarios algunos cambios de configuración para garantizar la compatibilidad con FastAPI y Docker.

Te podría interesar...

Deja una respuesta

Subir