HuggingFacePipeline en LangChain
HuggingFacePipeline permite la ejecución local de modelos alojados en Hugging Face Hub. Esta aproximación descarga los pesos del modelo a tu infraestructura y utiliza tu propio hardware (CPU o GPU) para la inferencia, ofreciendo privacidad absoluta y control total sin depender de servicios externos.
Es ideal para investigación, desarrollo offline o cuando las políticas de datos impiden el uso de APIs en la nube. Sin embargo, requiere recursos de hardware considerables dependiendo del tamaño del modelo elegido.
Instalación y configuración
Para utilizar esta integración, es necesario instalar el paquete langchain-huggingface junto con las librerías base de transformers.
pip install langchain-huggingface transformers torch
Creación de un Pipeline local
El pipeline carga el modelo en memoria. Puedes especificar parámetros para optimizar el uso de recursos, como la cuantización o el mapeo automático de dispositivos.
- 1. Configuración del Pipeline:
from langchain_huggingface import HuggingFacePipeline
# Cargar un modelo ligero para generación de texto
llm = HuggingFacePipeline.from_model_id(
model_id="gpt2", # Modelo de ejemplo ligero
task="text-generation",
pipeline_kwargs={
"max_new_tokens": 100,
"top_k": 50,
"temperature": 0.7,
},
)
print(llm.invoke("La inteligencia artificial es"))
- 2. Uso con ChatHuggingFace:
Para modelos instructivos o de chat, es recomendable envolver el pipeline en ChatHuggingFace para manejar correctamente el formato de los mensajes.
from langchain_huggingface import ChatHuggingFace
chat_model = ChatHuggingFace(llm=llm)
Consideraciones de Hardware
La ejecución local depende críticamente de tu hardware. Si dispones de una GPU NVIDIA, asegúrate de tener instalada la versión correcta de torch con soporte CUDA para acelerar la inferencia.
# Ejemplo de configuración para usar GPU si está disponible
pipeline_kwargs={
"device_map": "auto", # Usa GPU automáticamente si es posible
"torch_dtype": "auto"
}
HuggingFaceEndpoint en LangChain
HuggingFaceEndpoint es la alternativa para consumir modelos a través de la API de Inferencia Serverless de Hugging Face. A diferencia del pipeline local, no requiere descargar el modelo ni tener hardware potente, ya que la computación se realiza en los servidores de Hugging Face.
Esta opción es excelente para probar modelos grandes (como Llama 3 70B o Mixtral) que no cabrían en la memoria de un ordenador personal estándar.
Configuración del Token
Para usar la API, necesitas un User Access Token de Hugging Face.
-
1. Obtención del token: Ve a tus ajustes en Hugging Face, sección "Access Tokens", y crea un token con permisos de lectura.
-
2. Configuración en Python:
import os
from dotenv import load_dotenv
load_dotenv()
# Asegúrate de tener HUGGINGFACEHUB_API_TOKEN en tu .env
Uso de HuggingFaceEndpoint
La clase HuggingFaceEndpoint se conecta a la API remota. Puedes elegir entre miles de modelos disponibles en el Hub.
- 1. Inicialización del Endpoint:
from langchain_huggingface import HuggingFaceEndpoint
llm_remoto = HuggingFaceEndpoint(
repo_id="HuggingFaceH4/zephyr-7b-beta",
task="text-generation",
max_new_tokens=512,
do_sample=True,
temperature=0.7
)
response = llm_remoto.invoke("Explica qué es un Transformer en NLP")
print(response)
Integración con Cadenas (Chains)
Ambas opciones (Pipeline y Endpoint) son totalmente compatibles con el ecosistema de LangChain y pueden usarse dentro de cadenas LCEL.
- 1. Ejemplo de cadena con LCEL:
from langchain_core.prompts import PromptTemplate
template = PromptTemplate.from_template(
"Resume el siguiente concepto técnico en una frase: {concepto}"
)
chain = template | llm_remoto
print(chain.invoke({"concepto": "Regularización en Machine Learning"}))
Comparativa: Pipeline vs Endpoint
-
Pipeline (Local):
- Pros: Privacidad total, sin latencia de red, sin costes por token.
- Contras: Requiere hardware potente, descarga inicial lenta, gestión de dependencias compleja.
-
Endpoint (Remoto):
- Pros: Acceso inmediato a modelos grandes, no requiere GPU local, fácil de configurar.
- Contras: Dependencia de internet, límites de rate (en capa gratuita), datos viajan a servidores externos.
Fuentes y referencias
Documentación oficial y recursos externos para profundizar en LangChain
Documentación oficial de LangChain
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, LangChain es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de LangChain
Explora más contenido relacionado con LangChain y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes de esta lección
Instalar langchain-huggingface y transformers, crear pipelines locales con HuggingFacePipeline, configurar modelos para ejecución en CPU o GPU, optimizar recursos con cuantización, y entender las ventajas y limitaciones de modelos locales.
Cursos que incluyen esta lección
Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje