Ned Karlovich's Weblog
Research Graph Data About RSS

articles: 55

This data as json

id title slug url content_type category shelf is_headline description published_date updated_at sort_order hero_painting body_markdown
55 CarbonBench carbonbench /projects/carbonbench project CarbonBench Systems 0 An experiment in making visible something that pricing pages hide: the carbon cost of AI inference changes by an order of magnitude depending on where and when 2026-01-15 2026-11-07 23:04:31.741285+00:00 0 carbonbench.jpg The carbon cost of an AI inference call changes by an order of magnitude depending on where and when you make it. Pricing pages don't show this. CarbonBench did: a public leaderboard and open API ranking every model, provider and region by carbon per million tokens, next to cost and speed. It ran at carbonbench.ai in spring 2026. It is offline now. The findings are below and in [five essays](/writing/carbonbench-series). **How it worked** Carbon per million tokens = GPU energy per token × grid carbon intensity. - **Energy per token** from standardised benchmarks, mainly the AI Energy Score project on Hugging Face, which runs each model on reference hardware under a fixed workload. Closed models without published measurements were estimated and marked as such. - **Grid intensity** from Electricity Maps, pulled hourly for 9 cloud regions across the US, EU and APAC. - **Pricing** from AWS Bedrock, GCP Vertex AI, Azure OpenAI, Together, Groq and Fireworks. A cron recalculated every model-provider-region score. The leaderboard let you filter by family and provider and sort by carbon, cost or speed; each row opened a 24-hour carbon curve for its region. `/api/recommend` answered one question: what is the lowest-carbon way to run this model right now? It returned the best option, four alternatives, and the saving against the dirtiest one. Coverage: 85 models in the April 2026 dataset the essays use (46 after the May rebuild), across 10 families, 6 providers, 9 regions. **What the data showed** - **Region beats model.** Llama 3.1 8B on GCP Netherlands: about 4 gCO2 per million tokens. The same model in Virginia at peak: over 50. A 70B model on a clean grid can beat an 8B model on a dirty one. - **Price and carbon are decoupled.** Providers charge the same per token regardless of region. Groq, Fireworks and AWS differ 6x on price for Llama 3 8B on similar grids. Routing for carbon is close to free. - **Time matters.** Grid intensity swings 30–50% over a day. Batch work that can wait can run at the clean hours. - **It is scope 3.** Every API call is an indirect emission the customer can't see. Activity-based accounting needs exactly these conversion factors. **What broke, and the fix** The first version wrote a new score row for every model-region pair on every hourly run, about 92 rows an hour, and never cleaned up. The database filled and the host shut it down. The rebuild made scores an upsert on a unique key (fixed at ~92 rows), rolled hourly readings older than seven days into daily averages, and pruned the originals nightly. Steady state: under 5 MB, forever. The hourly cron also had to move from a plan that only allowed daily jobs. I chose not to keep the service running. The essays stand on the April dataset. Stack: Next.js 14 · TypeScript · Prisma · Postgres on Railway · Vercel cron · Electricity Maps API · Liveline charts
GitHub · X · LinkedIn · RSS · Sitemap · llms.txt