Comprende los tamaños de los LLM

Maud Nalpas
Maud Nalpas

Si bien la "L" en los modelos grandes de lenguaje (LLM) sugiere una escala masiva, la realidad tiene más matices. Algunos LLM contienen billones de parámetros, y otros operan de manera eficaz con muchos menos.

A continuación, te mostramos algunos ejemplos del mundo real y las implicaciones prácticas de los diferentes tamaños de modelos.

Como desarrolladores web, solemos pensar en el tamaño de un recurso como su tamaño de descarga. En cambio, el tamaño documentado de un modelo se refiere a la cantidad de parámetros. Por ejemplo, Gemma 2B significa Gemma con 2,000 millones de parámetros.

Los LLM pueden tener cientos de miles, millones, miles de millones o incluso billones de parámetros.

Los LLM más grandes tienen más parámetros que sus equivalentes más pequeños, lo que les permite capturar relaciones de lenguaje más complejas y manejar instrucciones con matices. A menudo, también se entrenan con conjuntos de datos más grandes.

Quizás hayas notado que algunos tamaños de modelos, como 2,000 millones o 7,000 millones, son comunes. Por ejemplo, Gemma 2B, Gemma 7B o Mistral 7B. Las clases de tamaño de los modelos son agrupaciones aproximadas. Por ejemplo, Gemma 2B tiene aproximadamente 2,000 millones de parámetros, pero no exactamente.

Las clases de tamaño de modelos ofrecen una forma práctica de medir el rendimiento de los LLM. Piensa en ellos como clases de peso en el boxeo: los modelos dentro de la misma clase de talla son más comparables. Dos modelos 2B deberían ofrecer un rendimiento similar.

Dicho esto, un modelo más pequeño puede igualar el mismo rendimiento que un modelo más grande para tareas específicas.

Captura de pantalla de las casillas de verificación del tamaño del modelo HuggingFace.
Clases de tamaño de modelos en HuggingFace. Estas clases no son estándares de la industria, sino que surgieron de forma orgánica.

Si bien no siempre se divulgan los tamaños de los modelos de los LLM de última generación más recientes, como GPT-4 y Gemini Pro o Ultra, se cree que cuentan con cientos de miles de millones o billones de parámetros.

Los tamaños de los modelos pueden variar mucho. En esta ilustración, DistilBERT es un punto pequeño en comparación con el Gemini Pro gigante.

No todos los modelos indican la cantidad de parámetros en su nombre. Algunos modelos se agregan con el número de versión. Por ejemplo, Gemini 1.5 Pro se refiere a la versión 1.5 del modelo (después de la versión 1).

¿LLM o no?

¿Cuándo un modelo es demasiado pequeño para ser un LLM? La definición de LLM puede ser algo fluida en la comunidad de IA y AA.

Algunos solo consideran los modelos más grandes con miles de millones de parámetros como verdaderos LLM, mientras que los modelos más pequeños, como DistilBERT, se consideran modelos de PLN simples. Otros incluyen modelos más pequeños, pero potentes, en la definición del LLM, como DistilBERT.

LLM más pequeños para casos de uso integrados en el dispositivo

Los LLM más grandes requieren mucho espacio de almacenamiento y mucha potencia de procesamiento para la inferencia. Necesitan ejecutarse en servidores potentes dedicados con hardware específico (como TPU).

Una cosa que nos interesa, como desarrolladores web, es si un modelo es lo suficientemente pequeño como para descargarlo y ejecutarse en el dispositivo de un usuario.

¡Pero esa es una pregunta difícil de responder! Actualmente, no hay una forma fácil de saber "este modelo puede ejecutarse en la mayoría de los dispositivos de gama media" por varios motivos:

  • Las capacidades del dispositivo varían ampliamente en función de la memoria, las especificaciones de GPU/CPU y mucho más. Un teléfono Android de gama baja y una laptop NVIDIA® RTX son muy diferentes. Es posible que tengas algunos datos sobre los dispositivos que tienen tus usuarios. Aún no tenemos una definición de un dispositivo de referencia que se use para acceder a la Web.
  • Un modelo o framework en el que se ejecuta puede optimizarse para ejecutarse en cierto hardware.
  • No hay una manera programática de determinar si un LLM específico se puede descargar y ejecutar en un dispositivo específico. La capacidad de descarga de un dispositivo depende de la cantidad de VRAM que hay en la GPU, entre otros factores.

