Saltar al contenido principal

Cómo desplegar LLMs con BentoML: Guía paso a paso

Esta guía te muestra cómo crear una aplicación de IA de respuesta a preguntas, servirla localmente y desplegarla en BentoCloud, todo ello con unas pocas líneas de Python.
Actualizado 24 ene 2025  · 20 min de lectura

Muchos científicos de datos e ingenieros de aprendizaje automático se enfrentan a retos con herramientas como Docker, Kubernetes y Terraform, así como con la construcción de infraestructuras seguras para modelos de IA.

BentoML simplifica este proceso, permitiéndote construir, servir y desplegar aplicaciones de IA con sólo unas pocas líneas de código Python.

Este tutorial es una guía paso a paso para quienes deseen desplegar su propia aplicación de IA, accesible desde cualquier lugar mediante un simple comando CURL. Aprenderás sobre el marco BentoML, a crear localmente una aplicación de IA de respuesta a preguntas y a desplegar el modelo Phi 3 mini en BentoCloud.

¿Qué es BentoML?

BentoML es un marco de servicio y despliegue de aprendizaje automático que agiliza el despliegue y escalado de modelos de IA. Automatiza tareas como la creación de imágenes Docker, la configuración de instancias, la gestión de la infraestructura y la seguridad, y las funciones esenciales necesarias para un servidor listo para producción.

Con BentoML, puedes desarrollar y desplegar modelos de IA personalizados, modelos preentrenados o soluciones afinadas en pocos minutos con un sencillo código Python. Proporciona la flexibilidad necesaria para escalar eficientemente dentro de tu entorno de nube, al tiempo que garantiza que mantienes un control total sobre la seguridad y el cumplimiento.

BentoML forma parte del conjunto de herramientas MLOps. Descubre otras herramientas LLMOps de primer nivel para formar, seguir, desplegar, orquestar, probar, supervisar y gestionar la infraestructura leyendo el blog Las 15 mejores herramientas LLMOps para crear aplicaciones de IA en 2024.

Esquema: Cómo funciona BentoML

Cómo funciona BentoML | Fuente de la imagen: BentoML

La estrella brillante del ecosistema Bento es su nube: BentoCloud es una extensión del marco de BentoML, que ofrece herramientas y servicios adicionales para facilitar aún más el despliegue, la supervisión y el escalado de los modelos de IA. 

Al registrarse, los usuarios pueden acceder a créditos gratuitos para empezar, lo que lo convierte en una opción atractiva para desarrolladores y empresas.

Si eres una persona sin conocimientos técnicos que busca una solución de no-código a bajo-código para desarrollar una aplicación LLM, te recomiendo que sigas la guía Local AI with Docker, n8n, Qdrant, and Ollama.

Desarrolla hoy tus habilidades MLOps

Empieza desde cero y adquiere habilidades MLOps para desarrollar tu carrera profesional.
Empieza a aprender gratis

Primeros pasos con BentoML

En esta sección, serviremos una sencilla aplicación de IA que toma las preguntas y el contexto del usuario y genera la respuesta.

Empezaremos instalando BentoML, PyTorch y la biblioteca Transformers mediante pip. Ejecuta los siguientes comandos en tu terminal:  

$ pip install bentoml
$ pip install torch
$ pip install transformers

A continuación, crearemos un archivo service.py para definir el servidor de IA. 

Utilizando comandos BentoML, importaremos la canalización Transformers, que nos permite cargar el modelo y realizar la inferencia con sólo 2 líneas de código.

Configuraremos entradas de texto y contexto de ejemplo, configuraremos el servicio BentoML con parámetros como el número de CPUs y el tiempo de espera del tráfico, e inicializaremos la clase Question_Answering utilizando la canalización Transformers.

Por último, crearemos una API llamada generate(), que toma entradas y salidas y devuelve la respuesta generada.

from __future__ import annotations

import bentoml

with bentoml.importing():
    from transformers import pipeline


EXAMPLE_INPUT = "How can I generate a secure password?"
EXAMPLE_CONTEXT = """
To generate a secure password, you can use tools like the LastPass Password Generator.
These tools create strong, random passwords that help prevent security threats by ensuring your accounts are protected against hacking attempts.
A secure password typically includes a mix of uppercase and lowercase letters, numbers, and special characters. Avoid using easily guessable information like names or birthdays.
Using a password manager like LastPass can also help you store and manage these secure passwords effectively.
"""



@bentoml.service(
    resources={"cpu": "4"},
    traffic={"timeout": 10},
)
class Question_Answering:
    def __init__(self) -> None:
        # Load model into pipeline
        self.pipe = pipeline(
            "question-answering",
            model="deepset/roberta-base-squad2",
        )

    @bentoml.api
    def generate(
        self,
        text: str =EXAMPLE_INPUT,
        doc: str = EXAMPLE_CONTEXT,
    ) -> str:
        result = self.pipe(question=text, context=doc)
        return result["answer"]

