Habr AI→ original

BentoML a montré comment transformer Grounding DINO en service de production avec une API web

BentoML a détaillé un scénario pratique de serving de Grounding DINO — un modèle zero-shot de détection d'objets à partir d'une requête textuelle. L'auteur…

Traité par IA depuis Habr AI ; édité par Hamidun News
BentoML a montré comment transformer Grounding DINO en service de production avec une API web
Source : Habr AI. Collage: Hamidun News.
◐ Écouter l'article

BentoML a montré un scénario pratique pour amener Grounding DINO d'un notebook vers un service de production sans la lourde surcharge MLOps. En utilisant un détecteur d'objets zero-shot comme exemple, l'auteur a construit une API HTTP, ajouté la validation des paramètres et montré comment exécuter le service localement et dans Docker.

Pourquoi BentoML ici

L'idée principale de l'article est simple : entraîner un modèle ne suffit pas—vous devez aussi le livrer correctement aux utilisateurs. Pour un scénario de production, vous avez besoin de stockage et de versionnage des poids, de contrôle des ressources, d'une API pratique et d'un chemin clair vers le déploiement. BentoML couvre exactement cette couche. Le framework permet d'envelopper le code Python du modèle dans un service, de préparer automatiquement l'environnement, de construire une image Docker et d'obtenir immédiatement une interface HTTP avec Swagger UI.

Pour les équipes qui ne veulent pas construire toute la pile MLOps manuellement, cela réduit considérablement le chemin de l'expérience au service fonctionnel.

L'exemple utilise Grounding DINO—un modèle pour la détection d'objets open-set. Contrairement aux détecteurs classiques, il s'appuie non seulement sur l'image, mais aussi sur une invite textuelle. Cela signifie que vous pouvez fournir une image et une liste de descriptions comme « un chat » ou « une télécommande », et le modèle tentera de trouver exactement ces objets, même s'ils n'étaient pas prédéfinis comme classes fixes. Pour un scénario de service, c'est un bon cas d'usage : il y a l'inférence, les paramètres textuels et un résultat visuel qui peut être facilement renvoyé via l'API.

Comment construire le service

L'auteur commence par un exemple typique de dev utilisant Transformers : grounding-dino-tiny est chargé, une image passe par AutoProcessor, puis le modèle retourne les boîtes englobantes, la confiance et les étiquettes de texte. Ensuite, ce code est transféré dans une classe GroundingDinoService, qui est décorée comme un service BentoML.

Un détail important : les poids du modèle sont spécifiés comme HuggingFaceModel au niveau de la classe afin que BentoML les télécharge à l'avance lors de la construction de l'artefact, pas pendant l'initialisation du conteneur. Cela évite l'erreur typique d'un modèle manquant au démarrage.

  • La configuration du runtime spécifie Python 3.11 et les dépendances via pyproject.toml
  • Les méthodes detect_image et render sont publiées en tant que endpoints HTTP utilisant les décorateurs BentoML
  • Les paramètres d'entrée sont décrits à l'aide de Pydantic : prompt, box_threshold et text_threshold
  • Le résultat peut être renvoyé en JSON avec une liste de boîtes ou comme une image prête avec des annotations
«

Tout cela est fait dans un seul fichier Python en moins de 100 lignes. »

Pratiquement, le service se réduit à trois parties : une méthode privée _detect avec la logique principale d'inférence, une méthode publique detect_image pour les réponses structurées et render pour la visualisation. Cet arrangement est pratique car la même logique est utilisée à la fois pour les clients machines et pour les personnes qui veulent tester rapidement le modèle via l'interface ou curl. De plus, la validation Pydantic filtre immédiatement les paramètres incorrects avant d'appeler le modèle.

Lancement et API

Pour le développement local, la commande bentoml serve est utilisée, en spécifiant le port 3025 et le mode de rechargement automatique. Après le démarrage, le service lève automatiquement Swagger UI, où vous pouvez télécharger une image, passer des paramètres JSON et vérifier immédiatement la réponse. C'est un mode de débogage pratique : vous modifiez le code, enregistrez le fichier et sans reconstruction, vous regardez le comportement du service changer. Pour de nombreuses équipes, ce cycle de développement est plus important qu'un runtime maximalement optimisé au démarrage.

La version de production est construite via bentoml build, puis conteneurisée avec la commande bentoml containerize. Après cela, le service peut être exécuté dans Docker avec GPU et ouvert sur le port souhaité.

Dans la démonstration, le service a deux endpoints : /detect_image retourne JSON avec les coordonnées, les classes et la confiance, tandis que /render enregistre et retourne une image avec les boîtes dessinées. L'article montre aussi les appels via le client SDK BentoML et via curl, ce qui signifie que le service est tout aussi pratique pour se connecter à la fois aux pipelines internes et aux applications externes.

Ce que cela signifie

Le matériel est utile car il ancre la conversation sur le model serving : au lieu d'une architecture MLOps abstraite, il montre un chemin court et reproductible d'un script Python avec Grounding DINO vers un conteneur avec API HTTP. Pour les petites équipes de ML, c'est un bon modèle si vous avez besoin de livrer rapidement un modèle de visyon en production sans vous enliser dans l'infrastructure dès la première version.

ZK
Hamidun News
Actualités IA sans bruit. Sélection éditoriale quotidienne de plus de 400 sources. Produit de Zhemal Khamidun, Head of AI chez Alpina Digital.

Besoin d'une IA qui travaille dans votre entreprise — pas seulement dans votre fil d'actualité?

Je construis de l'IA en production pour les entreprises — CRM sur mesure, outils internes, agents autonomes, automatisation des processus. Vous en êtes propriétaire, adaptée à votre processus, sans coût par utilisateur. Réalisé par Zhemal Khamidun, CPO d'AlpinaGPT (plateforme IA, 6 000+ utilisateurs).

Qu'en pensez-vous ?
Chargement des commentaires…