Introducción
La generación de texto ha surgido como una capacidad revolucionaria, transformando la forma en que las máquinas interpretan y producen texto similar al humano. Este aumento de popularidad ha llevado al desarrollo de numerosas herramientas diseñadas para optimizar y mejorar el proceso de trabajar con LLMs.
La rápida expansión de los Modelos de Lenguaje de Gran Escala, con nuevas versiones apareciendo casi semanalmente, ha impulsado un aumento concurrente en las opciones de alojamiento para soportar esta tecnología. Entre las muchas herramientas disponibles, la Inferencia de Generación de Texto (TGI) de Hugging Face se destaca, permitiéndonos ejecutar un LLM como servicio en nuestras máquinas locales.
Esta guía profundizará en por qué Hugging Face TGI es una innovación significativa y cómo puedes usarla para desarrollar modelos de IA sofisticados capaces de generar texto que es cada vez más indistinguible de la escritura humana.
¿Qué es la Inferencia de Generación de Texto de Hugging Face?
La Inferencia de Generación de Texto (TGI) de Hugging Face es un marco escrito en Rust y Python para implementar y servir Modelos de Lenguaje de Gran Escala. Es un kit de herramientas listo para producción diseñado para este propósito.
Hugging Face desarrolla y distribuye TGI bajo la licencia HFOILv1.0, permitiendo el uso comercial siempre que funcione como una herramienta auxiliar dentro del producto o servicio, en lugar de ser la característica principal. Los principales desafíos que aborda son:
Características Clave de la Inferencia de Generación de Texto (TGI) de Hugging Face
- Generación de Texto de Alto Rendimiento
— TGI emplea técnicas como el Paralelismo de Tensores, que distribuye modelos grandes en múltiples GPUs, y el agrupamiento dinámico, que agrupa indicaciones sobre la marcha dentro del servidor, para optimizar el rendimiento de LLMs de código abierto populares, incluyendo StarCoder, BLOOM, GPT-NeoX, Llama y T5. - Uso Eficiente de Recursos
— TGI utiliza agrupamiento continuo, código optimizado y Paralelismo de Tensores para manejar múltiples solicitudes simultáneamente mientras minimiza el uso de recursos. - Flexibilidad y Seguridad
— TGI soporta varias características de seguridad, como marcas de agua, modificación de logits (modificando los logits de tokens específicos mediante la infusión de un valor de sesgo) y secuencias de parada para asegurar un uso responsable y controlado del LLM.
Hugging Face ha optimizado la arquitectura de algunos LLMs para que se ejecuten más rápido con TGI, incluyendo modelos populares como LLaMA, Falcon7B y Mistral. Se puede encontrar una lista completa de modelos compatibles en su documentación.
¿Por qué usar Hugging Face TGI?
Hugging Face se ha convertido en la plataforma de referencia para desarrollar IA con capacidades de lenguaje natural. Alberga una gran cantidad de modelos líderes de código abierto, lo que la convierte en un motor de innovación en PLN. Tradicionalmente, estos modelos eran demasiado grandes para ejecutarse localmente, lo que obligaba a depender de servicios en la nube.
Sin embargo, los avances recientes en técnicas de cuantización como QLoRa y GPTQ han hecho que algunos LLMs sean manejables en dispositivos cotidianos, incluyendo computadoras locales.
Hugging Face TGI está diseñado específicamente para habilitar LLMs como servicio en máquinas locales. Este enfoque aborda el desafío de iniciar un LLM manteniendo el modelo listo en segundo plano para respuestas rápidas, evitando largas esperas por cada indicación. Imagina tener un endpoint con una colección de los mejores modelos de lenguaje listos para generar texto bajo demanda.
Lo que destaca de TGI es su implementación sencilla. Soporta varias arquitecturas de modelos optimizadas, haciendo que el despliegue sea rápido y fácil.
Además, TGI ya está impulsando varios proyectos en vivo. Algunos ejemplos incluyen:

- Hugging Chat, una interfaz de código abierto para modelos de acceso abierto.
- OpenAssistant, una iniciativa comunitaria de código abierto para entrenar LLMs.
- nat.dev, una plataforma para explorar y comparar LLMs.
Sin embargo, hay una limitación notable: TGI aún no es compatible con GPUs Mac basadas en ARM, incluyendo la serie M1 y modelos posteriores.
Configuración de Hugging Face TGI
Primero, configura el endpoint de Hugging Face TGI.