Sirve el servicio AI localmente escribiendo el siguiente comando en el terminal: 

$ bentoml serve service:Question_Answering 

Como puedes ver, hemos proporcionado al comando anterior el nombre del archivo (service) y el nombre de la clase Python (Question_Answering ) para la inferencia del modelo de IA.

En unos segundos, generará una URL que podrás copiar y pegar en el navegador para acceder al servidor BentoML:

[cli] Starting production HTTP BentoServer from "app:Question_Answering" listening on http://localhost:3000 (Press CTRL+C to quit)

El servidor BentoML es bastante similar a la interfaz de usuario swagger de FastAPI.

Servidor Bento: Swager UI.

Vamos a probar nuestro servidor utilizando la opción "Probar". 

Nuestro servicio de IA funciona correctamente y ha generado una respuesta precisa:

Prueba la API utilizando SwagerUI.

También podemos acceder al servidor de IA utilizando el comando CURL. Hagamos una pregunta diferente y contextualicémosla:

curl -X 'POST' \
  'http://localhost:3000/generate' \
  -H 'accept: text/plain' \
  -H 'Content-Type: application/json' \
  -d '{
  "text": "How can I buy a cheap car?",
  "doc": "Start by setting a budget and exploring sources like online marketplaces (Craigslist, Facebook Marketplace, Cars.com), local dealerships, or government auctions. Inspect the car thoroughly for issues like rust or mechanical problems, and consider bringing a trusted mechanic to avoid future repair costs. Research the reliability of specific brands and models using tools like Kelley Blue Book or Consumer Reports. Finally, negotiate the price to secure the best deal. Following these steps can help you find a dependable car within your budget."
}'

Nuestro servicio de IA funciona sin problemas, y tardó 1 segundo en generar una respuesta incluso en la CPU:

negotiate the price

Despliegue de Phi 3 Mini 4k Instruct en BentoCloud

Ha llegado el momento de crear una aplicación adecuada de IA de grandes modelos lingüísticos (LLM) y desplegarla en BentoML con el mínimo esfuerzo y recursos. 

Utilizaremos el marco vLLM para crear una inferencia LLM de alto rendimiento y desplegarla en una instancia de GPU en BentoCloud. Aunque pueda parecer complejo, BentoCloud se encarga de la mayor parte del trabajo pesado, incluida la configuración de la infraestructura, para que puedas centrarte en crear y desplegar tu servicio.

1. Clonar el proyecto BentoML vLLM

BentoML ofrece mucho código de ejemplo y recursos para varios proyectos LLM. Para empezar, clonaremos el repositorio BentoVLLM. 

Navega hasta el proyecto Phi 3 Mini 4k, e instala todas las librerías Python necesarias:

$ git clone https://github.com/bentoml/BentoVLLM.git
$ cd BentoVLLM/phi-3-mini-4k-instruct
$ pip install -r requirements.txt

Este es el aspecto del directorio del proyecto con todos los archivos:

Directorio del proyecto con todos los archivos necesarios.

2. Modificar el bentofile.yaml

Modificaremos el bentofile.yaml para cambiar los nombres del propietario y del escenario. 

bentofile.yaml es más sencillo que Dockerfile y utiliza diferentes comandos para configurar la infraestructura, el entorno y el servidor; puedes aprender todos los comandos en las opciones de compilación de Bento.

service: 'service:VLLM'
labels:
  owner: Abid
  stage: Guide
include:
  - '*.py'
  - 'bentovllm_openai/*.py'
python:
  requirements_txt: './requirements.txt'
  lock_packages: false
docker:
  python_version: "3.11"

3. Comprender la service.py archivo

No modificaremos el archivo service.py, sino que aprenderemos sobre él. 

  1. El código crea un servidor que puede recibir una pregunta o indicación de un usuario y generar una respuesta utilizando un modelo de IA preentrenado (Phi-3-mini-4k-instruct). 
  2. Utiliza @bentoml.service para gestionar la implantación y los recursos, como la configuración de las GPU y la gestión del tráfico.
  3. La API generate se define mediante el decorador @bentoml.api. Toma como entradas una pregunta del usuario, una pregunta opcional del sistema y un límite máximo de fichas, que se proporcionan al motor de inferencia vLLM para generar la respuesta.  
  4. El método generate transmite la salida del modelo en trozos, generando fichas en cuanto están disponibles.
import uuid
from typing import AsyncGenerator, Optional

import bentoml
from annotated_types import Ge, Le
from typing_extensions import Annotated

from bentovllm_openai.utils import openai_endpoints


MAX_TOKENS = 1024

