Saltar al contenido

Guía Completa para Principiantes sobre las Herramientas de Hugging Face LLM

10/01/2024
Guía Completa Para Principiantes Sobre Las Herramientas De Hugging Face Llm

Guía completa para principiantes sobre las herramientas de Modelos de Lenguaje de Hugging Face

Hugging Face es un laboratorio de investigación en Inteligencia Artificial y un centro que ha construido una comunidad compuesta por académicos, investigadores y entusiastas. En poco tiempo, Hugging Face ha logrado una presencia significativa en el espacio de la IA. Gigantes tecnológicos como Google, Amazon y Nvidia han fortalecido a la startup de IA Hugging Face con inversiones significativas, llevando su valoración a $4.5 mil millones.

En esta guía, introduciremos los transformadores, los LLM (Modelos de Lenguaje de Gran Escala) y cómo la biblioteca de Hugging Face desempeña un papel crucial en el fomento de una comunidad de IA de código abierto. También repasaremos las características esenciales de Hugging Face, que incluyen tuberías (pipelines), conjuntos de datos (datasets), modelos y más, con ejemplos prácticos en Python.[automatic_youtube_gallery type="search" search="Guía Completa para Principiantes sobre las Herramientas de Hugging Face LLM" cache="2419200" per_page="1" thumb_excerpt="0" player_description="0"]

Transformadores en PNL (Procesamiento del Lenguaje Natural)

En 2017, la Universidad de Cornell publicó un influyente artículo que presentó transformadores. Estos son modelos de aprendizaje profundo utilizados en PNL. Este descubrimiento impulsó el desarrollo de modelos de lenguaje de gran escala como ChatGPT.

Los Modelos de Lenguaje de Gran Escala o LLM son sistemas de IA que utilizan transformadores para comprender y crear texto parecido al humano. Sin embargo, crear estos modelos es costoso, a menudo requiere millones de dólares, lo que limita su accesibilidad a grandes empresas.

Hugging Face, fundada en 2016, tiene como objetivo hacer los modelos de PNL accesibles para todos. A pesar de ser una empresa comercial, ofrece una gama de recursos de código abierto que ayudan a las personas y organizaciones a construir y usar modelos transformadores de manera asequible. El aprendizaje automático consiste en enseñar a las computadoras a realizar tareas reconociendo patrones, mientras que el aprendizaje profundo, un subconjunto del aprendizaje automático, crea una red que aprende de forma independiente. Transformers es un tipo de arquitectura de aprendizaje profundo que utiliza de manera efectiva y flexible los datos de entrada, lo que la convierte en una opción popular para construir modelos de lenguaje de gran escala debido a los menores requisitos de tiempo de entrenamiento.

Cómo facilita Hugging Face los proyectos de PNL y LLM

Hugging Face ha simplificado el trabajo con LLM al ofrecer:

  1. Una gama de modelos preentrenados para elegir.
  2. Herramientas y ejemplos para ajustar estos modelos según tus necesidades específicas.
  3. Opciones de implementación fácil para varios entornos.

Un gran recurso disponible a través de Hugging Face es el Tablero de Líderes de LLM Abiertos. Funcionando como una plataforma integral, monitorea sistemáticamente, clasifica y evalúa la eficiencia de una amplia gama de Modelos de Lenguaje de Gran Escala (LLM) y chatbots, proporcionando un análisis distinguido de los avances en el dominio de código abierto.

Las referencias de LLM miden modelos a través de cuatro métricas:

  • Desafío de Razonamiento AI2 (25-shot) — una serie de preguntas sobre el programa de ciencias elementales.
  • HellaSwag (10-shot) — una prueba de inferencia de sentido común que, aunque simple para los humanos, es un desafío significativo para los modelos de vanguardia.
  • MMLU (5-shot) — una evaluación multifacética sobre la competencia de un modelo de texto en 57 dominios diversos, abarcando matemáticas básicas, derecho y ciencias de la computación, entre otros.
  • TruthfulQA (0-shot) — una herramienta para determinar la tendencia de un modelo a hacer eco de la desinformación en línea frecuentemente encontrada.

