Emisiones de CO2 y el 🤗 Hub Liderando la carga

'CO2 emissions and the 🤗 Hub Leading the Charge'

¿Qué son las Emisiones de CO2 y por qué son importantes?

El cambio climático es uno de los mayores desafíos a los que nos enfrentamos y la reducción de las emisiones de gases de efecto invernadero como el dióxido de carbono (CO2) es una parte importante para abordar este problema.

El entrenamiento y despliegue de modelos de aprendizaje automático emitirán CO2 debido al consumo de energía de las infraestructuras informáticas que se utilizan: desde GPUs hasta almacenamiento, todo necesita energía para funcionar y emite CO2 en el proceso.

En la imagen: Modelos recientes de Transformers y su huella de carbono

La cantidad de CO2 emitido depende de diferentes factores como el tiempo de ejecución, el hardware utilizado y la intensidad de carbono de la fuente de energía.

El uso de las herramientas descritas a continuación te ayudará a realizar un seguimiento y reportar tus propias emisiones (¡lo cual es importante para mejorar la transparencia de nuestro campo en su conjunto!) y elegir modelos en función de su huella de carbono.

Cómo calcular automáticamente tus propias Emisiones de CO2 con Transformers

Antes de comenzar, si no tienes la última versión de la biblioteca huggingface_hub instalada en tu sistema, por favor ejecuta lo siguiente:

pip install huggingface_hub -U

Cómo encontrar modelos de baja emisión utilizando el Hugging Face Hub

Con el modelo ahora cargado en el Hub, ¿cómo puedes buscar modelos en el Hub al intentar ser respetuoso con el medio ambiente? Bueno, la biblioteca huggingface_hub tiene un nuevo parámetro especial para realizar esta búsqueda: emissions_threshold. Todo lo que necesitas hacer es especificar un número mínimo o máximo de gramos, y todos los modelos que se encuentren dentro de ese rango.

Por ejemplo, podemos buscar todos los modelos que tomaron un máximo de 100 gramos para ser creados:

from huggingface_hub import HfApi

api = HfApi()
models = api.list_models(emissions_thresholds=(None, 100), cardData=True)
len(models)
>>> 191

¡Hubo bastantes! Esto también ayuda a encontrar modelos más pequeños, dado que normalmente no liberaron tanto carbono durante el entrenamiento.

Podemos examinar uno de cerca para ver si cumple con nuestro umbral:

model = models[0]
print(f'Nombre del Modelo: {model.modelId}\nCO2 Emitido durante el entrenamiento: {model.cardData["co2_eq_emissions"]}')

>>> Nombre del Modelo: esiebomajeremiah/autonlp-email-classification-657119381
    CO2 Emitido durante el entrenamiento: 3.516233232503715

De manera similar, podemos buscar un valor mínimo para encontrar modelos muy grandes que emitieron una gran cantidad de CO2 durante el entrenamiento:

models = api.list_models(emissions_thresholds=(500, None), cardData=True)
len(models)
>>> 10

Ahora veamos exactamente cuánto CO2 emitió uno de estos:

model = models[0]
print(f'Nombre del Modelo: {model.modelId}\nCO2 Emitido durante el entrenamiento: {model.cardData["co2_eq_emissions"]}')

>>> Nombre del Modelo: Maltehb/aelaectra-danish-electra-small-cased
    CO2 Emitido durante el entrenamiento: 4009.5

¡Eso es mucho CO2!

Como puedes ver, en solo unas pocas líneas de código podemos evaluar rápidamente los modelos que deseamos utilizar para asegurarnos de ser conscientes del medio ambiente.

Cómo Reportar tus Emisiones de Carbono con transformers

Si estás utilizando transformers, puedes realizar un seguimiento y reportar automáticamente las emisiones de carbono gracias a la integración de codecarbon. Si has instalado codecarbon en tu máquina, el objeto Trainer agregará automáticamente el CodeCarbonCallback durante el entrenamiento, lo cual almacenará los datos de emisiones de carbono a medida que entrenas.

Entonces, si ejecutas algo como esto…

from datasets import load_dataset
from transformers import AutoModelForSequenceClassification, AutoTokenizer, Trainer, TrainingArguments
​
ds = load_dataset("imdb")
model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased", num_labels=2)
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
​
def tokenize_function(examples):
    return tokenizer(examples["text"], padding="max_length", truncation=True)
​
​
small_train_dataset = ds["train"].shuffle(seed=42).select(range(1000)).map(tokenize_function, batched=True)
small_eval_dataset = ds["test"].shuffle(seed=42).select(range(1000)).map(tokenize_function, batched=True)
​
​
training_args = TrainingArguments(
    "codecarbon-text-classification",
    num_train_epochs=4,
    push_to_hub=True
)
​
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=small_train_dataset,
    eval_dataset=small_eval_dataset,
)
​
trainer.train()

…te quedará un archivo dentro del directorio codecarbon-text-classification llamado emissions.csv. Este archivo realizará un seguimiento de las emisiones de carbono en diferentes ejecuciones de entrenamiento. Luego, cuando estés listo, puedes tomar las emisiones de la ejecución que utilizaste para entrenar tu modelo final e incluirlas en su ficha de modelo. 📝

Un ejemplo de inclusión de estos datos en la parte superior de la ficha de modelo se muestra a continuación:

Para obtener más referencias sobre el formato de metadatos para co2_eq_emissions, consulta la documentación del hub.

Lecturas adicionales

  • Rolnick et al. (2019) – Abordando el cambio climático con aprendizaje automático
  • Strubell et al. (2019) – Consideraciones energéticas y políticas para el aprendizaje profundo en PLN
  • Schwartz et al. (2020) – IA verde

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Las gafas transcriben el habla en tiempo real

Varias empresas han comenzado a comercializar 'gafas de subtitulación en vivo' para ayudar a los usuarios con discapa...

Inteligencia Artificial

Acuerdo preliminar de la UE sobre la regulación de la IA Implicaciones para ChatGPT

La Unión Europea recientemente ha logrado un acuerdo preliminar que establece las regulaciones para gobernar modelos ...

Inteligencia Artificial

Mejora el rendimiento de la inferencia para LLMs con los nuevos contenedores de Amazon SageMaker

Hoy, Amazon SageMaker lanza una nueva versión (0.25.0) de los Contenedores de Aprendizaje Profundo (DLC) para Inferen...

Inteligencia Artificial

Conoce a SAM-PT Un nuevo método de IA que amplía la capacidad del modelo Segment Anything (SAM) para rastrear y segmentar cualquier cosa en videos dinámicos.

Existen numerosas aplicaciones, como la robótica, la conducción autónoma y la edición de video, que se benefician de ...

Inteligencia Artificial

Centros de datos en riesgo debido a fallas en el software de gestión de energía

Los investigadores de ciberseguridad en Trellix han identificado vulnerabilidades en aplicaciones comúnmente utilizad...

Inteligencia Artificial

Reduciendo la huella de carbono en el entrenamiento de IA mediante la optimización

Investigadores de la Universidad de Michigan han creado un marco de optimización de código abierto llamado Zeus que a...