CoolFace
Datasetpublic

GuillermoLlopis/ai-inference-emission-factors

SOMA AI-Inference Emission and Resource Factors Ready-to-use carbon and water emission factors for estimating the footprint of AI inference (LLM API calls) in corporate sustainability inventories — built for CSRD / GHG Protocol Scope 3 Category 1 reporting. Every factor is derived from primary, cited sources (GPU energy benchmarks, grid carbon intensity registries, datacenter water-use studies); derivations are documented column-by-column below and in full in Supplementary S1 of… See the full description on the dataset page: https://huggingface.co/datasets/GuillermoLlopis/ai-inference-emission-factors.

sourceHugging Facecc-by-4.0updated 11d agoView on Hugging Face
0likes63downloads
Dataset Card

SOMA AI-Inference Emission and Resource Factors

Ready-to-use carbon and water emission factors for estimating the footprint of AI inference (LLM API calls) in corporate sustainability inventories — built for CSRD / GHG Protocol Scope 3 Category 1 reporting. Every factor is derived from primary, cited sources (GPU energy benchmarks, grid carbon intensity registries, datacenter water-use studies); derivations are documented column-by-column below and in full in Supplementary S1 of the associated paper.

  • —Concept DOI (always resolves to latest version): 10.5281/zenodo.20443585
  • —Version DOI, v2.0.0 (2026-09-15): 10.5281/zenodo.22767475
  • —Paper (arXiv): 2606.10660 — under peer review at Sustainable Production and Consumption (Elsevier)
  • —License: CC BY 4.0
  • —Contact: guillermollopis@somaai.earth

Built and maintained by SOMA AI, Barcelona. The same factors power the SOMA product's AI factor pages, methodology page, and developer API.


Files

FileRowsWhat it contains
carbon_factors.csv53Carbon intensity (kg CO₂e per 1M output tokens) by model class × region × infra scenario. The core lookup table for inventories.
water_factors.csv49Water consumption (mL per 1,000 output tokens), scope-1 (onsite) + scope-2 (electricity-embedded), by model class × region.
energy_factors.csv9Facility-level GPU energy (Wh per 1,000 tokens) by model class and infrastructure scenario (H100 industry-average vs. B200 best-practice), with PUE applied.
grid_intensity.csv17Grid carbon intensity (kg CO₂e/kWh) by cloud region, location-based 2023 annual averages (EPA eGRID / Ember).
energy_per_token_raw.csv19Raw GPU energy measurements underlying energy_factors.csv, before aggregation into model classes.
lifecycle_factors.csv7Region-independent lifecycle add-ons — embodied hardware manufacturing and amortised model training — per 1M output tokens.
model_class_mapping.csv30Maps named models (GPT, Claude, Gemini, Llama, DeepSeek, etc.) to the four model classes used throughout, with reasoning-token multipliers.
tools/check_factors.py—Recomputes every carbon and water row from first principles and checks internal consistency; optionally cross-checks against the SOMA product's factor constants.

Four model classes are used throughout: class_a_small (~8B, e.g. GPT-4o mini / Claude Haiku), class_b_mid (~70B dense, e.g. GPT-4o / Claude Sonnet), class_c_large_moe (frontier MoE, e.g. GPT-4 / Claude Opus), and class_c_large_dense (frontier dense, ~405B).


How to use

Quick load with `pandas` + `huggingface_hub`:

python
import pandas as pd
from huggingface_hub import hf_hub_download

repo_id = "somaai/ai-inference-emission-factors"  # update to the actual repo id after publishing

carbon = pd.read_csv(hf_hub_download(repo_id, "carbon_factors.csv", repo_type="dataset"))
water = pd.read_csv(hf_hub_download(repo_id, "water_factors.csv", repo_type="dataset"))

# kg CO2e per 1M output tokens, GPT-4o-class model, US East, H100 industry-average infra
row = carbon[
    (carbon.model_class == "class_b_mid") &
    (carbon.infra_scenario == "H100-central") &
    (carbon.region_id.str.startswith("us-east-1"))
]
print(row["kg_co2e_per_1m_tokens"].iloc[0])  # 0.04378

Or with the `datasets` library, using one of the named configs (one per CSV):

python
from datasets import load_dataset

carbon = load_dataset("somaai/ai-inference-emission-factors", "carbon_factors", split="train")

Formula for a corporate GHG inventory (Tier 2a):

CO2e (kg) = Total_output_tokens_millions × kg_co2e_per_1m_tokens

Three-term factor (v2, recommended):

kg CO2e per M tokens = carbon_factors.kg_co2e_per_1m_tokens   (electricity, region-dependent)
                      + lifecycle_factors[embodied_hardware]   (region-independent)
                      + lifecycle_factors[training_amortised]  (region-independent)

