Huella de carbono del ajuste fino de LLM: un estudio de caso |  de Kasper Groes Albin Ludvigsen |  febrero de 2024

Obtuve resultados sorprendentes cuando medí las emisiones de carbono de la instrucción de ajuste de un LLM

Foto de Ingmar H en Unsplash

Recientemente, LoRA ajusté un LLM danés llamado Munin-7b-alpha en un conjunto de datos de ajuste fino de instrucciones llamado SkoleGPT-instruct. Durante el procedimiento de ajuste, medí el consumo de energía y calculé la huella de carbono. En este artículo presento los sorprendentes resultados. Puedes encontrar el modelo. aquí.

Munin-7b-alpha es un modelo previamente entrenado (o el llamado modelo básico), que ha sido entrenado únicamente para generar texto. Para que sean adecuados para una configuración de chat, los modelos previamente entrenados deben ser buenos para seguir instrucciones, lo que requiere un paso de entrenamiento posterior llamado ajuste fino de instrucciones.

A diferencia del entrenamiento previo, que requiere cantidades masivas de datos de texto sin etiquetar en los que el modelo se entrena de forma autosupervisada, el ajuste fino de la instrucción requiere una cantidad relativamente modesta de datos, que a su vez deben ser cuidadosamente seleccionados y anotados.

Es un procedimiento de ajuste de funciones sobre el que informo en este artículo.

El Munin-7b-alpha tiene 7 mil millones de parámetros y el conjunto de datos de instrucciones que utilicé consta de 21.300 muestras. Es decir, 21.300 ejemplos de una indicación y una buena respuesta.

Usando una versión ligeramente adaptada de este fantástico modelo de cuaderno de puesta a puntoEntrené un LoRA durante 1 época, es decir, le mostré al modelo cada muestra una vez.

LoRA (adaptación de rango bajo) es una técnica de ajuste fino eficiente para adaptar los LLM a tareas específicas. abrazando la cara proporciona una descripción sucinta de la técnica:

“La adaptación de bajo rango (LoRA) es un PEFT [parameter efficient fine tuning] Método que descompone una matriz grande en dos matrices más pequeñas de bajo rango en las capas de atención. Esto reduce drásticamente la cantidad de parámetros que deben ajustarse”.

El modelo se entrenó en una única GPU Nvidia RTX A4000, que es una GPU de consumo con 16 GB de memoria, suficiente memoria para el ajuste fino de LoRA de este modelo.

Medí el consumo de energía con el paquete Python CodeCarbon. CodeCarbon es un paquete extremadamente liviano y fácil de usar que le permite medir el consumo de energía de un script, función o método de Python con solo dos líneas de código. Lea más sobre cómo usarlo aquí:

Además del consumo de energía, CodeCarbon también estima la huella de carbono de la energía que consume su procedimiento informático, pero encontré que las cifras parecen inexactas. Es probable que esto se deba a que CodeCarbon utiliza una intensidad de carbono promedio codificada (CO2e por KWh producido) de su región geográfica y no una intensidad de carbono casi en tiempo real. Entonces fui a un sitio web llamado Energi Data Service, que permite descargar datos detallados de emisiones de electricidad de la red danesa. Multiplicando las mediciones de consumo de energía obtenidas con CodeCarbon por la intensidad de carbono de la electricidad en la red durante las horas que entrenó el modelo, obtuve la huella de carbono de la capacitación.

El proceso de ajuste tomó apenas 4 horas y consumió un total de 0,694 KWh: el consumo combinado de GPU, CPU y RAM según las estimaciones realizadas con el paquete Python CodeCarbon.

Durante las horas que el modelo entrenó, las emisiones promedio de C02e por KWh producido fueron de 82,5 g según Energi Data Service (licencia: “El Licenciante le otorga una licencia mundial, gratuita, no exclusiva y sin restricciones para utilizar los Datos” [1]).

Así, el ajuste fino emitió unos minúsculos 57 gramos de CO2e (0,694 KWh * 82,5 g).

En comparación, el danés medio emite 11 TONELADAS de CO2e al año.

En un estudio de investigación se ha descubierto que generar una sola imagen con IA generativa consume 2,9 Wh en promedio [2]. Entonces, por la cantidad de energía que se necesitó para afinar el LLM, puedes generar solo 239 imágenes.

Si se pregunta si un procedimiento de ajuste tan breve y eficiente produjo un modelo mejor, la respuesta es un claro “sí”:

De acuerdo con la Tabla de clasificación de ScandEval en generación de lenguaje natural, el modelo previamente entrenado obtiene un promedio de 43,44 en tareas danesas y el modelo ajustado obtiene un promedio de 47,55. Una ganancia del 9,45 por ciento. Al momento de escribir este artículo, esa es la diferencia entre un quinto y un séptimo lugar en la tabla de clasificación.

Me sorprende que no se requiriera más computación, energía y emisiones para realizar el ajuste fino.

Espero que mis hallazgos aumenten linealmente con la cantidad de muestras si se mantienen constantes otras variables (por ejemplo, usando una GPU similar, un método de entrenamiento, etc.). Es decir, si ajusta el doble de muestras, o el doble de épocas, espero que el consumo de energía se duplique.

El consumo de energía probablemente será significativamente mayor para un modelo de 70 mil millones de parámetros, lo que generará mayores emisiones, pero las emisiones probablemente seguirían siendo muy modestas en el gran esquema de las cosas.

Además, el consumo de energía probablemente sería mayor si no hubiera usado LoRA.

El uso de la técnica de ajuste fino de instrucciones LoRA es realmente eficiente, tanto en términos de cuánto tiempo lleva, cuánta computación (por ejemplo, GPU RAM) necesita y cuánto carbono emite.

La instrucción para ajustar un 7B LLM con LoRA en 21,300 muestras durante una época tomó cuatro horas y emitió 57 gramos de CO2e, una cantidad pequeña.