Para instalar y ejecutar Hugging Face TGI localmente, comienza instalando Rust. Después, configura un entorno virtual de Python con Python versión 3.9 o superior, por ejemplo, usando conda:
Instalando Rust
curl --proto ‘=https’ --tlsv1.2 -sSf https://sh.rustup.rs | sh
Creando un entorno virtual de Python
conda create -n text-generation-inference python=3.9 conda activate text-generation-inference
Además, es esencial instalar Protoc. Hugging Face recomienda usar la versión 21.12 para la mejor compatibilidad. Ten en cuenta que necesitarás privilegios sudo para realizar esta instalación.
PROTOC_ZIP=protoc-21.12-linux-x86_64.zip curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/$PROTOC_ZIP sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc sudo unzip -o $PROTOC_ZIP -d /usr/local ‘include/*’ rm -f $PROTOC_ZIP
Primero, describiré el proceso para instalarlo desde cero, que puede no ser sencillo. Si encuentras algún problema durante este proceso, puedes optar por saltar adelante y utilizar directamente una imagen Docker, que es más simple. Ambos escenarios serán cubiertos.
Una vez que todos los requisitos previos estén cumplidos, podemos proceder a configurar TGI. Comienza clonando el repositorio de GitHub:
git clone https://github.com/huggingface/text-generation-inference.git
Luego, navega al directorio de TGI en tu máquina local e instálalo usando los siguientes comandos:
cd text-generation-inference/ BUILD_EXTENSIONS=False make install
Ahora, exploremos cómo utilizar TGI, tanto con Docker como sin él. Para la demostración, emplearé el modelo Falcon-7B, que está licenciado bajo Apache 2.0.
Lanzando un modelo sin Docker
El proceso de instalación ha generado un nuevo comando, text-generation-launcher, que inicia el servidor TGI. Para activar un endpoint usando el modelo Falcon-7B, simplemente ejecuta el siguiente comando:
text-generation-launcher --model-id tiiuae/falcon-7b-instruct --num-shard 1 --port 8080 --quantize bitsandbytes
Aquí hay un desglose de cada parámetro de entrada:
model-id: Se refiere al nombre específico del modelo tal como aparece en el Hugging Face Hub. En nuestro caso, para Falcon-7B, estiiuae/falcon-7b-instruct.num-shard: Ajusta este parámetro para que coincida con el número de GPUs disponibles para su utilización. El valor predeterminado es 1.port: Especifica el puerto en el que el servidor escuchará las solicitudes. El puerto predeterminado es 8080.quantize: Para usuarios con GPUs que tengan menos de 24 GB de VRAM, la cuantización del modelo es necesaria para evitar la sobrecarga de memoria. En los comandos anteriores, se seleccionabitsandbytespara la cuantización inmediata. Otra opción,GPTQ(gptq), también está disponible, aunque su funcionamiento puede ser menos familiar.
Aplicaciones de TGI
Hay varias formas de integrar el servidor de Inferencia de Generación de Texto (TGI) en tus aplicaciones. Una vez que esté operativo, puedes interactuar con él enviando una solicitud POST al endpoint /generate para obtener resultados.

Si optas por el streaming continuo de tokens con TGI, utiliza el endpoint en su lugar, como se demuestra en la siguiente sección. Estas solicitudes se pueden realizar usando tu herramienta preferida, como curl, Python o TypeScript. Para consultar el modelo servido por TGI con un script de Python, necesitarás instalar la siguiente biblioteca text-generation. Puedes hacerlo fácilmente ejecutando el siguiente comando pip:
pip install text-generation
Después de lanzar el servidor TGI, crea una instancia de InferenceClient() con la URL que apunta al endpoint que sirve el modelo. Luego, puedes invocar text_generation() para enviar solicitudes al endpoint usando Python.
from text_generation import Client client = Client(“http://127.0.0.1:8080”) client.text_generation(prompt=“Tu indicación aquí!”)
Para activar el streaming con el InferenceClient, simplemente establece stream=True. Esto te permitirá recibir tokens en tiempo real a medida que se generan en el servidor. Así es como puedes utilizar el streaming:
for token in client.text_generation(“Tu indicación aquí!”, max_new_tokens=12, stream=True): print(token)
Indicando un Modelo a Través de TGI
Ten en cuenta que estarás interactuando con el modelo desplegado en tu endpoint, que en nuestro caso es Falcon-7B. A través de TGI, establecemos un endpoint en vivo que facilita la obtención de respuestas del LLM elegido.
Como resultado, con Python, las indicaciones se pueden enviar directamente al LLM a través del cliente alojado en nuestro dispositivo local, accesible a través del puerto 8080. Por lo tanto, el script de Python correspondiente se vería así:
from text_generation import Client client = Client(“http://127.0.0.1:8080”) print(client.generate(“Traduce la siguiente oración al español: ‘What does Large Language Model mean?’”, max_new_tokens=500).generated_text)
Recibiremos una respuesta del modelo sin necesidad de instalarlo en nuestro entorno. En lugar de usar Python, podemos consultar el LLM con CURL, como se demuestra en el siguiente ejemplo:
curl 127.0.0.1:8080/generate
-X POST
-d ‘{“inputs”:“Code in Javascript a function to remove all spaces in a string and then print the string twice.”,“parameters”:{“max_new_tokens”:500}}’
-H ‘Content-Type: application/json’
Después de experimentar con TGI, demuestra una velocidad impresionante. Con Falcon-7B (con un límite de tokens de 500), solo toma unos segundos. En contraste, el enfoque de inferencia típico usando la biblioteca transformers requiere aproximadamente 30 segundos.
Integración con novita.ai usando el LLM de novita.ai

A partir de la versión 1.4.0, TGI ha introducido una API que es compatible con la API LLM de novita.ai. Esta nueva API de Mensajes permite una transición fluida para los clientes y usuarios de los modelos de novita.ai a LLMs de código abierto. La API está diseñada para una integración directa con las bibliotecas cliente de novita.ai o con herramientas de terceros como LangChain o LlamaIndex.

El soporte de TGI para Mensajes asegura que sus Endpoints de Inferencia sean completamente compatibles con la API LLM de novita.ai. Esta compatibilidad permite a los usuarios reemplazar fácilmente cualquier script existente que use modelos de novita.ai con LLMs abiertos alojados en endpoints de TGI sin ningún problema.
Esta actualización facilita un cambio sin esfuerzo, otorgando acceso inmediato a las amplias ventajas de los modelos de código abierto, incluyendo:
- Control total y transparencia con respecto a los modelos y los datos.
- Eliminación de preocupaciones sobre límites de tasa.
- Flexibilidad para adaptar los sistemas para cumplir con requisitos únicos.
A continuación se proporciona un ejemplo de cómo integrar TGI en el protocolo de finalización de chat de novita.ai:
from openai import OpenAI
client = OpenAI(
base_url=“https://api.novita.ai/v3/openai”,
# Obtén la clave API de NovitaAI consultando: https://novita.ai/get-started/Quick_Start.html#_3-create-an-api-key
api_key=“
model = “meta-llama/llama-3-8b-instruct” stream = True # o False max_tokens = 512
chat_completion_res = client.chat.completions.create( model=model, messages=[ { “role”: “system”, “content”: “Actúa como si fueras un asistente útil.”, }, { “role”: “user”, “content”: “¡Hola!”, } ], stream=stream, max_tokens=max_tokens, )
if stream: for chunk in chat_completion_res: print(chunk.choices[0].delta.content or “”, end=“”) else: print(chat_completion_res.choices[0].message.content)
Como es evidente, la biblioteca de novita.ai se puede utilizar para especificar nuestro ENDPOINT y nuestra contraseña de Hugging Face. Para obtener más información sobre esta integración, consulta la documentación de Hugging Face TGI.
Consejos Prácticos al Usar TGI
Conceptos fundamentales de los LLMs
Antes de sumergirte en HuggingFace TGI, es importante tener un buen conocimiento de los Modelos de Lenguaje de Gran Escala. Familiarízate con conceptos clave como tokenización, mecanismos de atención y la arquitectura Transformer. Estos fundamentos son esenciales para adaptar modelos y mejorar los resultados de generación de texto.
Preparación y optimización del modelo: entender Hugging Face
Aprende a preparar y optimizar modelos para tus necesidades específicas. Esto implica seleccionar el modelo apropiado, personalizar los tokenizadores y aplicar técnicas para mejorar el rendimiento sin comprometer la calidad.
Familiarízate con cómo funciona HuggingFace y cómo usar su HuggingFace Hub para el desarrollo de PLN. Un buen punto de partida es el tutorial “An Introduction to Using Transformers and Hugging Face”.
Comprender el concepto de ajuste fino (fine-tuning) también es esencial, ya que los modelos a menudo necesitan optimización para objetivos específicos. Puedes aprender cómo ajustar un modelo con la guía “An Introductory Guide to Fine-Tuning LLMs”.
Estrategias de generación
Investiga diferentes enfoques para la generación de texto, incluyendo búsqueda voraz (greedy search), búsqueda por haces (beam search) y muestreo top-k. Cada método tiene sus ventajas y desventajas, afectando la coherencia, creatividad y relevancia del texto generado.
Conclusión
El kit de herramientas TGI de Hugging Face permite a las personas adentrarse en la generación de texto con IA. Proporciona un kit de herramientas fácil de usar para implementar y alojar LLMs para aplicaciones sofisticadas de PLN que requieren texto similar al humano.
Aunque el auto-alojamiento de modelos de lenguaje grandes ofrece privacidad de datos y control de costos, requiere hardware robusto. Sin embargo, los avances recientes en el campo permiten que modelos más pequeños se utilicen directamente en nuestras máquinas locales.
novita.ai, la plataforma integral para la creatividad sin límites que te brinda acceso a más de 100 API. Desde generación de imágenes y procesamiento de lenguaje hasta mejora de audio y manipulación de video, con precios de pago por uso económicos, te libera de las tareas de mantenimiento de GPU mientras construyes tus propios productos. ¡Pruébalo gratis!
Lectura recomendada
Motor de Inferencia LLM de Novita AI: el mayor rendimiento y la inferencia más barata disponible