PROMPT_TEMPLATE = """<|system|>
{system_prompt}<|end|>
<|user|>
{user_prompt}<|end|>
<|assistant|>
"""

SYSTEM_PROMPT = """You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe. Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.

If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information."""

MODEL_ID = "microsoft/Phi-3-mini-4k-instruct"

@openai_endpoints(model_id=MODEL_ID)
@bentoml.service(
    name="bentovllm-phi-3-mini-4k-instruct-service",
    traffic={
        "timeout": 300,
        "concurrency": 256, # Matches the default max_num_seqs in the VLLM engine
    },
    resources={
        "gpu": 1,
        "gpu_type": "nvidia-tesla-t4",
    },
)
class VLLM:

    def __init__(self) -> None:
        from transformers import AutoTokenizer
        from vllm import AsyncEngineArgs, AsyncLLMEngine

        ENGINE_ARGS = AsyncEngineArgs(
            model=MODEL_ID,
            max_model_len=MAX_TOKENS,
            dtype="half",
            enable_prefix_caching=True,
            disable_sliding_window=True,
        )

        self.engine = AsyncLLMEngine.from_engine_args(ENGINE_ARGS)

        self.tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)

    @bentoml.api
    async def generate(
        self,
        prompt: str = "Explain superconductors in plain English",
        system_prompt: Optional[str] = SYSTEM_PROMPT,
        max_tokens: Annotated[int, Ge(128), Le(MAX_TOKENS)] = MAX_TOKENS,
    ) -> AsyncGenerator[str, None]:
        from vllm import SamplingParams

        SAMPLING_PARAM = SamplingParams(max_tokens=max_tokens)

        if system_prompt is None:
            system_prompt = SYSTEM_PROMPT
   
        prompt = PROMPT_TEMPLATE.format(user_prompt=prompt, system_prompt=system_prompt)
        stream = await self.engine.add_request(uuid.uuid4().hex, prompt, SAMPLING_PARAM)

        cursor = 0
        async for request_output in stream:
            text = request_output.outputs[0].text
            yield text[cursor:]
            cursor = len(text)

Recomiendo cursar la asignatura Desarrollo de aplicaciones de IA para aprender a crear aplicaciones potenciadas por IA con las últimas herramientas para desarrolladores de IA, como la API OpenAI, Hugging Face y LangChain.

4. Configuración de BentoCloud

Ve a bentofile.yaml y añade la variable de entorno para el token Cara de Abrazo en la última línea. Esto nos ayudará a cargar el modelo de forma segura y sin problemas desde el servidor de Cara Abrazada:

envs:
  - name: HF_TOKEN

Conéctate a BentoCloud utilizando la CLI:

$ bentoml cloud login

Te pedirá que crees la cuenta y luego te pedirá que crees el token de la API. 

Generar una clave API de BentoCloud.

Después de crear con éxito el token API, verás el mensaje de éxito en tu terminal:

Inicio de sesión con éxito de BentoCloud en el terminal.

5. Despliegue en BentoCloud

Antes de desplegar el servicio de IA en BentoCloud, tenemos que crear una variable de entorno en BentoCloud yendo a la pestaña "Secretos" y proporcionando el nombre de la clave y la clave API de Hugging Face.

Configurar los Secretos en BentoCloud.

Después, utiliza el siguiente comando para desplegar el servicio de IA:

$ bentoml deploy . --secret huggingface

Tardarás unos minutos en descargar el modelo y configurar el entorno para ejecutar el servidor.

Despliega el servicio vLLM en BentoCloud.

Puedes comprobar el estado de tu servicio de IA yendo a la pestaña "Despliegues".

Construir el contenedor para BentoCloud.

También puedes comprobar todos los registros y observar lo que ocurre en segundo plano.

Comprobando los registros de construcción de BentoCloud.

6. Acceder al servicio de IA desplegado

Una vez desplegado con éxito el servicio de IA, empezaremos a probar el servicio Phi 3 Mini vLLM.

Para empezar, basta con hacer clic en la pestaña "Playground" de la opción "Despliegues", introducir la solicitud y hacer clic en el botón "Enviar" para generar la respuesta. La respuesta se transmitirá en tiempo real.

Probando la aplicación LLM en el campo de juego de BentoCloud.También podemos utilizar el cliente Python de BentoML para acceder al modelo desplegado y generar una respuesta. Esto te ayudará a integrar el servicio de IA en tu aplicación:

import bentoml

with bentoml.SyncHTTPClient(
    "https://bentovllm-phi-3-mini-4-k-instruct-service-ka76-39800880.mt-guc1.bentoml.ai"
) as client:
    response = client.generate(
        prompt="What is the largest lake in the world?"
    )
    for chunk in response:
        print(chunk, end="", flush=True)

Imagen que muestra una respuesta LLM generada en el terminal.

