Habr AI→ original

BentoML mostró cómo convertir Grounding DINO en un servicio de producción con una API web

BentoML desglosó un escenario práctico de serving de Grounding DINO, un modelo zero-shot para la detección de objetos a partir de una consulta de texto. El…

Procesado por IA desde Habr AI; editado por Hamidun News
BentoML mostró cómo convertir Grounding DINO en un servicio de producción con una API web
Fuente: Habr AI. Collage: Hamidun News.
◐ Escuchar artículo

BentoML mostró un escenario práctico de cómo llevar Grounding DINO desde un notebook a un servicio de production sin la sobrecarga pesada de MLOps. Usando un detector de objetos zero-shot como ejemplo, el autor construyó una API HTTP, añadió validación de parámetros y mostró cómo ejecutar el servicio localmente y en Docker.

¿Por qué BentoML aquí?

La idea principal del artículo es simple: entrenar un modelo no es suficiente—también necesitas entregarlo correctamente a los usuarios. Para un escenario de production, necesitas almacenamiento y versionado de pesos, control de recursos, una API conveniente y una ruta clara para el despliegue. BentoML cubre exactamente esta capa. El framework te permite envolver el código Python del modelo en un servicio, preparar automáticamente el entorno, construir una imagen Docker y obtener inmediatamente una interfaz HTTP con Swagger UI.

Para equipos que no quieren construir todo el stack MLOps manualmente, esto acorta significativamente el camino del experimento a un servicio funcional.

El ejemplo utiliza Grounding DINO—un modelo para detección de objetos open-set. A diferencia de los detectores clásicos, se basa no solo en la imagen sino también en un prompt de texto. Esto significa que puedes proporcionar una imagen y una lista de descripciones como "un gato" o "un control remoto", y el modelo intentará encontrar exactamente esos objetos, incluso si no estuvieran predefinidos como clases fijas. Para un escenario de servicio, este es un buen caso de uso: hay inferencia, parámetros de texto y un resultado visual que se puede devolver fácilmente a través de la API.

Cómo construir el servicio

El autor comienza con un ejemplo típico de dev usando Transformers: se carga grounding-dino-tiny, una imagen pasa por AutoProcessor, luego el modelo devuelve bounding boxes, confianza y etiquetas de texto. A continuación, este código se traslada a una clase GroundingDinoService, que se decora como un servicio BentoML.

Un detalle importante: los pesos del modelo se especifican como HuggingFaceModel a nivel de clase para que BentoML los descargue por adelantado al construir el artefacto, no durante la inicialización del contenedor. Esto evita el error típico de un modelo faltante al iniciar.

  • La configuración de runtime especifica Python 3.11 y dependencias vía pyproject.toml
  • Los métodos detect_image y render se publican como endpoints HTTP usando decoradores BentoML
  • Los parámetros de entrada se describen usando Pydantic: prompt, box_threshold y text_threshold
  • El resultado se puede devolver como JSON con una lista de boxes o como una imagen lista con anotaciones
"Todo esto se hace en un único archivo

Python en menos de 100 líneas."

Prácticamente, el servicio se reduce a tres partes: un método privado _detect con la lógica principal de inferencia, un método público detect_image para respuestas estructuradas y render para visualización. Este arreglo es conveniente porque la misma lógica se utiliza tanto para clientes de máquina como para personas que desean probar rápidamente el modelo a través de la interfaz o curl. Además, la validación de Pydantic filtra inmediatamente parámetros incorrectos antes de llamar al modelo.

Ejecución e API

Para desarrollo local, se utiliza el comando bentoml serve, especificando el puerto 3025 y el modo de recarga automática. Después del inicio, el servicio automáticamente levanta Swagger UI, donde puedes cargar una imagen, pasar parámetros JSON e inmediatamente verificar la respuesta. Este es un modo de depuración conveniente: editas el código, guardas el archivo y sin reconstruir, ves cómo cambia el comportamiento del servicio. Para muchos equipos, este ciclo de desarrollo es más importante que un runtime maximamente optimizado al inicio.

La versión de production se construye a través de bentoml build y luego se containeriza con el comando bentoml containerize. Después de eso, el servicio puede ejecutarse en Docker con GPU y abrirse en el puerto deseado.

En la demostración, el servicio tiene dos endpoints: /detect_image devuelve JSON con coordenadas, clases y confianza, mientras que /render guarda y devuelve una imagen con boxes dibujados. El artículo también muestra llamadas a través del cliente SDK de BentoML y a través de curl, lo que significa que el servicio es igualmente conveniente para conectar tanto a pipelines internos como a aplicaciones externas.

Qué significa

El material es útil porque fundamenta la conversación sobre model serving: en lugar de arquitectura MLOps abstracta, muestra un camino corto y reproducible desde un script Python con Grounding DINO hasta un contenedor con API HTTP. Para pequeños equipos de ML, esta es una buena plantilla si necesitas entregar rápidamente un modelo de visión a production sin quedar atrapado en infraestructura en el primer release.

ZK
Hamidun News
Noticias de AI sin ruido. Selección editorial diaria de más de 400 fuentes. Producto de Zhemal Khamidun, Head of AI en Alpina Digital.

¿Necesitas IA funcionando dentro de tu empresa — no solo en tu feed de noticias?

Construyo IA en producción para empresas — CRM a medida, herramientas internas, agentes autónomos, automatización de procesos. Tuya, adaptada a tu proceso, sin coste por usuario. Creado por Zhemal Khamidun, CPO de AlpinaGPT (plataforma de IA, 6.000+ usuarios).

¿Qué te parece?
Cargando comentarios…