Los puntos de referencia, descritos con términos como «25-shot», «10-shot», «5-shot» y «0-shot», indican la cantidad de ejemplos de indicaciones que se le dan a un modelo durante el proceso de evaluación para medir su rendimiento y habilidades de razonamiento en varios dominios. En los paradigmas de «pocos ejemplos» (few-shot), se proporciona a los modelos una pequeña cantidad de ejemplos para ayudar a guiar sus respuestas, mientras que en un entorno de «0 ejemplos» (0-shot), los modelos no reciben ejemplos y deben confiar únicamente en su conocimiento preexistente para responder adecuadamente.

Componentes de Hugging Face

Pipelines

Las ‘pipelines’ son parte de la biblioteca de transformadores de Hugging Face y ofrecen una característica que ayuda en la fácil utilización de modelos preentrenados disponibles en el repositorio de Hugging Face. Proporciona una API intuitiva para una variedad de tareas, incluyendo análisis de sentimientos, respuesta a preguntas, modelado de lenguaje enmascarado, reconocimiento de entidades nombradas y resumen.

Las pipelines integran tres componentes centrales de Hugging Face:

  1. Tokenizer: Prepara tu texto para el modelo convirtiéndolo en un formato que el modelo puede entender.
  2. Model: Este es el corazón de la pipeline donde se hacen las predicciones reales basadas en la entrada preprocesada.
  3. Post-procesador: Transforma las predicciones en bruto del modelo en una forma legible por humanos.

Estas pipelines no solo reducen la codificación extensiva, sino que también ofrecen una interfaz fácil de usar para realizar varias tareas de PNL.

Aplicaciones de Transformadores usando la biblioteca de Hugging Face

Un punto destacado de la biblioteca de Hugging Face es la biblioteca Transformers, que simplifica las tareas de PNL conectando un modelo con las etapas de pre y post-procesamiento necesarias, agilizando el proceso de análisis. Para instalar e importar la biblioteca, utiliza los siguientes comandos:

pip install -q transformers from transformers import pipeline 

Una vez hecho esto, puedes ejecutar tareas de PNL comenzando con análisis de sentimientos, que clasifica el texto en sentimientos positivos o negativos. La poderosa función pipeline() de la biblioteca actúa como un concentrador que engloba otras pipelines y facilita aplicaciones específicas de tareas en los dominios de audio, visión y multimodal.

Aplicaciones prácticas

Clasificación de Texto

La clasificación de texto es muy sencilla con la función pipeline() de Hugging Face. Así es como puedes iniciar una pipeline de clasificación de texto:

classifier = pipeline("text-classification") 

Para una experiencia práctica, alimenta una cadena o lista de cadenas a tu pipeline para obtener predicciones, que se pueden visualizar de forma ordenada utilizando la biblioteca de Python Pandas. A continuación se muestra un fragmento de Python que demuestra esto:

sentences = ("Estoy emocionado de presentarte el maravilloso mundo de la IA.", "Espero que no te decepcione.") # Obtén resultados de clasificación para cada oración en la lista results = classifier(sentences) # Pasa por cada resultado e imprime la etiqueta y la puntuación for i, result in enumerate(results): print(f"Resultado {i + 1}:") print(f" Etiqueta: {result['label']}") print(f" Puntuación: {round(result['score'], 3)}n") 

Resultado

Resultado 1: Etiqueta: POSITIVO Puntuación: 1.0 Resultado 2: Etiqueta: POSITIVO Puntuación: 0.996 

Reconocimiento de Entidades Nombradas (NER)

NER es esencial para extraer objetos del mundo real denominados ‘entidades nombradas’ del texto. Utiliza la pipeline de NER para identificar estas entidades de manera efectiva:

ner_tagger = pipeline("ner", aggregation_strategy="simple") text = "Elon Musk es el CEO de SpaceX." outputs = ner_tagger(text) print(outputs) 