La forma más popular y sencilla de acceder al servicio de IA desde cualquier sistema operativo es utilizar el comando CURL en el terminal:

$ curl -s -X POST \
    'https://bentovllm-phi-3-mini-4-k-instruct-service-ka76-39800880.mt-guc1.bentoml.ai/generate' \
    -H 'Content-Type: application/json' \
    -d '{
        "prompt": "What is the largest lake in the world?"
    }' 

Imagen de un terminal probando un servicio de IA con el comando CURL.

7. Observabilidad

Ve a la pestaña "Monitorización" y revisa todas las estadísticas relacionadas con los LLM, las peticiones de los usuarios, el hardware y otros análisis de monitorización que te ayudarán a evaluar el rendimiento del servidor de IA. 

También puedes consultar la pestaña "Registros" o utilizar la CLI de BentoML para generar registros en tiempo real.

Panel de observabilidad BentoML.

Los modelos de servicio y despliegue son una parte del proceso MLOps. Al completar el curso MLOps Totalmente Automatizados, podrás aprender a construir una arquitectura MLOps, técnicas CI/CD/CM/CT y patrones de automatización para desplegar sistemas ML que puedan aportar valor a lo largo del tiempo. 

Conclusión

Si quieres saber más sobre el ecosistema BentoML, lo mejor es que empieces a construir y desplegar tu servicio de IA. Recibes créditos gratuitos que te permiten utilizar GPUs y CPUs para explorar diversos servicios. Esto podría incluir una aplicación de Generación Mejorada por Recuperación (RAG), llamada a funciones, LLMs Agenticos, o una aplicación multimodal que procese imágenes y texto para generar respuestas.

En este tutorial práctico, aprendimos sobre BentoML y cómo servir localmente cualquier aplicación de IA con sólo unas pocas líneas de código. A continuación, utilizamos el motor de inferencia vLLM para construir un servicio BentoML y lo desplegamos en BentoCloud con unos sencillos pasos.

Considera la posibilidad de cursar la carrera de Ingeniero de IA Asociado para Desarrolladores para aprender a integrar la IA en aplicaciones de software utilizando API y bibliotecas de código abierto.

Desarrollar aplicaciones de IA

Aprende a crear aplicaciones de IA utilizando la API OpenAI.

Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Soy un científico de datos certificado que disfruta creando aplicaciones de aprendizaje automático y escribiendo blogs sobre ciencia de datos. Actualmente me centro en la creación de contenidos, la edición y el trabajo con grandes modelos lingüísticos.

Temas

Aprende más sobre IA con estos cursos

curso

Developing LLM Applications with LangChain

3 hr
13K
Discover how to build AI-powered applications using LLMs, prompts, chains, and agents in LangChain.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

tutorial

Tutorial sobre cómo crear aplicaciones LLM con LangChain

Explore el potencial sin explotar de los grandes modelos lingüísticos con LangChain, un marco Python de código abierto para crear aplicaciones avanzadas de IA.
Moez Ali's photo

Moez Ali

12 min

tutorial

Guía para principiantes de LlaMA-Factory WebUI: Ajuste de los LLM

Aprende a afinar los LLM en conjuntos de datos personalizados, evaluar el rendimiento y exportar y servir modelos sin problemas utilizando el marco de trabajo de bajo/ningún código de LLaMA-Factory.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

Ajuste fino de LLaMA 2: Guía paso a paso para personalizar el modelo de lenguaje grande

Aprende a ajustar Llama-2 en Colab utilizando nuevas técnicas para superar las limitaciones de memoria y computación y hacer más accesibles los grandes modelos lingüísticos de código abierto.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

Cómo formar a un LLM con PyTorch

Domine el proceso de entrenamiento de grandes modelos lingüísticos con PyTorch, desde la configuración inicial hasta la implementación final.
Zoumana Keita 's photo

Zoumana Keita

8 min

tutorial

RAG Con Llama 3.1 8B, Ollama y Langchain: Tutorial

Aprende a crear una aplicación RAG con Llama 3.1 8B utilizando Ollama y Langchain, configurando el entorno, procesando documentos, creando incrustaciones e integrando un recuperador.
Ryan Ong's photo

Ryan Ong

12 min

tutorial

Guía introductoria para el ajuste preciso de los LLM

El ajuste preciso de los grandes modelos lingüísticos (LLM) ha revolucionado el procesamiento del lenguaje natural (PLN) y ofrece capacidades sin precedentes en tareas como la traducción lingüística, el análisis del sentimiento y la generación de textos. Este enfoque transformador aprovecha modelos preentrenados como el GPT-2 y mejora su rendimiento en dominios específicos mediante el proceso de ajuste preciso.
Josep Ferrer's photo

Josep Ferrer

12 min

Ver másVer más