Mesurez l'impact CO₂ de votre code et de vos prompts.
Ce projet a été développée à l'occasion d'un Hackathon pour la filière IAMD de Télécom Nancy. Il propose une interface Streamlit unifiée pour estimer l'empreinte carbone de deux usages courants en IA :
- L'exécution locale de scripts Python/Java (via
codecarbon). - L'inférence LLM via API (OpenAI, Gemini, Groq, HuggingFace).
L'objectif ? Rendre tangible le coût invisible du numérique, en combinant mesure réelle (énergie consommée) et estimation matérielle (coût de fabrication/embodied).
# Cloner et préparer l'environnement
python -m venv .venv
source .venv/bin/activate # ou .venv\Scripts\activate sous Windows
pip install -r requirements.txtCréez un fichier .env à la racine. Remplissez uniquement les clés des providers que vous comptez utiliser.
# API Keys (Laisser vide si inutilisé)
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=...
GROQ_API_KEY=...
HUGGINGFACE_API_KEY=hf_...
# Modèles (Le premier de la liste est le défaut)
OPENAI_MODEL=gpt-4o,gpt-3.5-turbo
GEMINI_MODEL=gemini-1.5-flash
GROQ_MODEL=llama-3.3-70b-versatile
HUGGINGFACE_MODEL=mistralai/Mistral-7B-Instruct-v0.2streamlit run app/1_🏠_Accueil.pyL'application est divisée en deux volets principaux accessibles via la sidebar Streamlit.
Collez votre code Python ou uploadez un fichier .py. L'application l'exécute dans un environnement instrumenté.
- Métriques : Durée, Énergie (kWh), Émissions (kgCO₂eq).
- Logs : Capture de
stdout/stderren temps réel. - Data : Génération et téléchargement automatique d'un fichier
emissions.csv.
Envoyez un prompt à différents modèles et comparez leur empreinte estimée.
- Multi-Provider : Supporte OpenAI, Google Gemini, Groq et Hugging Face Hub.
- Calcul Hybride : Prend en compte la latence réseau (temps d'inférence) et le profil matériel théorique des serveurs.
- Gestion d'erreurs : Gère les timeouts et les rate-limits proprement.
C'est ici que ça devient intéressant. Pour les LLM, nous n'avons pas accès au compteur électrique d'OpenAI ou de Google. Nous utilisons une approche heuristique basée sur la littérature scientifique (notamment arXiv:2309.14393).
L'empreinte totale est la somme de l'opérationnel (électricité) et du matériel (fabrication amortie) :
On estime l'énergie consommée par l'inférence en fonction du temps et de la puissance estimée du GPU/TPU :
-
$P_{device}$ : Puissance thermique (TDP) estimée du matériel (ex: A100, TPU v4). - PUE : Power Usage Effectiveness (efficacité du data center).
- CI : Carbon Intensity du mix électrique local.
On amortit le coût carbone de fabrication du serveur sur la durée de la requête :
Note
Pour chaque modèle et provider, les paramètres matériels sont définis dans backend/config.py.
├── app/
│ ├── 1_🏠_Accueil.py # Point d'entrée Streamlit
│ └── pages/ # Pages auto-découvertes (CodeCarbon, etc.)
├── backend/
│ ├── config.py # La "source de vérité" (Constantes, Modèles)
│ ├── llm_caller.py # Wrappers API unifiés
│ └── compute_LLM_footprint.py # Le moteur de calcul CO2
├── data/ # Stockage local (Prompts, Historique sessions)
└── emissions.csv # Log généré par CodeCarbon
Distribué sous licence MIT.
Auteurs : Chloé WIATT, Lucie CORREIA, Antoine BRETZNER