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.