Leyes de Escala

Rubén Rodríguez Abril

Las Leyes de Escala de los modelos de lenguaje determinan cómo deben evolucionar el número de parámetros de un modelo y el tamaño de su base de datos de entrenamiento para que este último sea lo más eficiente posible en términos computacionales. 

Motivación: el agotamiento del poder computacional

Dos son los grandes paradigmas que han predominado en la inteligencia artificial desde la aparición de esta disciplina en los años 50: El paradigma simbólico y el paradigma conexionista.

El primero es el más familiar para la mayoría de los programadores: un único algoritmo, construido por medio de un lenguaje de programación como C o Java y dotado de una cierta complejidad interna, manipula los datos de entrada siguiendo ciertas instrucciones y devuelve un valor (o una estructura de datos) de salida. En este algoritmo, por lo general, abundan las instrucciones de transferencia de datos (MOV) y las de ramificación (IF…THEN, JZ, JNZ, etc…), en las cuales el procesador debe de tomar una decisión y seguir un camino entre varios en base al contenido de sus registros internos.

El paradigma conexionista

En el segundo de los paradigmas, el conexionista, típico del Aprendizaje Profundo (Deep Learning), múltiples algoritmos de estructura interna bastante simple (como las neuronas artificiales) se intercambian datos entre sí, construyendo entre todos un conjunto de datos de salida. Matemáticamente son equivalentes a la multiplicación sucesiva de vectores y matrices de centenares o miles de dimensiones. El conexionismo basa su eficiencia en la realización de innumerables operaciones de cálculo (particularmente, operaciones matriciales) sobre ingentes cantidades de datos (que se estructuran en vectores y matrices de miles de dimensiones), tanto en la fase de evaluación como sobre todo en la de entrenamiento.

La determinación de los parámetros del modelo (particularmente, los pesos sinápticos) sólo tiene lugar a través de un lento proceso de aprendizaje en el que se emplea una inmensa cantidad de poder computacional y de datos. Así, el entrenamiento de los modelos de lenguaje más recientes, como GPT-3, ha requerido el uso de centenares de GPUs durante varios días. A menudo, los modelos más grandes sólo pueden ser entrenados una sola vez. Y los investigadores sólo conocen de antemano el poder computacional del que podrán disponer, que a su vez es estimado a partir del hardware (número y tipos de GPUs), la energía y el tiempo que se van a emplear.

Todo esto ha motivado la aparición de recientes estudios que han investigado cuál es la cantidad de datos y de poder computacional idóneos para el entrenamiento de una determinada arquitectura. A resultas de ello han sido formuladas las denominadas Leyes de Escala de los grandes modelos de lenguaje, que ponen en conexión dichas variables. En este artículo presentaremos dos de estos estudios: Kaplan et al. (2020) y Hoffman et al. (2022).

Las Leyes de Escala

Las conclusiones de Kaplan et al.

En el primero de los estudios, los autores investigaron cómo evoluciona la función de pérdida (entropía cruzada, medida en fase de validación) cuando se modifican los diferentes parámetros del sistema. Y llegaron, entre otras, a las siguientes conclusiones:

-El rendimiento de un modelo no depende tanto de su forma (profundidad, anchura) como de su escala. Esta última viene descrita por el número de parámetros N del modelo, el poder computacional C utilizado para su entrenamiento (en días-petaFLOP, es decir, la cantidad de computación generada por un ordenador funcionando durante un día a razón de un petaFLOP por segundo) y el tamaño D de la base de datos.

-El rendimiento del modelo es una función polinómica de estos tres factores de escala.

-El rendimiento aumenta si incrementamos N y D a la vez, pero disminuye si aumentamos cualquiera de los dos factores, manteniendo constante el otro.

-Mucho antes de que función de pérdida alcance la convergencia (su valor mínimo), el entrenamiento deviene ineficiente (Figura 2).

La función de pérdida se reduce al aumentar la base de datos, el número de parámetros y la cantidad de computación.

Figura 1: Diagrama que muestra cómo existe una proporción lineal (inversa) entre el valor de la función de pérdida (medida durante la fase de comprobación) y logaritmos de la cantidad de computación utilizada (medida en petaflops-día), el tamaño de la base de datos (medida en tokens) y el número de parámetros del modelo (excluida la capa de embedding). Fuente: Kaplan et al.

Leyes de Escala

Además, se introdujo el concepto de Leyes de Escala de las LLMs, que son aquellas ecuaciones que permiten calcular el valor de la función de pérdida de un modelo a partir de las variables N (número de parámetros, excluyendo la capa de embedding), C_{min} (poder computacional utilizado) y D (tamaño en tokens de la base de datos).

Algunas de ellas definen a la pérdida como función de una variable:

  • L(N) = (N_{c}/N)^{αN};    α_{N}∼0.076;    N_{c}∼8.8×10^{13} (sin parámetros de embedding)
  • L(D) = (D_{c}/D)^{αD};    α_{D}∼0.095;    D_{c}∼5.4×10^{13} (tokens)
  • L(C_{min}) = (C_{c}^{min}/C_{min}) α_{C}^{min};    α_{C}^{min}∼0.050;    C_{C}^{min} ∼ 3.1×10^{8} (días-petaflop)

donde N_{c}, D_{c} y [/latex]C_{c}^{min}[/latex] son constantes.

Ley de Escala de Kaplan: la función de pérdida se reduce con la cantidad de computación y el número de parámetros.

Figura 2: La gráfica de la izquierda muestra a la pérdida como función del número de tokens procesados durante el entrenamiento. La de la derecha, como función del poder computacional, medido en días-petaflop. En los dos casos, a partir de cierta cantidad de tokens o de FLOPs de computación, la pendiente de la función deviene casi horizontal y el entrenamiento se vuelve ineficiente. En ocasiones, esto mucho antes de que la función de pérdida alcance su mínimo (convergencia). Fuente: Kaplan et al.

