BentoML : La plateforme unifiée pour servir des modèles d’IA de manière efficace

BentoML : La plateforme unifiée pour servir des modèles d'IA de manière efficace

Introduction à BentoML

À l’ère de l’intelligence artificielle, l’un des plus grands défis n’est pas seulement d’entraîner des modèles, mais de les implémenter efficacement en production. C’est ici qu’intervient BentoML comme une solution clé. Cet framework open-source est conçu pour simplifier le processus de MLOps (Machine Learning Operations), facilitant ainsi l’implémentation, l’évolutivité et la gestion des modèles d’IA dans divers environnements.

BentoML permet aux développeurs de construire des systèmes d’inférence optimisés compatibles avec de multiples modèles, en intégrant également des outils avancés pour améliorer les performances et l’observabilité. Sa facilité d’utilisation et sa flexibilité en font une option populaire parmi les ingénieurs de données et les développeurs d’IA.


Caractéristiques principales de BentoML

BentoML se distingue par son offre de solution complète et modulaire pour l’implémentation de modèles d’IA. Parmi ses caractéristiques les plus importantes, on trouve :

  • Support pour tout modèle d’IA/ML : Il est possible d’implémenter des modèles provenant de frameworks populaires tels que TensorFlow, PyTorch, Scikit-learn et Hugging Face Transformers.
  • Optimisation des performances : Utilise des techniques avancées telles que le dynamic batching, le modèle parallèle, l’orchestration de plusieurs modèles et l’exécution distribuée.
  • Facilité de création d’API : Transforme les scripts d’inférence en serveurs REST API en quelques lignes de code.
  • Automatisation avec Docker : Génère automatiquement des images Docker avec toutes les dépendances nécessaires pour garantir des déploiements reproductibles.
  • Compatibilité avec CPU et GPU : Maximise l’utilisation des ressources grâce à son support pour plusieurs GPU et à l’accélération par matériel.
  • Surveillance et observabilité : Fournit des métriques détaillées pour analyser les performances et optimiser les modèles en production.

BentoML ne se limite pas à servir des modèles, mais fait partie d’un écosystème plus large incluant :

  • BentoCloud : Une plateforme cloud pour gérer des déploiements à grande échelle.
  • OpenLLM : Un outil pour exécuter des modèles de langage open-source.
  • BentoVLLM : Une implémentation optimisée pour l’inférence de modèles de langage à grande échelle.
  • BentoDiffusion : Une infrastructure pour servir des modèles de génération d’images et de vidéos.

Exemple pratique : Mise en œuvre d’un service de conversion de texte en parole (TTS) avec BentoML

Nous allons maintenant construire un service de conversion de texte en parole (Text-to-Speech – TTS) en utilisant le modèle Bark de Hugging Face, puis nous le déploierons sur BentoCloud.

1. Configuration de l’environnement

Nous installons BentoML avec les dépendances nécessaires :

pip install bentoml torch transformers scipy

2. Création du service dans app.py

import os
import typing as t
from pathlib import Path
import bentoml

@bentoml.service(resources={"gpu": 1, "gpu_type": "nvidia-tesla-t4"}, traffic={"timeout": 300})
class BentoBark:
    def __init__(self) -> None:
        import torch
        from transformers import AutoProcessor, BarkModel

        self.device = "cuda" if torch.cuda.is_available() else "cpu"
        self.processor = AutoProcessor.from_pretrained("suno/bark")
        self.model = BarkModel.from_pretrained("suno/bark").to(self.device)

    @bentoml.api
    def generate(self, context: bentoml.Context, text: str, voice_preset: t.Optional[str] = None) -> Path:
        import scipy

        output_path = os.path.join(context.temp_dir, "output.wav")
        inputs = self.processor(text, voice_preset=voice_preset).to(self.device)
        audio_array = self.model.generate(**inputs).cpu().numpy().squeeze()

        sample_rate = self.model.generation_config.sample_rate
        scipy.io.wavfile.write(output_path, rate=sample_rate, data=audio_array)

        return Path(output_path)

3. Configuration de bentofile.yaml

service: "app:BentoBark"
labels:
  owner: Abid
  project: Bark-TTS
include:
  - "*.py"
python:
  requirements_txt: requirements.txt
docker:
  python_version: "3.11"
  system_packages:
    - ffmpeg
    - git

4. Déploiement dans le cloud avec BentoCloud

Pour déployer l’application sur BentoCloud, connectez-vous :

bentoml cloud login

Ensuite, exécutez :

bentoml deploy

Cela générera une image Docker et configurera le service dans le cloud.


Test et surveillance du service

Pour vérifier le bon fonctionnement du service, nous utilisons curl pour faire une requête à l’endpoint :

curl -s -X POST 
    'https://bento-bark-bpaq-39800880.mt-guc1.bentoml.ai/generate' 
    -H 'Content-Type: application/json' 
    -d '{"text": "Bonjour, ceci est un message de test.", "voice_preset": ""}' 
    -o output.mp3

De plus, BentoCloud offre des outils avancés de surveillance pour analyser la performance du service en temps réel.


Comparaison avec d’autres solutions

CaractéristiqueBentoMLKubernetes & DockerTensorFlow Serving
Facilité d’utilisationÉlevéeFaibleMoyenne
ConfigurationAutomatiqueManuelleManuelle
ScalabilitéIntégréeConfigurations requisesLimitée
Intégration avec l’IANativement intégréNon spécifiqueSeulement pour les modèles TensorFlow

BentoML brille par sa facilité d’utilisation et son intégration rapide avec les infrastructures cloud, le rendant idéal pour les data scientists sans expérience en DevOps.


Conclusion

BentoML est une plateforme polyvalente et efficace qui permet aux développeurs d’IA de déployer et d’évoluer des modèles rapidement et facilement. Son intégration avec divers outils d’IA, son accent sur l’optimisation des performances et sa convivialité en font une solution idéale tant pour les débutants que pour les experts en MLOps.

Pour plus d’informations, consultez la documentation officielle sur GitHub ou le dépôt d’exemples sur GitHub.

Source : actualités intelligence artificielle