Report the electricity term as the central estimate with its region; disclose the two lifecycle add-ons separately with their own uncertainty bands — they matter most on clean grids.

Water footprint:

Water (mL) = Total_output_tokens_thousands × total_ml_per_1k_tokens

Use the global-average region row when the serving region is unknown.


Key finding: region matters more than model

Holding the model class fixed, moving the same workload across cloud regions swings the carbon factor by an order of magnitude more than moving between model classes in the same region. For class_b_mid (the "GPT-4o / Claude Sonnet" tier) at H100-central infrastructure, the carbon factor is about twelve times higher in Singapore than in Sweden (0.07615 vs. 0.00621 kg CO₂e per 1M tokens) — a bigger swing than upgrading from the small model class to the frontier MoE class in the same region. Grid carbon intensity, not model size, is usually the dominant lever for an inference-heavy GHG inventory.


Boundaries and limitations

  • —Location-based only. Grid intensities are location-based annual averages (EPA eGRID 2023 for US regions, Ember for EU/AP). Market-based factors (RECs/PPAs) are not modelled — a company with a renewable power contract may report a lower figure.
  • —GPU energy as a proxy for full server power. facility_wh scales GPU energy by PUE only; non-GPU components (CPU, DRAM, networking) aren't separately modelled. TokenPowerBench (Niu et al., AAAI 2026) estimates these add ~40% to server energy, which is reflected in the ±40–50% uncertainty bands rather than in the central estimate.
  • —H100-central rows for classes B/C/dense are DERIVED, not directly measured: they scale a confirmed B200 measurement by a 2.57× ratio calibrated on the 8B class. Only class_a_small and the B200-optimistic scenario are directly measured end to end.
  • —Water data is patchy. Scope-1 WUE is confirmed (Li et al. 2025, Microsoft data) only for Sweden, Ireland, Netherlands, US East, Texas, and the US average; all other regions (Germany, Japan, Singapore, UK, Belgium, Iowa, Oregon, US South, France, Finland) are ESTIMATED — treat those as approximate. Scope-2 embedded water dominates the total in most regions (>90%).
  • —Lifecycle add-ons are constants, not region-adjusted. Embodied-hardware and training-amortisation terms in lifecycle_factors.csv are the same regardless of cloud region or hardware generation; the embodied term also excludes data-centre construction (a disclosed sensitivity, +0.00171 kg per 1M tokens for class B, scaling by facility energy for other classes).
  • —`class_c_large_dense` has no lifecycle rows in v2 — apply the class_c_large_moe add-ons as a lower-bound approximation for the 405B dense row.
  • —Training-amortisation assumes a single 500T lifetime-tokens-served figure, divided into location-based training emissions from public model cards; treat the training term's very wide band (±1 order of magnitude) accordingly.
  • —The paper is under peer review, not yet published; cite it as a preprint (see Citation below).

Changelog

  • —v1 — 2026-06-09. Initial release, arXiv 2606.10660. Version DOI 10.5281/zenodo.20443586.
  • —v2 — 2026-09-15. Regions completed (France and Finland added; us-west-2, us-south-central, us-south filled in for classes B/C); two v1 rows corrected by the new checker (us-east-1 class B carbon 0.04380→0.04378; Sweden class C water total 1.254→1.253); added lifecycle add-on terms (lifecycle_factors.csv: embodied hardware + amortised training), the model-class mapping table (model_class_mapping.csv), and the reconciliation checker (tools/check_factors.py, run before every deposit). Version DOI 10.5281/zenodo.22767475.

Citation

If you use this dataset, please cite both the dataset (concept DOI, so citations always point at the latest version) and the associated paper.

Dataset:

bibtex
@misc{llopis2026somafactors,
  author       = {Llopis, Guillermo},
  title        = {SOMA AI-Inference Emission and Resource Factors},
  year         = {2026},
  publisher    = {Zenodo},
  version      = {v2.0.0},
  doi          = {10.5281/zenodo.20443585},
  url          = {https://doi.org/10.5281/zenodo.20443585}
}

Paper:

bibtex
@misc{llopis2026accounting,
  author       = {Llopis, Guillermo},
  title        = {Accounting for AI Inference in Corporate GHG Inventories: A Four-Tier Methodology for Scope 3 Category 1 Reporting},
  year         = {2026},
  eprint       = {2606.10660},
  archivePrefix= {arXiv},
  note         = {Under peer review at Sustainable Production and Consumption (Elsevier)}
}

Links

  • —Methodology: https://app.somaai.earth/methodology
  • —Developer docs / API: https://app.somaai.earth/docs/ai-factors
  • —Factor pages: https://app.somaai.earth/ai-factors
  • —Paper: https://arxiv.org/abs/2606.10660
  • —Zenodo (concept DOI, all versions): https://doi.org/10.5281/zenodo.20443585

Contact

guillermollopis@somaai.earth