Sin embargo, tenemos algo de conocimiento empírico: actualmente, algunos modelos con unos pocos millones o algunos miles de millones de parámetros se pueden ejecutar en el navegador y en dispositivos para consumidores.

Por ejemplo:

  • Gemma 2B con la API de inferencia de MediaPipe LLM (incluso adecuada para dispositivos solo de CPU). Pruébalo.
  • DistilBERT con Transformers.js

Este es un campo emergente. Es posible que el panorama evolucione:

  • Con las innovaciones de WebAssembly y WebGPU, la compatibilidad de WebGPU con más bibliotecas, bibliotecas nuevas y optimizaciones esperan que los dispositivos de los usuarios ejecuten cada vez más de manera eficiente LLM de varios tamaños.
  • Se prevé que los LLM más pequeños y de alto rendimiento se volverán cada vez más comunes mediante las técnicas de reducción emergentes.

Consideraciones para LLM más pequeños

Cuando trabajes con LLM más pequeños, siempre debes tener en cuenta el rendimiento y el tamaño de descarga.

Rendimiento

La capacidad de cualquier modelo depende en gran medida de tu caso de uso. Un LLM más pequeño ajustado a tu caso de uso puede tener un mejor rendimiento que un LLM genérico más grande.

Sin embargo, dentro de la misma familia de modelos, los LLM más pequeños tienen menos capacidades que sus contrapartes más grandes. Para el mismo caso de uso, generalmente deberías realizar más trabajo de ingeniería de instrucciones cuando se usa un LLM más pequeño.

Captura de pantalla del panel de red de Chrome DevTools.
La puntuación de Gemma 2B es inferior a la de Gemma 7B.
Fuente: Tabla de clasificación de HuggingFace Open LLM, abril de 2024

Tamaño de descarga

Más parámetros significan un tamaño de descarga más grande, lo que también influye en la posibilidad de que un modelo, incluso si se considere pequeño, se pueda descargar de forma razonable para casos de uso en el dispositivo.

Si bien existen técnicas para calcular el tamaño de descarga de un modelo según la cantidad de parámetros, esto puede ser complejo.

Desde principios de 2024, rara vez se documentan los tamaños de descarga de los modelos. Por lo tanto, para tus casos de uso en el dispositivo y en el navegador, te recomendamos que observes el tamaño de descarga de manera empírica, en el panel Red de las Herramientas para desarrolladores de Chrome o con otras herramientas para desarrolladores del navegador.

Captura de pantalla del panel de red de Chrome DevTools.
En el panel Network de las Herramientas para desarrolladores de Chrome, Gemma 2B y DistilBERT para la inferencia integrada en el navegador y en el dispositivo en una aplicación web. Los tamaños de descarga son, respectivamente, de 1.3 GB y 67 MB.

Gemma se usa con la API de inferencia de LLM de MediaPipe. DistilBERT se usa con Transformers.js.

Técnicas de reducción de modelos

Existen varias técnicas para reducir significativamente los requisitos de memoria de un modelo:

  • LoRA (adaptación de rango bajo): Técnica de ajuste en la que se congelan los pesos previamente entrenados. Obtén más información sobre LoRA.
  • Reducción: Quita las ponderaciones menos importantes del modelo para reducir su tamaño.
  • Cuantización: Reduce la precisión de los pesos de números de punto flotante (como el de 32 bits) a representaciones de bits más bajos (como 8 bits).
  • Destilación de conocimiento: Entrena un modelo más pequeño para imitar el comportamiento de un modelo más grande previamente entrenado.
  • Uso compartido de parámetros: Se usan las mismas ponderaciones para varias partes del modelo, lo que reduce la cantidad total de parámetros únicos.