BentoML: Simplificando MLOps para principiantes

Una solución eficiente para la implementación y gestión de modelos de IA.

El mundo del aprendizaje automático no solo implica entrenar modelos, sino también desplegarlos en producción de manera eficiente. Para muchos científicos de datos, las tareas de DevOps como la creación de contenedores Docker, la gestión de Kubernetes o la configuración de despliegues en la nube pueden ser un obstáculo importante. Aquí es donde BentoML se convierte en un aliado clave.

¿Qué es BentoML?

BentoML es un framework de código abierto diseñado para la implementación, escalado y servicio de modelos de aprendizaje automático. Su objetivo es simplificar el proceso de MLOps (Machine Learning Operations) proporcionando herramientas que automatizan tareas clave como:

  • Creación y gestión de imágenes Docker.
  • Configuración automática de infraestructura y entornos.
  • Escalado dinámico de aplicaciones según demanda.
  • Seguridad mediante autenticación API y control de acceso.
  • Integración con múltiples plataformas de nube y herramientas de IA.

Además de ser una herramienta potente, BentoML forma parte de un ecosistema completo que incluye:

  • BentoCloud: Plataforma de despliegue en la nube.
  • OpenLLM: Marco de trabajo para ejecutar grandes modelos de lenguaje.
  • OIC Image Builder: Creación optimizada de imágenes para despliegues eficientes.
  • VLLM: Herramienta para inferencia optimizada de modelos de IA.

Construcción de un servicio de conversión de texto a voz (TTS) con BentoML

Para ilustrar el uso de BentoML, se desarrollará un servicio de conversión de texto a voz (Text-to-Speech – TTS) utilizando el modelo Bark de Hugging Face. El servicio se desplegará en la nube con BentoCloud.

1. Configuración del proyecto

  1. Instalar BentoML pip install bentoml
  2. Crear el archivo app.py con la lógica de procesamiento del modelo:
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)

2. Configurar bentofile.yaml

El archivo bentofile.yaml define la configuración del entorno y los comandos para construir el servicio.

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

3. Definir las dependencias en requirements.txt

bentoml
transformers
torch
scipy

Despliegue del servicio TTS con BentoCloud

Para desplegar la aplicación en BentoCloud, primero se debe iniciar sesión con el siguiente comando:

bentoml cloud login

Después, se ejecuta:

bentoml deploy

Esto genera una imagen Docker, configura la infraestructura y despliega el servicio de IA.

Prueba y monitoreo del servicio

Pruebas desde la consola

Para probar el servicio con una solicitud HTTP, se puede utilizar curl:

curl -s -X POST \
    'https://bento-bark-bpaq-39800880.mt-guc1.bentoml.ai/generate' \
    -H 'Content-Type: application/json' \
    -d '{"text": "Hola, este es un mensaje de prueba.", "voice_preset": ""}' \
    -o output.mp3

Esto generará un archivo de audio output.mp3 con el texto convertido en voz.

Monitoreo con BentoCloud

BentoCloud ofrece monitoreo nativo de métricas sin necesidad de configurar herramientas externas como Prometheus o Grafana. Dentro del panel de Monitoring, se pueden visualizar:

  • Uso de GPU y CPU.
  • Tiempos de respuesta del modelo.
  • Número de solicitudes por segundo.
  • Errores y registros detallados.

Comparación de BentoML con otras soluciones

CaracterísticaBentoMLKubernetes & DockerTensorFlow Serving
Facilidad de usoAltaBajaMedia
ConfiguraciónAutomáticaManualManual
EscalabilidadIntegradaRequiere configuraciónLimitada
Integración con IANativaNo específicaSolo modelos TensorFlow

BentoML destaca por su facilidad de uso y rápida integración con infraestructuras en la nube, lo que lo convierte en una opción ideal para científicos de datos sin experiencia en DevOps.

Conclusión

BentoML es una solución eficiente y potente para la implementación de modelos de IA, eliminando la necesidad de conocimientos avanzados en DevOps. Su ecosistema flexible y escalable permite a los científicos de datos y empresas llevar modelos a producción de manera ágil y segura.

Para más información, consulta el repositorio en GitHub.

Scroll al inicio