Resultado

Elon Musk: PER, SpaceX: ORG

Respuesta a Preguntas

La respuesta a preguntas implica extraer respuestas precisas a preguntas específicas de un contexto dado. Inicializa una pipeline de respuesta a preguntas e ingresa tu pregunta y contexto para obtener la respuesta deseada:

reader = pipeline("question-answering") text = "Hugging Face es una empresa que crea herramientas para PNL. Tiene su sede en Nueva York y fue fundada en 2016." question = "¿Dónde está basada Hugging Face?" outputs = reader(question=question, context=text) print(outputs) 

Resultado

{'score': 0.998, 'start': 51, 'end': 60, 'answer': 'Nueva York'}

La función pipeline de Hugging Face ofrece una gama de pipelines preconstruidas para diferentes tareas, además de clasificación de texto, NER y respuesta a preguntas. A continuación se detallan algunas de las tareas disponibles:

Tabla: Tareas de Pipeline de Hugging Face

TareaDescripciónIdentificador de Pipeline
Generación de TextoGenera texto basado en un indicio dadopipeline(task=”text-generation”)
ResumenResume un texto o documento largopipeline(task=”summarization”)
Clasificación de ImágenesEtiqueta una imagen de entradapipeline(task=”image-classification”)
Clasificación de AudioCategoriza datos de audiopipeline(task=”audio-classification”)
Respuestas a Preguntas VisualesResponde una consulta usando tanto una imagen como una preguntapipeline(task=”vqa”)

Para descripciones detalladas y más tareas, consulta la documentación de pipelines en el sitio web de Hugging Face.

Por qué Hugging Face está enfocando su atención en Rust

El ecosistema de Hugging Face (HF) comenzó a utilizar Rust en sus bibliotecas como safesensors y tokenizers.

Hugging Face también ha lanzado recientemente un nuevo marco de trabajo de aprendizaje automático llamado Candle. A diferencia de los marcos tradicionales que utilizan Python, Candle está construido con Rust. El propósito de usar Rust es mejorar el rendimiento y simplificar la experiencia del usuario mientras se admite operaciones con GPU.

El objetivo principal de Candle es facilitar la inferencia sin servidor, hacer posible la implementación de binarios ligeros y eliminar Python de las cargas de trabajo de producción, lo que a veces puede ralentizar los procesos debido a su sobrecarga. Este marco viene como una solución para superar los problemas encontrados con marcos de aprendizaje automático completos como PyTorch que son grandes y lentos al crear instancias en un clúster.

Exploramos por qué Rust se está convirtiendo en una opción preferida mucho más que Python.

  1. Velocidad y Rendimiento – Rust es conocido por su increíble velocidad, superando a Python, que se utiliza tradicionalmente en marcos de trabajo de aprendizaje automático. El rendimiento de Python a veces puede ralentizarse debido a su Global Interpreter Lock (GIL), pero Rust no enfrenta este problema, prometiendo una ejecución de tareas más rápida y, posteriormente, un mejor rendimiento en proyectos donde se implementa.
  2. Seguridad – Rust proporciona garantías de seguridad de memoria sin un recolector de basura, un aspecto que es esencial para garantizar la seguridad de los sistemas concurrentes. Esto juega un papel crucial en áreas como safetensors donde la seguridad en el manejo de estructuras de datos es una prioridad.

Safetensors

Los Safetensors se benefician de las características de velocidad y seguridad de Rust. Safetensors implica la manipulación de tensores, una entidad matemática compleja, y tener a Rust asegura que las operaciones no solo sean rápidas, sino también seguras, evitando errores comunes y problemas de seguridad que podrían surgir del mal manejo de la memoria.

Tokenizer

Los Tokenizers manejan la descomposición de oraciones o frases en unidades más pequeñas, como palabras o términos. Rust ayuda en este proceso acelerando el tiempo de ejecución, asegurando que el proceso de tokenización no solo sea preciso sino también rápido, mejorando la eficiencia