Otras, por el contrario,  involucran a dos variables. Las siguientes ecuaciones permiten calcular la función de pérdida a partir de los pares (N,D) y de (N,S):

L(N,D) = \left [ (\frac{N_{c}}{N})^{\frac{α_{N}}{α_{D}}} + \frac{D_{c}}{D} \right ] ^{α_{D}}
L(N,S) =(\frac{N_{c}}{N})^{α_{N}} + (\frac{S_{c}}{S_{min}(S)})^{α_{S}}

donde en este caso S es la cantidad de pasos (actualizaciones de pesos sinápticos) que han tenido lugar durante el entrenamiento del modelo. S_{c} equivaldría a 2,1×10^{3} mientras que α_{N} se aproximaría a 0,76.

El tamaño crítico del lote (B_{crit}) es inversamente proporcional a la función de pérdida a:

B_{crit}(L) = \frac{B_{*}}{L^{1/α_{B}}}

B_{*} ∼ 2×10^{8} tokens

α_{B} ∼ 0.21 tokens

Las conclusiones de Hoffman et al.

El trabajo de Hoffman et al. llegó a conclusiones ligeramente diferentes. Los autores investigaron el tamaño óptimo de un modelo y la cantidad idónea de tokens para entrenarlo, para una cierta cantidad de computación (computational budget) disponible. Encontraron que ambos factores (tamaño y tokens) debían ser escalados en exactamente la misma magnitud para obtener un resultado óptimo. A partir de sus resultados diseñaron una versión modificada de GPT-2, a la que llamaron Chinchilla, que con el mismo uso de computación que Gopher (otra versión modificada de GPT-2) era capaz de procesar 4 veces más tokens. A pesar de tener tan sólo 70B parámetros, Chinchilla superó en múltiples pruebas el rendimiento de otros modelos más grandes como Gopher (280B), GPT-3 (175B), Jurassic-1 (178B), y Megatron-Turing NLG (530B).

Parámetros y tokens de entrenamiento

La pregunta “Si disponemos de una cantidad fija de computación disponible, ¿cómo deberíamos balancear entre el tamaño del modelo y la cantidad de tokens utilizada?” es expresable matemáticamente a través de la siguiente fórmula:

N_{opt}(C),D_{opt}(C) = argmin  L(N,D)

donde N_{opt}(C) y D_{opt}(C) son las funciones a calcular, que representan respectivamente el tamaño idóneo del modelo (en parámetros) y el de la base de datos (en tokens), para una cierta cantidad de computación C. De lo que se trata es de escoger los valores de N y de D para los cuales la función de pérdida L(N,D) tenga un valor mínimo, y condicionado a que el valor de FLOPs(N,D) sea igual a C. La función FLOPs(N,D), que determina el número de operaciones en coma flotante necesarias para entrenar un modelo de tamaño N y con una base de datos compuesta de D tokens, es determinista.

Para calcular el valor mínimo de L(N,D) los autores exploraron tres vías diferentes:

1) Fijar el tamaño del modelo y variar progresivamente el número de tokens de entrenamiento.

2) Trazar curvas isoFLOP, que representen valores constantes de C, en el modo señalado en la imagen.

Figura 3: En el gráfico de la izquierda se trazan varias curvas para las cuales los valores de C (en FLOPs) son constantes. A partir de estas curvas es posible encontrar ecuaciones lineales que relacionen el numero de FLOPs utilizados con el tamaño ideal del modelo (en parámetros) y de la base de datos de entrenamiento (en tokens). Fuente: Hoffman et al.

3) Adopción de una función de pérdida paramétrica, que tomaría la siguiente expresión algebraica:

\hat{L}(N,D) \doteq E + \frac{A}{N^{α}} + \frac{B}{D^{β}}

donde todas los parámetros son constantes, salvo N y D.

La proporcionalidad en la escala

A partir de todas estas investigaciones, los autores del trabajo llegaron a la siguiente conclusión: para una óptima utilización del poder computacional disponible, el numero de parámetros y el de tokens deben ser escalados en la misma proporción. Constataron que Gopher, una versión modificada de GPT-2, se apartaba de esta ley, dado que su número de parámetros era desproporcionadamente grande comparado con la cantidad de tokens de entrenamiento. Consecuentemente, fue creada una nueva versión de Gopher, Chinchilla, dotada de menos parámetros, pero cuya base de datos fue ampliada a 1,4T tokens.

Figura 4: Gopher y Chinchilla tienen el mismo número de capas. Sin embargo, Chinchilla tiene la mitad de cabezas y de dimensión.

Aunque Gopher y Chinchilla fueron entrenadas utilizando el mismo número de FLOPs, sin embargo los resultados de esta última fueron muy superiores en pruebas de modelado de lenguaje, comprensión lectora, sentido común o preguntas de libro cerrado, así como en benchmarks (colecciones de pruebas) como MMLU o BIG-Bench,

Observaciones

De las conclusiones de este trabajo, resulta que, para obtener el máximo de eficiencia, los grandes modelos de lenguaje necesitan una cantidad de datos mayor de la que se pensaba. La necesidad de ampliar el tamaño de las bases de datos agudizará sin duda otros problemas ya existentes como la posible mala calidad de los datos, la presencia de redundancia en los mismos y el hecho de que eventualmente en el futuro se pueda producir un agotamiento de la información generada por humanos. Ésta es una posibilidad cada vez más cercana, y que ha provocado que OpenAI, Microsoft y Cohere se hayan lanzado a la creación de datos sintéticos, generados por ordenador, que sirvan para el entrenamiento de nuevos sistemas de IA.