Skip to Content

Carbon-Aware Model Training Pipeline

Build sustainable ML systems with real-time carbon scheduling, gradient accumulation, and comprehensive emissions tracking


Problem Statement

We Asked NEO to: Build a PyTorch training pipeline that optimizes compute scheduling based on electricity carbon intensity, reduces GPU memory usage through gradient accumulation, tracks CO2 emissions in real-time with CodeCarbon, and quantifies environmental savings compared to baseline training approaches.


Solution Overview

NEO designed a comprehensive carbon-aware training system that minimizes environmental impact while maintaining model quality:

  1. Carbon Intensity Scheduler monitors grid emissions and delays training for low-carbon windows
  2. Gradient Accumulation Engine reduces GPU memory footprint by 50% while preserving batch size
  3. Real-Time Emissions Tracker quantifies CO2 output using CodeCarbon’s scientific methodology
  4. Automated Comparison Pipeline generates reports showing carbon savings and accuracy trade-offs

The system achieves 40-45% CO2 reduction with <1% accuracy degradation across standard benchmarks.


Workflow / Pipeline

StepDescription
1. Carbon Intensity CheckQuery real-time grid carbon intensity from API or mock data source
2. Scheduling DecisionCompare against threshold (e.g., 300 gCO2/kWh) and wait if necessary
3. Emissions Tracking StartInitialize CodeCarbon tracker to monitor CO2, energy, and power
4. Gradient AccumulationProcess micro-batches with periodic optimizer updates (2-8x accumulation)
5. Mixed Precision TrainingFP16 computation reduces memory and accelerates GPU operations
6. Results GenerationSave model, emissions logs, and comparative analysis with baseline

Repository & Artifacts

README preview

Generated Artifacts:


Technical Details


Results

Example Carbon Savings (MNIST, 3 Epochs)

============================================================ CARBON SAVINGS vs BASELINE ============================================================ Baseline Training: CO2 Emissions: 0.074 kg Energy Consumed: 0.28 kWh Peak GPU Memory: 4096 MB Final Accuracy: 93.4% Optimized Training: CO2 Emissions: 0.042 kg (43.2% reduction) Energy Consumed: 0.15 kWh (46.4% reduction) Peak GPU Memory: 2048 MB (50.0% reduction) Final Accuracy: 93.1% (0.3% degradation) Scheduler Metrics: Wait Time: 600 seconds Initial Intensity: 420.5 gCO2/kWh Training Intensity: 285.3 gCO2/kWh

Best Practices & Lessons Learned


Next Steps


References


Learn More