Portada » LangChain y Hugging Face. Introducción
LangChain HuggingFace

LangChain y Hugging Face. Introducción

Integrar modelos de Hugging Face en aplicaciones de procesamiento de lenguaje natural (NLP) se ha visto facilitado notablemente por las posibilidades que aportan el uso del framework LangChain y, adicionalmente, la capacidad de construir soluciones desplegadas localmente gracias a LM Studio. La combinación de estas tecnologías permite aprovechar la gran colección de modelos preentrenados de Hugging Face y la flexibilidad de LangChain para la creación de flujos de trabajo personalizados para cada caso de uso.

En los siguientes apartados se mostrará de manera concisa cómo hacer uso de estos componentes para integrarlos en una aplicación específica, se usará un entorno de desarrollo basado en Python aunque las explicaciones serán similares para otros lenguajes/frameworks.

Configuración Inicial

Antes de comenzar, es necesario instalar los paquetes transformers y huggingface_hub de Python. Estos paquetes permiten acceder a los modelos de Hugging Face y ejecutarlos localmente a través de LangChain.

%pip install --upgrade --quiet transformers huggingface_hub

Cargar un Modelo de Hugging Face

Para cargar un modelo, se puede hacer uso de la clase HuggingFacePipeline en LangChain, especificando el ID del modelo y la tarea que se desea realizar. Esto tpermite cargar modelos directamente desde el Hugging Face Model Hub y ejecutarlos en tu entorno local.

from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline

hf = HuggingFacePipeline.from_model_id(
    model_id="gpt2",
    task="text-generation",
    pipeline_kwargs={"max_new_tokens": 10},
)

Crear y Ejecutar una «cadena»

LangChain facilita la creación de «chains» o cadenas, que son secuencias de operaciones a realizar con el texto. Puedes componer un modelo con un prompt utilizando PromptTemplate para formar un chain, lo que permite una interacción personalizada con el modelo cargado. En el siguiente ejemplo se crea una plantilla para un prompt que dará respuesta a una pregunta determinada construyendo una explicación razonada pasa a paso. Posteriormente se construye una chain que pasa el prompt al modelo cargado y finalmente se invoca (ejecuta) la cadena para obtener el resultado.

from langchain.prompts import PromptTemplate

template = """Question: {question}  

Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)

chain = prompt | hf

question = "What is electroencephalography?"

print(chain.invoke({"question": question}))

Posibilidades para la inferencia

Uso de GPU para Inferencia

LangChain ofrece soporte para realizar inferencia utilizando GPU, lo cual es útil para acelerar el procesamiento y manejar modelos grandes. Se puede especificar el dispositivo GPU durante la carga del modelo, o utilizar el mapeo automático de dispositivos con la biblioteca Accelerate si dispones de múltiples GPUs o modelos de gran tamaño.

gpu_llm = HuggingFacePipeline.from_model_id(
    model_id="gpt2",
    task="text-generation",
    device=0,  # Usa device_map="auto" para mapeo automático con Accelerate
    pipeline_kwargs={"max_new_tokens": 10},
)

Inferencia con Backend OpenVINO

Para despliegues que requieren alta eficiencia y bajo latencia, LangChain soporta el uso de OpenVINO como backend de inferencia. Esto permite ejecutar modelos en hardware Intel, optimizando el rendimiento y el consumo de recursos.

ov_llm = HuggingFacePipeline.from_model_id(
    model_id="gpt2",
    task="text-generation",
    backend="openvino",
    model_kwargs={"device": "CPU"},
    pipeline_kwargs={"max_new_tokens": 10},
)

Acceso a Endpoints de Hugging Face

LangChain permite acceder a endpoints de Hugging Face para integrar fácilmente capacidades de generación de texto y otros servicios de NLP en tus aplicaciones. Para esto, necesitarás obtener un token de API de Hugging Face y configurar el entorno adecuadamente. Esta opción facilita el desarrollo a cambio de establecer una dependencia con los mecanismo de inferencia de HuggingFace.

from langchain_community.llms import HuggingFaceEndpoint
from getpass import getpass

HUGGINGFACEHUB_API_TOKEN = getpass()
os.environ["HUGGINGFACEHUB_API_TOKEN"] = HUGGINGFACEHUB_API_TOKEN

repo_id = "mistralai/Mistral-7B-Instruct-v0.2"

llm = HuggingFaceEndpoint(
    repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN
)

La integración de Hugging Face con LangChain y LM Studio brinda una plataforma potente para el desarrollo de soluciones de NLP, combinando la accesibilidad de modelos preentrenados avanzados con la flexibilidad de un framework dedicado a la creación de aplicaciones de NLP.

Endpoints locales usando LM Studio

Frente a las opciones anteriores, el uso de LM Studio permite cargar de manera sencilla modelos del HuggingFace Hub y ejecutarlos de manera local, pudiendo así controlar la totalidad del entorno de desarrollo sin perder la facilidad de integración aportado por el uso de un endpoint. En este sentido LM Studio permite usar un servidor local totalmente compatible con el API de OpenAI, de manera que se simplifica la labor de integración, permitiendo el uso de diferentes modelos con un mismo API.

Conclusiones

La combinación de Hugging Face, LangChain y LM Studio constituye una poderosa alianza tecnológica que está democratizando el acceso a herramientas de NLP avanzadas, permitiendo a desarrolladores y empresas de todos los tamaños explorar y explotar el potencial del procesamiento de lenguaje natural en escenarios de cualquier tipo.

Si quieres adoptar soluciones basadas en IA para la gestión de datos en tu organización, no dudes en contactarnos.

Más información

Esta entrada también está disponible en: English Español

Artículos relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *