Introducción a los modelos de un solo clic en los droplets de GPU: una guía para Llama 3.1 con Huggingface
En esta guía, le mostraremos cómo configurar y usar rápidamente el modelo Hugging Face Llama 3.1 preconfigurado y con un solo clic de DigitalOcean en un Droplet de GPU de DigitalOcean. Le guiaremos a través del proceso simple para que pueda comenzar de inmediato. También cubriremos lo que hace que Llama 3.1 sea único en comparación con los modelos Llama anteriores y comprenderemos tres conceptos fundamentales de Huggingface: Transformers, Pipelines y Tokenizers.
Introducción
En julio de 2024, Meta lanzó Llama 3.1 con sus tres variantes: 405B, 70B y 8B. El modelo más grande en esta versión es el modelo 405B entrenado previamente en ~15 billones de tokens, que ahora puede competir con los mejores modelos de IA. Se destaca en conocimiento general, matemáticas, uso de herramientas y traducción multilingüe, lo que significa que puede manejar tareas complejas tan bien como los principales modelos de IA.
Lo que hace que Llama 3.1 sea especial es que abre nuevas oportunidades para la innovación en IA. El modelo 405B puede ayudar a generar datos sintéticos y entrenar modelos más pequeños de manera más eficiente, algo que no hemos visto antes a esta escala en la IA de código abierto.
Junto con el modelo 405B, Llama 3.1 también presenta los modelos 8B y 70B mejorados . Estas versiones ahora admiten varios idiomas, tienen una longitud de contexto más larga de 128000 tokens y muestran habilidades de razonamiento mejoradas. Esto las hace perfectas para tareas como resumir textos largos, crear chatbots multilingües y crear asistentes de codificación.
Meta ha actualizado la licencia de estos modelos para ayudar a los desarrolladores. Ahora podemos usar los resultados de los modelos de Llama para mejorar otros modelos, lo que nos da más libertad para innovar. Como siempre, y para mantenernos fieles al espíritu del código abierto, estos modelos se pueden descargar desde llama.meta.com y Hugging Face o comenzar a usarlos de inmediato.
Prerrequisitos
- Asegúrese de tener acceso a una GPU de alto rendimiento (por ejemplo, NVIDIA A100, H100) para una inferencia y un entrenamiento de modelos eficientes.
- Conocimientos básicos de Python.
- Comprensión de transformadores, conjuntos de datos y bibliotecas de aceleración de Hugging Face (pip install transformers datasets accelerate).
- Familiaridad con conceptos de aprendizaje profundo y uso de modelos previamente entrenados.
- Se recomienda tener experiencia con PyTorch y la biblioteca de transformadores de Hugging Face.
Llama 3.1
Llama 3.1 se ha probado exhaustivamente en más de 150 conjuntos de datos de referencia que abarcan muchos idiomas. Se realizó una evaluación humana detallada para ver cómo Llama 3.1 se compara con otros modelos en situaciones del mundo real. Los resultados muestran que el modelo principal está a la par con los mejores modelos como GPT-4, GPT-4o y Claude 3.5 Sonnet en varias tareas. Incluso los modelos más pequeños tuvieron un buen desempeño en comparación con otros modelos abiertos y cerrados con una cantidad similar de parámetros.
Modelos de 1 clic desarrollados por Hugging Face
DigitalOcean anunció recientemente un modelo de un solo clic impulsado por Hugging Face. Esta función permite a los usuarios implementar modelos de IA generativos populares directamente en las GPU Droplets de DigitalOcean, lo que hace que sea más fácil y rápido iniciar aplicaciones de IA. Con los modelos de un solo clic, los usuarios pueden implementar modelos de IA en tan solo unos minutos. Esta nueva integración agiliza la implementación de IA, combinando la simplicidad de DigitalOcean con la sólida plataforma de Hugging Face.
Cómo configurar rápidamente modelos de IA de caras abrazadas preconfigurados en gotas de GPU de DigitalOcean
- Primero, nos registraremos en una cuenta de DigitalOcean y accederemos al panel de control. A continuación, haremos clic en “GPU Droplet” o seleccionaremos “Crear” para iniciar un GPU Droplet.
- Elija una región de centro de datos para el GPU Droplet seleccionando una de las dos regiones disponibles. Actualmente, DigitalOcean ofrece solo estas dos regiones, pero habrá más disponibles en todo el mundo.
- A continuación, seleccionaremos una imagen que esté configurada como “SO” de manera predeterminada. Asegúrate de cambiarla a “Modelos de un solo clic”. Esto nos permitirá elegir un modelo popular que esté preconfigurado por Hugging Face para ejecutarse en un Droplet de GPU.
- Selecciona “meta-llama/Llama” y elige la versión del modelo usando el menú desplegable que se encuentra al lado.
- Desplácese hacia abajo para elegir el plan de GPU. Actualmente, DigitalOcean ofrece la NVIDIA H100x8, que viene con 8 GPU (640 GB de VRAM, 160 vCPU y 1920 GB de RAM), o puede elegir una sola NVIDIA H100, que viene con 1 GPU (80 GB de VRAM, 20 vCPU y 240 GB de RAM).
- A continuación, agreguemos la clave SSH para la autenticación. Hemos incluido un enlace a un artículo que explica cómo hacerlo. No dude en consultar el artículo para obtener más información sobre el proceso.
- Solo queda seleccionar un nombre único y hacer clic en “Crear Droplet de GPU”. Una vez completado, veremos un indicador de estado verde que muestra que el droplet se ha creado correctamente.
- A continuación, dirígete a la pestaña “Detalles de conexión”, que muestra la dirección IPv4. Esta dirección nos permitirá conectarnos al GPU Droplet. Haz clic en el botón Copiar para copiar la dirección. Luego, selecciona la opción “Consola web” para abrir la consola web.
- Antes de continuar, abramos otra pestaña y naveguemos hasta la URL ai-models para encontrar los modelos AI 1-Click que hemos instalado. Busque el modelo que estamos usando, Llama 3.1-8B-Instruct, y haga clic en él para ver sus detalles.
- Desplácese hacia abajo para encontrar el comando curl. Este comando nos permitirá realizar una llamada a la API local para interactuar con el modelo. Copiaremos y pegaremos este comando en un bloc de notas.
- En el comando curl, agregaremos una opción -v antes de -X y reemplazaremos droplet_ip con la dirección IPv4 copiada.
- Además, elimine toda la línea que menciona “modelo”: “nombre_modelo” y mueva esa línea hacia arriba en el documento. Dejaremos esto aquí por ahora y procederemos a la consola web.
- Copia el “Bearer Token” desde nuestra consola web. Agregaremos este token a nuestro comando curl para interactuar con los modelos de 1 clic.
- A continuación, abra el bloc de notas donde copiamos el comando curl y pegue el “Bearer Token” en -H ‘Authorization: Bearer token.’
curl -v -X 'POST' 'http://147.182.1xx.00/v1/chat/completions' -H 'accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Bearer 'xczAHRfwtnQGBbxFxBK6OUFpoEiqVcxGI8lGaaaNpiOajCHH8'' -d '{ "messages": [{"role":"user", "content":"What is deep learning?”}], "max_tokens": 64, "stream": false}'
- Copia el comando curl completo, pégalo en la terminal y pulsa Intro. También puedes modificar la pregunta según sea necesario.
El modelo de IA ahora responderá a nuestra consulta y proporcionará la respuesta.
Introducción a los modelos de lenguaje en Hugging Face
Hugging Face se ha convertido en la plataforma de referencia para trabajar con modelos de lenguaje (LM) de última generación, ya que ofrece un amplio repositorio de modelos, herramientas y marcos de trabajo previamente entrenados. Hugging Face es una plataforma de código abierto diseñada para la investigación y el desarrollo de IA. Su biblioteca Transformers se utiliza ampliamente para trabajar con modelos previamente entrenados en tareas como generación de texto, clasificación, traducción, resumen y más.
Con Hugging Face Transformers, podemos integrar rápidamente modelos de última generación en cualquier proyecto de IA con solo unas pocas líneas de código.
Biblioteca de Transformers de caras abrazadas
Hugging Face Transformers es una popular biblioteca de código abierto que proporciona herramientas para trabajar con modelos de lenguaje grandes.
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline, TextStreamerfrom transformers import pipelineimport torchbase_model = "meta-llama/Llama-3.1-8B"tokenizer = AutoTokenizer.from_pretrained(base_model)model = AutoModelForCausalLM.from_pretrained( base_model, return_dict=True, low_cpu_mem_usage=True, torch_dtype=torch.float16, device_map="auto", trust_remote_code=True,)
El código anterior utiliza la biblioteca Transformers de Hugging Face para cargar un modelo entrenado previamente y un tokenizador para el modelo “meta-llama/Llama-3.2-1B-Instruct” desde el repositorio de modelos de Hugging Face. Primero, las clases AutoTokenizer
y AutoModelForCausalLM
se importan desde la biblioteca Transformers, que permite un fácil acceso a modelos entrenados previamente para varias tareas de procesamiento del lenguaje natural (NLP). La función AutoTokenizer.from_pretrained(base_model)
carga el tokenizador para el modelo Llama 3.2, que convierte el texto en tokens que el modelo puede procesar. La AutoModelForCausalLM.from_pretrained()
función carga el modelo en sí, configurado para usar configuraciones de memoria eficientes ( low_cpu_mem_usage=True
) y optimizado para una inferencia más rápida ( torch_dtype=torch.float16
). La biblioteca Transformers de Hugging Face simplifica este proceso al proporcionar modelos entrenados previamente y herramientas fáciles de usar para implementar modelos de IA en varios entornos. Ahora, aquí estamos usandoAutoModelForCausalLM.
¿Qué es CausalLM?
Ahora entenderemos el modelo de lenguaje causal, que es el modelo de lenguaje utilizado para la generación de texto. Dada una secuencia de oraciones, un modelo de lenguaje causal predice la siguiente palabra basándose en las palabras anteriores. Este modelo está diseñado para comprender el lenguaje observando el contexto de los elementos anteriores (palabras o subpalabras) y utilizando ese contexto para generar o predecir el siguiente elemento en la secuencia.
Tubería
Los pipelines son abstracciones de alto nivel que simplifican el proceso de uso de estos modelos previamente entrenados para tareas comunes como el procesamiento del lenguaje natural (PLN), la visión artificial y el procesamiento de audio. Un pipeline permite a los usuarios realizar fácilmente tareas como la generación de texto, la traducción, el resumen, la clasificación de imágenes, etc. El pipeline administra el modelo y se encarga de todos los pasos necesarios, como la tokenización de la entrada y el procesamiento de la salida en formato legible para humanos.
pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, torch_dtype=torch.float16, device_map="auto",)
Ahora, podemos pasar una serie de texto en una tubería y llamarla con una lista.
pipe = pipeline("text-classification")pipe(["This restaurant is awesome", "This restaurant is awful"])
[{‘label’: ‘POSITIVO’, ‘score’: 0,9998743534088135}, {‘label’: ‘NEGATIVO’, ‘score’: 0,9996669292449951}]
Tokenizador
A continuación, comprenderemos el tokenizador, un componente crucial en los modelos de procesamiento del lenguaje natural (PLN) que convierten el texto sin formato en un formato que el modelo puede entender. Dado que la mayoría de los modelos de aprendizaje automático, en particular los modelos de lenguaje, no trabajan directamente con texto legible para humanos, el tokenizador divide el texto en unidades más pequeñas, llamadas tokens , que luego pueden ser procesadas por el modelo.
# Specify the device (e.g., "cuda" for GPU or "cpu" for CPU)device = "cuda" # change to "cpu" if you want to use a CPU# Tokenize the text and move it to the specified devicetext = "Hello, how are you?" tokens = tokenizer(text, return_tensors=”pt”).to(device)# Print the shape of the input_ids tensorprint(tokens[“input_ids”].shape)
torch.Size([1, 6])
tokens["input_ids"]
tensor([[15496, 616, 703, 389, 345]])
El modelo utiliza estos identificadores de token para procesar el texto de entrada y generar predicciones.
Llama 3.1 con cara de abrazo
Primero instalaremos los paquetes necesarios.
!pip install transformers !pip install huggingfacehub !pip install torch !pip install accelerate
Inicie sesión en Hugging Face y genere también el token de acceso, asegúrese de obtener acceso al modelo Llama 3.1.
import os os.environ['HF_TOKEN']="hf_accesstoken" os.environ['HUGGINGFACEHUB_API_TOKEN']="hf_apitoken"
Carga del modelo y ejecución de inferencia con Llama 3.1
import transformers import torchmodel_id = "meta-llama/Llama-3.1-8B"pipeline = transformers.pipeline( "text-generation", model=model_id, model_kwargs={"torch_dtype": torch.bfloat16}, device_map="auto" ) pipeline("Hey how are you doing today?")
¿Qué novedades trae Llama 3.1?
El modelo Llama 3.1 405B está entrenado en más de 15 billones de tokens . A continuación, se muestra un desglose simple de su arquitectura y cómo se creó:
-
Tipo de modelo :
-
Utiliza una arquitectura Transformer estándar que solo utiliza decodificadores . Este diseño sencillo se centra en la estabilidad y evita enfoques complejos como los modelos de mezcla de expertos.
-
Escala de entrenamiento :
-
Para entrenar un modelo tan grande, Meta utilizó más de 16.000 GPU NVIDIA H100 .
-
El proceso de entrenamiento se optimizó para manejar esta enorme escala de manera eficiente, lo que permitió entrenar el modelo más rápido.
-
Mejoras en los datos : para Llama 3.1, la cantidad y la calidad de los datos de entrenamiento mejoraron significativamente en comparación con las versiones anteriores.
-
Esto incluyó un mejor preprocesamiento, curación y filtrado de datos , lo que garantiza que el modelo aprenda de los datos de la mayor calidad posible.
-
Se utilizó un procedimiento iterativo de post-entrenamiento , que incluyó múltiples rondas de ajuste fino supervisado y optimización de preferencias para mejorar el rendimiento del modelo.
-
Optimización para inferencia :
-
El modelo se cuantizó de 16 bits (BF16) a 8 bits (FP8). Esto reduce la carga computacional, lo que permite que el modelo masivo 405B se ejecute en un solo nodo de servidor. Esto hace que la implementación a gran escala sea más eficiente y rentable.
-
Escalabilidad y flexibilidad :
-
Las opciones de diseño se centraron en hacer que el modelo fuera escalable y fácil de trabajar, permitiendo que las mejoras se apliquen fácilmente a modelos más pequeños en la línea Llama 3.1.
Llama 3.1 utiliza una arquitectura Transformer estable y eficiente, técnicas de entrenamiento optimizadas y una calidad de datos mejorada para ofrecer un rendimiento de vanguardia, especialmente en implementaciones a gran escala. Se realizaron múltiples rondas de ajuste fino sobre el modelo entrenado previamente para crear los modelos de chat finales. Este proceso incluyó el ajuste fino supervisado (SFT) , el muestreo de rechazo (RS) y la optimización de preferencia directa (DPO) . Además, las técnicas de filtrado avanzadas garantizaron que solo se utilizaran los mejores datos. Por ejemplo, Llama 3.1 maneja bien los puntos de referencia de contexto corto, incluso con una ventana de contexto más larga de 128K. También ofrece respuestas útiles al tiempo que integra medidas de seguridad.
Reflexiones finales
En este artículo, aprendimos cómo comenzar a trabajar con modelos de un solo clic usando GPU Droplet y cómo comenzar con Llama 3.1. Sin embargo, alentamos a nuestros lectores a que prueben los otros modelos disponibles en la plataforma. Llama 3.1 es un paso significativo y es un modelo mejorado para cualquier tarea de IA. Con modelos que abarcan hasta 405B de parámetros y una ventana de contexto de 128K , Llama 3.1 se destaca en comprensión multilingüe, razonamiento complejo y aplicaciones del mundo real. Una de las principales ventajas es la disponibilidad de código abierto, que permite a los desarrolladores utilizar esta tecnología para varios casos de uso. El modelo de un solo clic de DigitalOcean hace que sea increíblemente fácil usar Llama 3.1, lo que permite a los desarrolladores crear e innovar con modelos de lenguaje grandes con una configuración mínima.
Recursos
- Modelos de IA con un solo clic
- Cómo crear y configurar droplets de GPU
- Creando un Asistente Personal con LLaMA 3.2
- Anunciamos los modelos de 1 clic con tecnología de Hugging Face en DigitalOcean
Deja una respuesta