<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Codecarbon on lo0 — Blog Técnico</title><link>https://blog.lo0.es/tags/codecarbon/</link><description>Recent content in Codecarbon on lo0 — Blog Técnico</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Sat, 13 Jun 2026 02:00:00 +0200</lastBuildDate><atom:link href="https://blog.lo0.es/tags/codecarbon/index.xml" rel="self" type="application/rss+xml"/><item><title>Benchmarking de energía en IA: frameworks, métricas y estado del arte (ficha a ficha)</title><link>https://blog.lo0.es/posts/benchmarking-energia-llm-frameworks-estado-del-arte/</link><pubDate>Sat, 13 Jun 2026 02:00:00 +0200</pubDate><guid>https://blog.lo0.es/posts/benchmarking-energia-llm-frameworks-estado-del-arte/</guid><description>&lt;blockquote>
&lt;p>Notación: importes en &lt;strong>euros (N €)&lt;/strong>, decimales con coma. Las referencias de energía y
carbono son &lt;strong>europeas&lt;/strong> (Francia, Alemania, España), por tratarse de una propuesta
soberana. No se usa el símbolo de dólar (en este sitio es delimitador de fórmula).&lt;/p>
&lt;/blockquote>
&lt;h2 id="qué-cubre-esta-introducción">Qué cubre esta introducción&lt;/h2>
&lt;p>Cuarto artículo de la serie de datos y &lt;em>deep dive&lt;/em> del eje de &lt;strong>energía&lt;/strong>. Medir los vatios
de una carga de IA parece un detalle de sostenibilidad, pero es a la vez una palanca de
coste (la electricidad es el &lt;strong>30–50 % del TCO&lt;/strong>), un eje de &lt;strong>soberanía&lt;/strong> (el carbono por
token depende del país) y, cada vez más, una &lt;strong>obligación regulatoria&lt;/strong> (reporte de
emisiones). Este artículo inventaría las métricas, &lt;strong>de dónde sale físicamente cada dato&lt;/strong>,
la ficha de cada framework de medición, y cómo se pasa del vatio al carbono con datos
europeos. Sin recomendaciones; solo datos y metodología, porque en energía —más aún que en
rendimiento— &lt;strong>el método de medida cambia el resultado&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="por-qué-medir-energía-importa-con-números">Por qué medir energía importa (con números)&lt;/h2>
&lt;p>Tres razones cuantificadas, que conectan con el &lt;a href="https://blog.lo0.es/posts/tres-ejes-coste-rendimiento-energia-inferencia-llm/">artículo de apertura&lt;/a>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Razón&lt;/th>
&lt;th>Dato&lt;/th>
&lt;th>Implicación&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Coste&lt;/strong>&lt;/td>
&lt;td>electricidad = 30–50 % del TCO&lt;/td>
&lt;td>medir energía es medir casi la mitad del coste&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Soberanía/carbono&lt;/strong>&lt;/td>
&lt;td>Francia ~9× menos gCO₂/token que Alemania&lt;/td>
&lt;td>el país del cluster es una palanca&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Escala/regulación&lt;/strong>&lt;/td>
&lt;td>datacenters ~460 TWh en 2025 (≈1,8 % mundial), &amp;gt;800 TWh proyectado 2028&lt;/td>
&lt;td>reporte de emisiones (CSRD) obligatorio&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>A 700 W por H100, un nodo de 8 tarjetas consume del orden de 5,6 kW solo de placa, ~49.000
kWh al año. Aplicando el PUE 1,4 son ~68.700 kWh/año, y ahí el país decide la factura: a
precio mayorista francés (~0,058 €/kWh) eso son &lt;strong>~3.980 €/año&lt;/strong> de electricidad por nodo; en
Alemania (~0,091 €/kWh), &lt;strong>~6.250 €/año&lt;/strong> — un 57 % más por el mismo hierro y el mismo
trabajo. Multiplicado por una flota, es una partida de coste de primer orden, y una huella de
carbono que, en Europa, hay que medir y reportar. La energía dejó de ser un detalle de
ingeniería para ser una variable de negocio y de cumplimiento.&lt;/p>
&lt;hr>
&lt;h2 id="las-métricas-de-energía">Las métricas de energía&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Métrica&lt;/th>
&lt;th>Definición&lt;/th>
&lt;th>Unidad&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Potencia media&lt;/td>
&lt;td>consumo instantáneo promedio&lt;/td>
&lt;td>W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Energía por token&lt;/strong>&lt;/td>
&lt;td>energía consumida por token generado&lt;/td>
&lt;td>J/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Energía por inferencia&lt;/td>
&lt;td>energía por petición&lt;/td>
&lt;td>µJ – Wh&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Energía total&lt;/td>
&lt;td>integral de potencia en el tiempo&lt;/td>
&lt;td>Wh, kWh&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>PUE&lt;/strong> (Power Usage Effectiveness)&lt;/td>
&lt;td>overhead del datacenter (refrigeración, pérdidas)&lt;/td>
&lt;td>ratio ≥ 1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Carbono&lt;/td>
&lt;td>energía × intensidad de red&lt;/td>
&lt;td>gCO₂eq&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Las dos identidades base de todo el eje:&lt;/p>
$$\text{energía por token (J)} = \frac{\text{potencia media (W)}}{\text{throughput (tok/s)}}$$
$$\text{carbono} = \text{energía (kWh)} \times \text{PUE} \times \text{intensidad de red (gCO}_2\text{/kWh)}$$
&lt;p>La primera es la misma forma que el coste por token: comparte el denominador del throughput,
así que &lt;strong>subir tokens/s baja la energía por token&lt;/strong>. La segunda introduce los dos
multiplicadores externos al cómputo —el &lt;strong>PUE&lt;/strong> del datacenter y la &lt;strong>intensidad de red&lt;/strong>
del país— que pueden cambiar el carbono por token en un orden de magnitud sin tocar el
stack.&lt;/p>
&lt;hr>
&lt;h2 id="ejemplo-trabajado-energía-por-token-de-un-nodo-8h100">Ejemplo trabajado: energía por token de un nodo 8×H100&lt;/h2>
&lt;p>Para anclar las identidades con números, el cálculo de extremo a extremo sobre el nodo de
ejemplo (8×H100, Llama 3.1 70B FP16, vLLM a 2.800 tok/s):&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Paso&lt;/th>
&lt;th>Cálculo&lt;/th>
&lt;th>Resultado&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Potencia de placa&lt;/td>
&lt;td>8 × 700 W&lt;/td>
&lt;td>5.600 W&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Energía por token (placa)&lt;/td>
&lt;td>5.600 ÷ 2.800&lt;/td>
&lt;td>2,0 J/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Energía por token (con PUE 1,4)&lt;/td>
&lt;td>2,0 × 1,4&lt;/td>
&lt;td>2,8 J/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Energía por 1M tokens (placa)&lt;/td>
&lt;td>2 × 10⁶ J&lt;/td>
&lt;td>0,56 kWh&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Energía por 1M tokens (con PUE)&lt;/td>
&lt;td>0,56 × 1,4&lt;/td>
&lt;td>0,78 kWh&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>De ahí salen el coste eléctrico y el carbono, &lt;strong>por país&lt;/strong>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>País&lt;/th>
&lt;th>Coste eléctrico / 1M tok&lt;/th>
&lt;th>Carbono / 1M tok&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Francia (0,058 €/kWh; ~40 gCO₂/kWh)&lt;/td>
&lt;td>~0,045 €&lt;/td>
&lt;td>~31 gCO₂&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>España (0,054 €/kWh; ~160 gCO₂/kWh)&lt;/td>
&lt;td>~0,042 €&lt;/td>
&lt;td>~125 gCO₂&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Alemania (0,091 €/kWh; ~363 gCO₂/kWh)&lt;/td>
&lt;td>~0,071 €&lt;/td>
&lt;td>~283 gCO₂&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Y el enlace con el rendimiento: si una optimización (p. ej. FP8) subiera el throughput a
4.200 tok/s, la energía por token bajaría a ~1,33 J/token (placa) y todo lo de abajo en la
misma proporción — el coste eléctrico y el carbono por token caen con el throughput, por la
identidad. Nota: estas son cifras de &lt;strong>placa + PUE&lt;/strong>; el nodo completo (CPU, NICs, fuentes)
consume algo más, y la energía &lt;strong>medida&lt;/strong> con un vatímetro puede diferir de la &lt;strong>estimada&lt;/strong>
con &lt;code>nvidia-smi&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="de-dónde-sale-el-dato-las-capas-de-medición">De dónde sale el dato: las capas de medición&lt;/h2>
&lt;p>No toda cifra de energía es igual de fiable. El dato puede venir de cuatro capas, con
precisión creciente y contexto decreciente:&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 240" role="img" aria-label="Capas de donde se obtiene el dato de energía: contadores de GPU NVML/DCGM, RAPL de CPU, eBPF con modelos, y vatímetro físico como referencia" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}&lt;/style>
&lt;rect class="bx" x="20" y="36" width="360" height="42" rx="6"/>
&lt;text x="32" y="55" class="tl">GPU — NVML / nvidia-smi / DCGM&lt;/text>
&lt;text x="32" y="71" class="ts">potencia de la tarjeta por contador de hardware&lt;/text>
&lt;rect class="bx" x="20" y="90" width="360" height="42" rx="6"/>
&lt;text x="32" y="109" class="tl">CPU/DRAM — RAPL&lt;/text>
&lt;text x="32" y="125" class="ts">contadores Intel/AMD vía /proc, perf&lt;/text>
&lt;rect class="bx" x="20" y="144" width="360" height="42" rx="6"/>
&lt;text x="32" y="163" class="tl">Atribución por proceso/pod — eBPF + modelo&lt;/text>
&lt;text x="32" y="179" class="ts">reparte el vatio entre cargas (Kepler)&lt;/text>
&lt;rect class="bx" x="410" y="90" width="350" height="42" rx="6"/>
&lt;text x="422" y="109" class="tl">Vatímetro físico (referencia)&lt;/text>
&lt;text x="422" y="125" class="ts">la verdad-terreno contra la que se calibra todo&lt;/text>
&lt;text x="410" y="165" class="ts">Cuanto más arriba la capa, más contexto (carbono) y&lt;/text>
&lt;text x="410" y="181" class="ts">menos precisión directa; el vatímetro es el patrón.&lt;/text>
&lt;text x="20" y="216" class="ts">La GPU es la fuente dominante en inferencia LLM; RAPL cubre CPU/DRAM; eBPF reparte por pod; el vatímetro calibra.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;p>La &lt;strong>GPU&lt;/strong> es la fuente dominante en inferencia LLM, y su potencia se lee por contador de
hardware (NVML/nvidia-smi, agregado por DCGM — la misma base que la
&lt;a href="https://blog.lo0.es/posts/observabilidad-gpu-dcgm-llm/">observabilidad GPU&lt;/a>). &lt;strong>RAPL&lt;/strong> da la de CPU y
DRAM. La capa de &lt;strong>eBPF + modelo&lt;/strong> (Kepler) reparte el vatio total entre contenedores y pods
sin instrumentar la aplicación. Y el &lt;strong>vatímetro físico&lt;/strong> es la verdad-terreno contra la que
se calibran las estimaciones: ninguna estimación software es mejor que el vatímetro, solo
más cómoda.&lt;/p>
&lt;hr>
&lt;h2 id="cómo-se-instrumenta-y-dónde-se-cuela-el-error">Cómo se instrumenta (y dónde se cuela el error)&lt;/h2>
&lt;p>Cuatro decisiones de instrumentación explican la mayoría de las discrepancias entre
mediciones de energía:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Frecuencia de muestreo.&lt;/strong> &lt;code>nvidia-smi&lt;/code>/DCGM leen la potencia a intervalos; un muestreo
demasiado grueso &lt;strong>se pierde los picos&lt;/strong> y subestima la energía. Hay que muestrear lo
bastante fino para capturar la variación de potencia entre prefill (alta) y decode (más
baja).&lt;/li>
&lt;li>&lt;strong>Placa vs nodo.&lt;/strong> La potencia de la GPU (placa) &lt;strong>no incluye&lt;/strong> CPU, NICs, ventiladores ni
pérdidas de las fuentes (típicamente un 10–20 % extra). Comparar una energía de placa con
una de nodo completo es comparar cosas distintas.&lt;/li>
&lt;li>&lt;strong>Baseline de idle.&lt;/strong> Una GPU encendida sin trabajo ya consume potencia. ¿Se atribuye ese
idle a la carga o se descuenta? La decisión cambia la energía por token, y el idle importa:
es energía real que alguien paga.&lt;/li>
&lt;li>&lt;strong>Ventana temporal.&lt;/strong> La energía es la &lt;strong>integral de la potencia en el tiempo&lt;/strong>; la ventana
de medición tiene que alinearse exactamente con la carga (sin contar el warm-up ni el
apagado), o el número no corresponde al trabajo medido.&lt;/li>
&lt;/ul>
&lt;p>Estas decisiones, igual que en el benchmarking de rendimiento, hacen que &lt;strong>el método de
medida importe tanto como el sistema medido&lt;/strong>. Un J/token sin especificar muestreo, frontera
placa/nodo y tratamiento del idle no es comparable.&lt;/p>
&lt;hr>
&lt;h2 id="frameworks-ficha-a-ficha">Frameworks, ficha a ficha&lt;/h2>
&lt;h3 id="zeus-mlenergy-universidad-de-michigan">Zeus (ml.energy, Universidad de Michigan)&lt;/h3>
&lt;p>Qué hace: &lt;strong>medir y optimizar&lt;/strong> la energía de cargas de deep learning. Método: contadores
NVML. Ámbito: GPU &lt;strong>NVIDIA y AMD&lt;/strong>, CPU, DRAM, Apple Silicon y NVIDIA Jetson. Licencia: OSS;
respaldo académico (paper NSDI'23). Diferenciador: no solo mide, también &lt;strong>optimiza&lt;/strong>
(power capping, selección de frecuencia) para reducir energía sin perder rendimiento
significativo (&lt;a href="https://ml.energy/zeus/">Zeus Project&lt;/a>, &lt;a href="https://www.usenix.org/system/files/nsdi23-you.pdf">NSDI'23&lt;/a>).
Es la herramienta de referencia cuando el objetivo es &lt;strong>bajar&lt;/strong> los J/token, no solo
medirlos.&lt;/p>
&lt;h3 id="codecarbon">CodeCarbon&lt;/h3>
&lt;p>Qué hace: estima la energía y el &lt;strong>CO₂eq&lt;/strong> de procesos de cómputo. Método: lee la GPU con
&lt;code>nvidia-smi&lt;/code> y estima CPU/RAM. Ámbito: CPU + GPU + RAM. Licencia: OSS (Python). Diferenciador:
integra en flujos de ML y pipelines de CI, y es el que &lt;strong>más se aproxima al vatímetro&lt;/strong> entre
las herramientas Python (&lt;a href="https://medium.com/@prhmma/best-green-code-tools-july-2025-mainly-python-7ab415af0cd6">comparación&lt;/a>).
Aporta contexto de carbono de serie. Límite: estimación de alto nivel, menos exacta que la
medición directa por hardware.&lt;/p>
&lt;h3 id="carbontracker">CarbonTracker&lt;/h3>
&lt;p>Qué hace: rastrea energía y carbono &lt;strong>en tiempo de ejecución de GPU&lt;/strong>. Ámbito: &lt;strong>solo GPU&lt;/strong>
—no mide CPU ni memoria—. Licencia: OSS. Diferenciador: ligero, fácil de añadir a un script
de entrenamiento/inferencia. Límite: cobertura parcial (sin CPU/DRAM), así que infravalora
la energía total del sistema.&lt;/p>
&lt;h3 id="scaphandre">Scaphandre&lt;/h3>
&lt;p>Qué hace: agente de metrología de potencia escrito en &lt;strong>Rust&lt;/strong>. Método: &lt;strong>RAPL&lt;/strong> (lee
&lt;code>/proc&lt;/code>, reparte julios por ticks de CPU). Ámbito: proceso o VM, con &lt;strong>precisión cruda de la
capa hardware&lt;/strong>. Licencia: OSS. Diferenciador: la mayor exactitud directa de las
herramientas generalistas, a costa de &lt;strong>no traer contexto de carbono&lt;/strong> (es metrología pura)
(&lt;a href="https://github.com/hubblo-org/scaphandre">Scaphandre · GitHub&lt;/a>). Límite: centrado en CPU/RAPL;
para GPU hay que combinarlo con NVML.&lt;/p>
&lt;h3 id="kepler-cncf">Kepler (CNCF)&lt;/h3>
&lt;p>Qué hace: exporter de Prometheus que mide energía a nivel de &lt;strong>contenedor, pod y nodo&lt;/strong> en
Kubernetes. Método: &lt;strong>eBPF + modelos de ML&lt;/strong> para estimar el consumo por carga. Lenguaje:
Go + C. Licencia: &lt;strong>Apache 2.0&lt;/strong> (proyecto &lt;code>sustainable-computing-io&lt;/code>) (&lt;a href="https://github.com/sustainable-computing-io/kepler">Kepler · GitHub&lt;/a>).
Diferenciador: es la opción &lt;strong>cloud-native&lt;/strong> para atribuir energía por pod sin instrumentar
la app, igual que OpenCost atribuye el coste. Límite: la atribución por eBPF + modelo es
estimación, no medición directa; su precisión depende del modelo.&lt;/p>
&lt;h3 id="mlperf-power-mlcommons">MLPerf Power (MLCommons)&lt;/h3>
&lt;p>Qué hace: benchmark &lt;strong>estandarizado&lt;/strong> de eficiencia energética, de &lt;strong>µW a MW&lt;/strong>. Mantenedor:
MLCommons. Diferenciador: comparabilidad cross-vendor de la eficiencia, con un dataset que
abarca varios años y versiones de workload (&lt;a href="https://arxiv.org/html/2410.12032v2">MLPerf Power, arXiv 2410.12032&lt;/a>).
Es a la energía lo que MLPerf Inference es al rendimiento: el patrón de comparación entre
fabricantes.&lt;/p>
&lt;h3 id="tabla-comparativa">Tabla comparativa&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Herramienta&lt;/th>
&lt;th>Método&lt;/th>
&lt;th>Ámbito&lt;/th>
&lt;th>Licencia&lt;/th>
&lt;th>Precisión / nota&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Zeus&lt;/strong>&lt;/td>
&lt;td>NVML / contadores&lt;/td>
&lt;td>GPU NV+AMD, CPU, DRAM, Apple, Jetson&lt;/td>
&lt;td>OSS&lt;/td>
&lt;td>mide &lt;strong>y optimiza&lt;/strong> energía de DL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>CodeCarbon&lt;/strong>&lt;/td>
&lt;td>nvidia-smi + estimación&lt;/td>
&lt;td>CPU+GPU+RAM, CO₂eq&lt;/td>
&lt;td>OSS (Python)&lt;/td>
&lt;td>el más &lt;strong>cercano al vatímetro&lt;/strong> entre Python&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>CarbonTracker&lt;/strong>&lt;/td>
&lt;td>runtime GPU&lt;/td>
&lt;td>&lt;strong>solo GPU&lt;/strong>&lt;/td>
&lt;td>OSS&lt;/td>
&lt;td>ligero; sin CPU/mem&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Scaphandre&lt;/strong>&lt;/td>
&lt;td>RAPL (/proc)&lt;/td>
&lt;td>proceso/VM&lt;/td>
&lt;td>OSS (Rust)&lt;/td>
&lt;td>precisión cruda; sin contexto de carbono&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Kepler&lt;/strong>&lt;/td>
&lt;td>eBPF + modelo&lt;/td>
&lt;td>contenedor/pod/nodo (K8s)&lt;/td>
&lt;td>Apache 2.0 (CNCF)&lt;/td>
&lt;td>cloud-native; estimación por modelo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>MLPerf Power&lt;/strong>&lt;/td>
&lt;td>medición estandarizada&lt;/td>
&lt;td>de µW a MW&lt;/td>
&lt;td>MLCommons&lt;/td>
&lt;td>comparabilidad cross-vendor&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="precisión-a-quién-creer">Precisión: a quién creer&lt;/h2>
&lt;p>La diferencia entre herramientas no es de matiz: &lt;strong>Scaphandre&lt;/strong> ofrece la precisión cruda de
la capa hardware (RAPL), mientras que los Python como &lt;strong>CodeCarbon&lt;/strong> dan estimaciones de más
alto nivel y conscientes del carbono, con más contexto pero menos exactitud directa; entre
los Python, CodeCarbon es el que más se acerca al vatímetro, seguido de CarbonTracker, con
variabilidad entre infraestructuras (&lt;a href="https://medium.com/@prhmma/best-green-code-tools-july-2025-mainly-python-7ab415af0cd6">comparación&lt;/a>).
La regla: para &lt;strong>dimensionar y diseñar&lt;/strong>, una estimación software vale; para &lt;strong>defender una
cifra ante un comité o un auditor&lt;/strong>, conviene calibrar contra un &lt;strong>vatímetro&lt;/strong> al menos una
vez, y usar la herramienta software como proxy continuo. El dato medido manda sobre el
estimado; el resto es comodidad.&lt;/p>
&lt;hr>
&lt;h2 id="leaderboards-y-benchmarks-de-energía">Leaderboards y benchmarks de energía&lt;/h2>
&lt;p>Para comparar eficiencia &lt;strong>entre modelos&lt;/strong> sin montar un banco propio:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Recurso&lt;/th>
&lt;th>Qué aporta&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>MLPerf Power&lt;/strong>&lt;/td>
&lt;td>medición estandarizada de eficiencia, de µW a MW&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>HF AI Energy Score&lt;/strong>&lt;/td>
&lt;td>ratings comparables de eficiencia energética por modelo (&lt;a href="https://huggingface.github.io/AIEnergyScore/">HF&lt;/a>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>ML.ENERGY Benchmark&lt;/strong>&lt;/td>
&lt;td>medición y optimización automatizada de energía de inferencia&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>awesome-green-ai&lt;/strong>&lt;/td>
&lt;td>índice curado de recursos y herramientas Green AI (&lt;a href="https://github.com/samuelrince/awesome-green-ai">repo&lt;/a>)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Estos recursos dan el orden de magnitud de la energía por token de cada modelo, útil para
&lt;strong>elegir modelo por eficiencia&lt;/strong> en la fase de diseño. Pero no sustituyen la medición en tu
hardware y tu carga: un leaderboard mide en un banco concreto, no en tu nodo.&lt;/p>
&lt;hr>
&lt;h2 id="del-vatio-al-carbono-francia-alemania-españa">Del vatio al carbono: Francia, Alemania, España&lt;/h2>
&lt;p>Aquí el eje de energía se convierte en argumento de soberanía. El carbono por token sale de
multiplicar la energía por la &lt;strong>intensidad de red del país&lt;/strong>, que en Europa varía en casi
dos órdenes de magnitud:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>País&lt;/th>
&lt;th>Mayorista (€/MWh, mar-2026)&lt;/th>
&lt;th>Carbono red (gCO₂/kWh)&lt;/th>
&lt;th>Perfil&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Francia&lt;/strong>&lt;/td>
&lt;td>~58&lt;/td>
&lt;td>&lt;strong>~20–60&lt;/strong>&lt;/td>
&lt;td>nuclear: barata y muy limpia&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>España&lt;/strong>&lt;/td>
&lt;td>~54&lt;/td>
&lt;td>&lt;strong>~150–170&lt;/strong>&lt;/td>
&lt;td>renovable + gas: barata, carbono medio&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Alemania&lt;/strong>&lt;/td>
&lt;td>~91&lt;/td>
&lt;td>&lt;strong>~363&lt;/strong> (media 2024)&lt;/td>
&lt;td>carbón/gas + renovables: cara y sucia&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Fuentes: precios mayoristas (&lt;a href="https://tradingeconomics.com/france/electricity-price">TradingEconomics&lt;/a>),
carbono de Alemania ~363 gCO₂/kWh (media 2024, &lt;a href="https://en.wikipedia.org/wiki/Electricity_sector_in_Germany">Wikipedia&lt;/a>),
nuclear ~17–35 gCO₂e/kWh (&lt;a href="https://www.eea.europa.eu/en/analysis/indicators/greenhouse-gas-emission-intensity-of-1">EEA&lt;/a>),
España ~167 gCO₂/kWh (2020). La intensidad horaria se obtiene de &lt;strong>ElectricityMaps&lt;/strong>.&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 230" role="img" aria-label="Del vatio al carbono por país europeo: una misma energía por token se multiplica por la intensidad de red de Francia, España o Alemania dando carbono por token muy distinto" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}.ar{fill:none;stroke:currentColor;stroke-width:1.3;marker-end:url(#em)}&lt;/style>
&lt;defs>&lt;marker id="em" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>&lt;/marker>&lt;/defs>
&lt;rect class="bx" x="20" y="90" width="190" height="50" rx="6"/>
&lt;text x="32" y="111" class="tl">0,78 kWh / 1M tokens&lt;/text>
&lt;text x="32" y="128" class="ts">(energía con PUE)&lt;/text>
&lt;path class="ar" d="M210,100 L300,55"/>
&lt;path class="ar" d="M210,115 L300,115"/>
&lt;path class="ar" d="M210,130 L300,175"/>
&lt;rect class="bx" x="300" y="36" width="200" height="40" rx="6"/>
&lt;text x="312" y="56" class="tl">Francia (~40 gCO₂/kWh)&lt;/text>
&lt;text x="312" y="70" class="ts">→ ~31 gCO₂ / 1M tokens&lt;/text>
&lt;rect class="bx" x="300" y="95" width="200" height="40" rx="6"/>
&lt;text x="312" y="115" class="tl">España (~160 gCO₂/kWh)&lt;/text>
&lt;text x="312" y="129" class="ts">→ ~125 gCO₂ / 1M tokens&lt;/text>
&lt;rect class="bx" x="300" y="154" width="200" height="40" rx="6"/>
&lt;text x="312" y="174" class="tl">Alemania (~363 gCO₂/kWh)&lt;/text>
&lt;text x="312" y="188" class="ts">→ ~283 gCO₂ / 1M tokens&lt;/text>
&lt;text x="540" y="110" class="ts">Misma carga, mismo hierro:&lt;/text>
&lt;text x="540" y="128" class="ts">~9× más carbono en Alemania&lt;/text>
&lt;text x="540" y="146" class="ts">que en Francia, solo por la red.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;p>El cálculo, sobre el nodo de ejemplo (0,78 kWh por millón de tokens, con PUE): en &lt;strong>Francia&lt;/strong>
(~40 gCO₂/kWh) son &lt;strong>~31 gCO₂ por millón de tokens&lt;/strong>; en &lt;strong>Alemania&lt;/strong> (~363 gCO₂/kWh), &lt;strong>~283
gCO₂&lt;/strong> — un factor de &lt;strong>~9×&lt;/strong>, sin tocar una línea del stack. &lt;strong>Ubicar el cluster en Francia
o España es, a la vez, una palanca de coste, de carbono y de cumplimiento&lt;/strong> (&lt;a href="https://blog.lo0.es/posts/eu-ai-act-mapeo-arquitectura-llm-on-premise/">EU AI Act&lt;/a>,
&lt;a href="https://blog.lo0.es/posts/controles-tecnicos-ens-42001-eu-ai-act/">controles ENS × 42001 × EU AI Act&lt;/a>).&lt;/p>
&lt;hr>
&lt;h2 id="palancas-de-eficiencia-energética">Palancas de eficiencia energética&lt;/h2>
&lt;p>Una vez que se mide, se puede bajar. Las palancas, ordenadas por la identidad J/token = W ÷
throughput (bajar el numerador o subir el denominador):&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Palanca&lt;/th>
&lt;th>Mecanismo&lt;/th>
&lt;th>Efecto&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Cuantización (FP8/INT4)&lt;/strong>&lt;/td>
&lt;td>más tokens por GPU-hora, menos VRAM/KV&lt;/td>
&lt;td>sube throughput → baja J/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Batching / continuous batching&lt;/strong>&lt;/td>
&lt;td>amortiza el coste fijo de potencia&lt;/td>
&lt;td>sube throughput → baja J/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Power capping&lt;/strong> (Zeus)&lt;/td>
&lt;td>limita la potencia de la GPU&lt;/td>
&lt;td>baja W con poca pérdida de throughput&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Scheduling por eficiencia&lt;/strong>&lt;/td>
&lt;td>consolidar cargas, apagar GPU ociosa&lt;/td>
&lt;td>elimina el consumo en idle&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Ubicación (país)&lt;/strong>&lt;/td>
&lt;td>red más limpia&lt;/td>
&lt;td>baja el carbono por token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Evitar el sobre-razonamiento&lt;/strong>&lt;/td>
&lt;td>menos tokens de razonamiento que no aportan&lt;/td>
&lt;td>menos cómputo → menos energía&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>La cuantización (ver &lt;a href="https://blog.lo0.es/posts/quantization-fundamentos-inferencia/">cuantización para inferencia&lt;/a>)
es la palanca de mayor retorno porque mueve los tres ejes a la vez: sube throughput, baja
coste y baja energía por token. El &lt;strong>power capping&lt;/strong> de Zeus es específico de energía:
recorta la potencia de pico con poca pérdida de rendimiento, bajando los W del numerador. Y
el &lt;strong>idle&lt;/strong> —la GPU encendida sin trabajar— es energía pura tirada, que el scheduling
recupera.&lt;/p>
&lt;hr>
&lt;h2 id="del-diseño-a-producción-dónde-se-mide-la-energía">Del diseño a producción: dónde se mide la energía&lt;/h2>
&lt;p>Como con los otros ejes, la energía se mide en tres momentos, con herramientas distintas y
precisión creciente:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Momento&lt;/th>
&lt;th>Herramienta&lt;/th>
&lt;th>Qué da&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Diseño&lt;/strong>&lt;/td>
&lt;td>TDP × horas (datasheet)&lt;/td>
&lt;td>estimación de techo para dimensionar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Benchmark&lt;/strong>&lt;/td>
&lt;td>Zeus, MLPerf Power, vatímetro&lt;/td>
&lt;td>energía por token medida en banco controlado&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Producción&lt;/strong>&lt;/td>
&lt;td>Kepler (eBPF), DCGM&lt;/td>
&lt;td>consumo continuo por pod en el cluster&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>La cifra de &lt;strong>diseño&lt;/strong> (TDP) sirve para dimensionar la acometida eléctrica y la
refrigeración, pero sobreestima (la GPU rara vez está al TDP el 100 % del tiempo). La de
&lt;strong>benchmark&lt;/strong> es la que se usa para el coste y el carbono por token de la propuesta, porque
es medida y reproducible. Y la de &lt;strong>producción&lt;/strong> (Kepler/DCGM) cierra el bucle: vigila que el
consumo real coincide con lo presupuestado y alimenta el reporte de huella. Los tres tienen
que ser trazables entre sí — es lo que hace el harness del artículo S4.&lt;/p>
&lt;hr>
&lt;h2 id="energía-en-el-tco-y-la-regulación-europea">Energía en el TCO y la regulación europea&lt;/h2>
&lt;p>El cierre del eje: la energía no es solo sostenibilidad, es &lt;strong>coste y cumplimiento&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Coste&lt;/strong>: al ser el 30–50 % del TCO, cada mejora de J/token se traduce directamente en
euros. En el ejemplo, pasar de Alemania (~0,091 €/kWh) a Francia (~0,058 €/kWh) baja la
parte eléctrica ~37 % además del carbono.&lt;/li>
&lt;li>&lt;strong>Regulación (CSRD)&lt;/strong>: las empresas europeas deben &lt;strong>reportar su huella de carbono&lt;/strong>
(scope 2). Una red baja en carbono (Francia) mejora directamente ese dato reportado, y
medir la energía por token deja de ser opcional para ser un requisito de reporte.&lt;/li>
&lt;li>&lt;strong>EU AI Act&lt;/strong>: la eficiencia y el consumo energético forman parte de la documentación
esperable de sistemas de IA, lo que convierte la medición de energía en parte del
expediente técnico.&lt;/li>
&lt;/ul>
&lt;p>Un matiz de reporte que conviene conocer: la huella eléctrica es &lt;strong>scope 2&lt;/strong> (emisiones
indirectas de la energía comprada), y se puede contabilizar &lt;strong>por ubicación&lt;/strong> (la intensidad
real de la red del país) o &lt;strong>por mercado&lt;/strong> (según los certificados de origen contratados). La
contabilidad por ubicación es la que premia de verdad poner el cluster en una red limpia como
la francesa; la de mercado permite &amp;ldquo;comprar&amp;rdquo; energía verde por certificados. Saber cuál exige
tu reporte CSRD cambia qué palanca (ubicación física vs contrato) baja el dato — y ambas
parten de &lt;strong>medir&lt;/strong> la energía por token, que es lo que da este eje.&lt;/p>
&lt;p>Es decir: medir energía cubre a la vez una partida de coste de primer orden, el argumento de
carbono/soberanía y una obligación regulatoria. Para una propuesta soberana europea, el eje
de energía no es el &amp;ldquo;bonito de la sostenibilidad&amp;rdquo;: es una de las tres columnas con número.&lt;/p>
&lt;hr>
&lt;h2 id="checklist-de-una-medición-energética-reproducible">Checklist de una medición energética reproducible&lt;/h2>
&lt;p>Para que una cifra de energía o carbono sea defendible ante un comité o un auditor, tiene que
venir con su contexto. El mínimo a fijar y publicar:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Qué fijar&lt;/th>
&lt;th>Por qué&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Herramienta + versión&lt;/td>
&lt;td>cada capa (RAPL, NVML, eBPF) y herramienta mide distinto&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Frecuencia de muestreo&lt;/td>
&lt;td>un muestreo grueso pierde picos&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Frontera placa vs nodo&lt;/td>
&lt;td>±10–20 % según se incluya CPU/fuentes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PUE usado&lt;/td>
&lt;td>multiplica toda la energía de cómputo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fuente y hora de la intensidad de red&lt;/td>
&lt;td>el carbono varía ~9× por país y por hora&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tratamiento del idle&lt;/td>
&lt;td>atribuido o descontado cambia el J/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Modelo, precisión y carga&lt;/td>
&lt;td>la energía depende de qué y cómo se sirve&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Calibración vs vatímetro&lt;/td>
&lt;td>al menos una vez, para validar la estimación&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>La regla: si no puedes entregar esta tabla junto a la cifra de gCO₂/token, la cifra no es
auditable. El harness reproducible del artículo S4 registra todos estos parámetros para que
el dato de energía sea tan trazable como el de coste y el de rendimiento — y para que la
huella reportada (CSRD) se sostenga ante una auditoría.&lt;/p>
&lt;hr>
&lt;h2 id="estado-del-arte-2026">Estado del arte 2026&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Falta resolución específica de LLM&lt;/strong>: las herramientas generalistas miden bien a nivel de
máquina/proceso, pero &lt;strong>carecen de resolución específica para LLM&lt;/strong> (energía por token, por
fase prefill/decode), y los simuladores carecen de modelado de emisiones — un hueco abierto
del campo.&lt;/li>
&lt;li>&lt;strong>eBPF como tendencia&lt;/strong> (Kepler) para atribuir energía por pod sin instrumentar la app, en
paralelo a como OpenCost atribuye el coste.&lt;/li>
&lt;li>&lt;strong>Estandarización&lt;/strong> de la comparación vía MLPerf Power y HF AI Energy Score.&lt;/li>
&lt;li>&lt;strong>Optimización, no solo medición&lt;/strong> (Zeus): el campo pasa de &amp;ldquo;cuánto gasto&amp;rdquo; a &amp;ldquo;cómo gasto
menos sin perder rendimiento&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="límites-y-trampas-data-driven">Límites y trampas (data-driven)&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Estimación vs medición.&lt;/strong> Una cifra de &lt;code>nvidia-smi&lt;/code> no es un vatímetro. Calibra al menos
una vez contra hardware antes de defender un número.&lt;/li>
&lt;li>&lt;strong>Cobertura parcial.&lt;/strong> CarbonTracker mide solo GPU; Scaphandre, sobre todo CPU/RAPL. Suma
las capas o infravaloras la energía total.&lt;/li>
&lt;li>&lt;strong>Olvidar el PUE.&lt;/strong> La energía de placa no incluye refrigeración ni pérdidas; sin el PUE
subestimas el consumo y el carbono reales.&lt;/li>
&lt;li>&lt;strong>Carbono sin país.&lt;/strong> Un gCO₂/token sin especificar la red (y la hora) no significa nada:
varía ~9× entre Francia y Alemania.&lt;/li>
&lt;li>&lt;strong>Confundir energía con sostenibilidad.&lt;/strong> Aquí es coste y cumplimiento, con número; tratarlo
como un extra &amp;ldquo;verde&amp;rdquo; es perder una de las tres columnas de la propuesta.&lt;/li>
&lt;/ol>
&lt;p>Con esto cierra la tanda de introducciones: coste, rendimiento y energía, cada uno con sus
frameworks y su metodología. El resto de la serie profundiza herramienta a herramienta hasta
el cuadro de mando que sostiene la decisión de arquitectura soberana, con cifras europeas,
medidas y reproducibles.&lt;/p>
&lt;h2 id="cierre">Cierre&lt;/h2>
&lt;p>La energía es el eje que más fácil es despachar como &amp;ldquo;el verde&amp;rdquo; y el que más esconde: es
casi la mitad del coste, define la huella que Europa obliga a reportar, y su carbono por
token cambia ~9× según el cluster esté en Francia o en Alemania. Medirla bien —con la capa
adecuada, el muestreo correcto, el PUE incluido y la red del país— convierte un argumento
blando de sostenibilidad en una columna dura de la propuesta, con número y fuente. Y la
conclusión soberana se sostiene sola con los datos de este artículo: &lt;strong>una plataforma de
inferencia en Francia o España es, a la vez, más barata, más limpia y conforme con la
jurisdicción europea que la misma plataforma en un hyperscaler estadounidense&lt;/strong> — y eso se
demuestra con J/token medidos, gCO₂/kWh por país y euros, no con intenciones. El eje de
energía no adorna la propuesta: la cierra.&lt;/p>
&lt;h2 id="ver-también">Ver también&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://blog.lo0.es/posts/leaderboards-energia-llm/">Leaderboards de eficiencia energética de LLMs&lt;/a> — los rankings de J/token donde aterrizan los números que miden estas herramientas: qué leaderboard usar, cómo leerlo y qué sesgos tiene.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/del-vatio-al-carbono-pue-grid/">Del vatio al carbono: PUE, intensidad de la red y el coste real de un token&lt;/a> — cómo convertir el J/token medido con Zeus o Kepler en gCO₂eq usando el PUE del datacenter y la intensidad de la red eléctrica del país.&lt;/li>
&lt;li>&lt;a href="https://blog.lo0.es/posts/palancas-eficiencia-energetica-inferencia/">Palancas de eficiencia energética en inferencia LLM&lt;/a> — qué cambios de configuración reducen los J/token que estas herramientas reportan: quantization, batching, motor, precisión del KV cache.&lt;/li>
&lt;/ul>
&lt;h2 id="fuentes">Fuentes&lt;/h2>
&lt;ul>
&lt;li>Zeus Project (ml.energy, UMich) — &lt;a href="https://ml.energy/zeus/">https://ml.energy/zeus/&lt;/a>&lt;/li>
&lt;li>Zeus · USENIX NSDI'23 — &lt;a href="https://www.usenix.org/system/files/nsdi23-you.pdf">https://www.usenix.org/system/files/nsdi23-you.pdf&lt;/a>&lt;/li>
&lt;li>Kepler (CNCF, eBPF) · GitHub — &lt;a href="https://github.com/sustainable-computing-io/kepler">https://github.com/sustainable-computing-io/kepler&lt;/a>&lt;/li>
&lt;li>Scaphandre · GitHub — &lt;a href="https://github.com/hubblo-org/scaphandre">https://github.com/hubblo-org/scaphandre&lt;/a>&lt;/li>
&lt;li>CarbonTracker · GitHub — &lt;a href="https://github.com/saintslab/carbontracker">https://github.com/saintslab/carbontracker&lt;/a>&lt;/li>
&lt;li>MLPerf Power (arXiv 2410.12032) — &lt;a href="https://arxiv.org/html/2410.12032v2">https://arxiv.org/html/2410.12032v2&lt;/a>&lt;/li>
&lt;li>HF AI Energy Score — &lt;a href="https://huggingface.github.io/AIEnergyScore/">https://huggingface.github.io/AIEnergyScore/&lt;/a>&lt;/li>
&lt;li>awesome-green-ai — &lt;a href="https://github.com/samuelrince/awesome-green-ai">https://github.com/samuelrince/awesome-green-ai&lt;/a>&lt;/li>
&lt;li>TradingEconomics · precio electricidad Francia/Alemania/España — &lt;a href="https://tradingeconomics.com/france/electricity-price">https://tradingeconomics.com/france/electricity-price&lt;/a>&lt;/li>
&lt;li>EEA · intensidad de emisiones de la electricidad en Europa — &lt;a href="https://www.eea.europa.eu/en/analysis/indicators/greenhouse-gas-emission-intensity-of-1">https://www.eea.europa.eu/en/analysis/indicators/greenhouse-gas-emission-intensity-of-1&lt;/a>&lt;/li>
&lt;li>Electricity sector in Germany (carbono ~363 gCO₂/kWh) — &lt;a href="https://en.wikipedia.org/wiki/Electricity_sector_in_Germany">https://en.wikipedia.org/wiki/Electricity_sector_in_Germany&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>