绿色机器学习系统综述:(三)算法策略与测量工具
摘要
本文是对发表在《Artificial Intelligence Review》期刊上的论文"A systematic review of Green Machine Learning: practices and challenges for sustainability"的文献精读第三篇。该论文由Samara Santos、André L. C. Ottoni、Rita Borgo、Danton Ferreira和Erivelton Nepomuceno共同撰写。本篇聚焦于原文第3章"绿色机器学习维度"的后半部分内容,系统阐述GML的核心算法策略、能源测量工具、基准数据集和可重复性标准。通过对模型压缩技术(剪枝、量化、知识蒸馏)、高效训练方法、联邦学习优化策略等核心技术的深入分析,以及Carbontracker、CodeCarbon、Green Algorithms等主流能源监控工具的详细介绍,为读者提供GML技术实现的全面指南。本篇还将讨论基准数据集的组织框架和可重复性评估标准,为GML研究的规范化发展提供参考。
1 能源感知算法策略
1.1 算法策略概述
能源感知算法策略是GML研究的核心内容,旨在通过算法层面的优化降低机器学习系统的能源消耗。这些策略可以大致分为三类:模型压缩技术、高效训练方法和架构优化策略。本节将系统介绍这些技术的原理、方法和应用效果。
从理论角度看,能源感知算法策略的核心思想是在保持模型性能的前提下,减少计算量和内存访问次数。计算量通常用浮点运算次数(Floating Point Operations, FLOPs)来衡量,而内存访问次数则与模型参数量和中间激活值的大小相关。能源消耗可以近似表示为:
E≈α⋅FLOPs+β⋅Memory AccessE \approx \alpha \cdot \text{FLOPs} + \beta \cdot \text{Memory Access}E≈α⋅FLOPs+β⋅Memory Access
其中,α\alphaα和β\betaβ是取决于硬件特性的系数。这一公式揭示了算法优化的两个主要方向:减少计算量和减少内存访问。
1.2 模型压缩技术
模型压缩技术是GML研究中最成熟、应用最广泛的技术方向,主要包括剪枝、量化和知识蒸馏三种核心技术。
1.2.1 剪枝技术
剪枝(Pruning)是指从训练好的神经网络中移除不重要的参数或结构,从而减少模型大小和计算复杂度。剪枝可以根据粒度分为非结构化剪枝和结构化剪枝两类。
非结构化剪枝移除单个权重参数,不依赖于特定的硬件结构。其数学形式可以表示为:
Wpruned=W⊙MW_{pruned} = W \odot MWpruned=W⊙M
其中,WWW是原始权重矩阵,MMM是二值掩码矩阵,⊙\odot⊙表示逐元素乘法。掩码矩阵根据权重的重要性确定,常用的重要性度量包括权重幅值、梯度幅值、或二阶导数信息。
非结构化剪枝可以实现极高的压缩率(通常可达90%以上),但由于剪枝后的权重矩阵变为稀疏矩阵,需要专门的稀疏计算库或硬件支持才能获得实际的加速效果。
结构化剪枝移除完整的神经元、卷积核或层,保持权重矩阵的密集结构。结构化剪枝虽然压缩率通常低于非结构化剪枝,但可以直接在标准硬件上获得加速效果,因此更具实用价值。
结构化剪枝的数学形式可以表示为:
Wpruned=W[Ikeep,:]或Wpruned=W[:,Ikeep]W_{pruned} = W[I_{keep}, :] \quad \text{或} \quad W_{pruned} = W[:, I_{keep}]Wpruned=W[Ikeep,:]或Wpruned=W[:,Ikeep]
其中,IkeepI_{keep}Ikeep是保留的神经元或卷积核索引集合。
表1 剪枝方法比较
| 剪枝类型 | 粒度 | 压缩率 | 加速效果 | 硬件要求 |
|---|---|---|---|---|
| 非结构化剪枝 | 单个权重 | 高(90%+) | 需稀疏支持 | 专用库/硬件 |
| 结构化剪枝 | 神经元/卷积核 | 中(50-80%) | 直接加速 | 标准硬件 |
| 半结构化剪枝 | N:M稀疏模式 | 中高 | 硬件加速 | 特定GPU |
剪枝的关键挑战在于如何确定参数的重要性以及如何在剪枝后恢复模型性能。常用的策略包括:
幅值剪枝:根据权重绝对值大小确定重要性,移除幅值较小的权重。这种方法简单有效,但可能移除对输出有重要影响的小权重。
梯度敏感剪枝:根据权重对损失函数的影响确定重要性,通常使用一阶或二阶梯度信息。这种方法理论上更合理,但计算成本较高。
迭代剪枝:交替进行剪枝和微调,逐步移除不重要的参数。这种方法可以获得更好的性能保持,但训练时间较长。
研究表明,通过剪枝可以将神经网络的能源消耗降低30%-80%,具体效果取决于剪枝率和模型架构。
1.2.2 量化技术
量化(Quantization)是指将模型参数从高精度表示(如32位浮点数)转换为低精度表示(如8位整数或更低)。量化可以显著减少模型大小和内存带宽需求,同时利用低精度计算单元提高计算效率。
量化的数学形式可以表示为:
Q(x)=round(x−xmins)⋅s+xminQ(x) = \text{round}\left(\frac{x - x_{min}}{s}\right) \cdot s + x_{min}Q(x)=round(sx−xmin)⋅s+xmin
其中,s=(xmax−xmin)/(2b−1)s = (x_{max} - x_{min}) / (2^b - 1)s=(xmax−xmin)/(2b−1)是量化步长,bbb是量化位数,xminx_{min}xmin和xmaxx_{max}xmax是量化范围。
训练后量化(Post-Training Quantization, PTQ):在模型训练完成后进行量化,不需要重新训练。PTQ方法简单快速,但对于低比特量化(如4比特以下)可能导致较大的性能损失。
量化感知训练(Quantization-Aware Training, QAT):在训练过程中模拟量化效果,使模型学习适应量化误差。QAT可以获得更好的低比特量化性能,但需要额外的训练成本。
表2 量化方法比较
| 量化类型 | 位数 | 精度损失 | 实现复杂度 | 能效提升 |
|---|---|---|---|---|
| FP32(基准) | 32位 | - | - | - |
| FP16混合精度 | 16位 | 极小 | 低 | 2-3倍 |
| INT8量化 | 8位 | 小 | 中 | 2-4倍 |
| INT4量化 | 4位 | 中等 | 高 | 4-8倍 |
| 二值/三值网络 | 1-2位 | 较大 | 高 | 10倍+ |
混合精度训练结合了高精度和低精度计算的优势,在保持模型性能的同时提高训练效率。现代深度学习框架(如PyTorch、TensorFlow)已原生支持混合精度训练,使其成为GML实践的标配技术。
低比特量化(4比特及以下)是当前研究的热点方向。研究表明,通过精心设计的量化感知训练方法,4比特量化可以在许多任务上达到接近全精度的性能。更激进的二值神经网络和三值神经网络虽然可以实现极高的压缩率和能效,但在复杂任务上的性能仍有较大差距。
1.2.3 知识蒸馏
知识蒸馏(Knowledge Distillation, KD)是一种模型压缩技术,通过让小模型(学生模型)学习大模型(教师模型)的知识来实现模型压缩。知识蒸馏的核心思想是教师模型的软标签(soft labels)包含比硬标签更丰富的信息,可以帮助学生模型更好地学习。
知识蒸馏的损失函数通常表示为:
LKD=αLhard+(1−α)LsoftL_{KD} = \alpha L_{hard} + (1-\alpha) L_{soft}LKD=αLhard+(1−α)Lsoft
其中,LhardL_{hard}Lhard是学生模型预测与真实标签之间的交叉熵损失,LsoftL_{soft}Lsoft是学生模型与教师模型软标签之间的蒸馏损失,α\alphaα是平衡系数。
软标签通过温度参数TTT调节:
pi=exp(zi/T)∑jexp(zj/T)p_i = \frac{\exp(z_i/T)}{\sum_j \exp(z_j/T)}pi=∑jexp(zj/T)exp(zi/T)
其中,ziz_izi是模型输出的logits,TTT是温度参数。较高的温度使概率分布更加平滑,揭示类别之间的相似性信息。
知识蒸馏的变体包括:
特征蒸馏:让学生模型的中间特征接近教师模型的对应特征。这种方法可以传递教师模型的表示能力。
关系蒸馏:保持样本之间的相对关系,使学生模型学习教师模型的样本间相似性结构。
自蒸馏:模型从自身的早期版本或不同层学习,实现自我改进。
研究表明,知识蒸馏可以在保持模型性能的同时,将模型大小减少10-100倍,能源消耗相应降低。
1.3 高效训练方法
高效训练方法关注如何减少训练过程的能源消耗,包括数据高效学习、优化策略改进和训练过程优化等方面。
1.3.1 数据高效学习
数据高效学习旨在减少达到目标性能所需的训练数据量或数据访问次数。
主动学习(Active Learning):智能选择最有信息量的样本进行标注,减少标注成本和训练数据量。主动学习通过不确定性采样、多样性采样等策略选择样本,可以在较少标注数据下达到目标性能。
课程学习(Curriculum Learning):按照从易到难的顺序组织训练样本,使模型逐步学习复杂模式。课程学习可以加速收敛,减少训练迭代次数。
数据增强(Data Augmentation):通过对训练数据进行变换生成新样本,增加数据多样性。数据增强可以在不增加数据收集成本的情况下提高模型泛化能力,间接减少训练需求。
1.3.2 优化策略改进
优化策略的改进可以加速训练收敛,减少训练迭代次数和能源消耗。
学习率调度:合理的学习率调度策略(如余弦退火、线性预热)可以加速收敛,减少训练时间。研究表明,优化学习率调度可以将训练时间减少20%-50%。
大批量训练:增大批量大小可以提高硬件利用率,减少训练时间。然而,大批量训练可能导致泛化性能下降,需要配合自适应学习率调整等技术。
梯度累积:在内存受限的情况下,通过累积多个小批量的梯度来模拟大批量训练,在保持内存效率的同时获得大批量训练的优势。
1.3.3 早停与检查点策略
早停(Early Stopping):在验证性能不再提升时停止训练,避免过度训练带来的能源浪费。早停是最简单有效的训练优化策略之一。
检查点策略:定期保存模型状态,支持从检查点恢复训练。检查点策略可以避免因意外中断导致的重复训练,同时也支持模型选择和集成。
1.4 联邦学习优化策略
联邦学习(Federated Learning, FL)是一种分布式机器学习范式,允许多个客户端在不共享原始数据的情况下协作训练模型。联邦学习虽然具有隐私保护优势,但其能源效率问题日益受到关注。
联邦学习的能源消耗主要来自三个方面:本地训练能耗、通信能耗和服务器聚合能耗。研究表明,联邦学习的碳排放可能比集中式训练高两个数量级,这主要由于客户端设备的能效差异和通信开销。
联邦学习的能源优化策略包括:
客户端选择:选择能效较高的客户端参与训练,减少整体能源消耗。客户端选择可以考虑设备类型、电池状态、网络条件等因素。
通信压缩:通过梯度压缩、稀疏化等技术减少通信数据量,降低通信能耗。研究表明,梯度压缩可以在保持模型性能的同时减少90%以上的通信量。
异步聚合:允许客户端异步提交更新,减少等待时间和重复计算。异步聚合可以提高系统效率,但可能影响模型收敛性。
分层联邦学习:引入中间聚合层,减少与中央服务器的通信距离和频率。分层架构特别适合地理分布广泛的场景。
联邦学习的能源优化是一个多目标优化问题,需要在模型性能、隐私保护、能源效率和公平性之间寻求平衡。
1.5 神经架构搜索与高效架构
神经架构搜索(Neural Architecture Search, NAS)旨在自动发现高效的网络架构。传统的NAS方法计算成本极高,搜索一个架构可能需要数千GPU天。近年来,研究者提出了多种高效NAS方法,使架构搜索更加绿色。
权重共享NAS:通过在超网络中共享权重,避免从头训练每个候选架构。权重共享可以将搜索成本降低几个数量级。
一次性NAS:训练一个包含所有候选架构的超网络,然后从中搜索最优架构。一次性NAS将搜索时间从数千GPU天减少到数GPU天。
可微分NAS:将架构搜索转化为连续优化问题,使用梯度下降求解。可微分NAS具有更高的搜索效率。
除了自动搜索,研究者还设计了多种高效网络架构:
轻量级卷积网络:如MobileNet系列使用深度可分离卷积,ShuffleNet系列使用通道混洗操作,在保持性能的同时大幅减少计算量。
高效注意力机制:如线性注意力、稀疏注意力、局部注意力等变体,将Transformer的计算复杂度从二次降低到线性或接近线性。
动态网络:根据输入复杂度动态调整计算量,简单输入使用较少计算,复杂输入使用更多计算。动态网络可以在保持平均性能的同时显著降低平均计算量。
2 能源测量与碳追踪工具
2.1 能源测量工具概述
准确的能源测量是GML研究和实践的基础。本节介绍GML研究中常用的能源测量和碳追踪工具,分析其功能特点、适用场景和局限性。
能源测量工具可以分为三类:硬件级监控工具、软件级监控工具和碳排放估算工具。硬件级工具提供最精确的测量,但需要专用设备;软件级工具易于部署,但精度受限;碳排放估算工具结合能源数据和碳强度信息,提供碳排放估算。
2.2 硬件级监控工具
NVIDIA NVML(NVIDIA Management Library):提供对NVIDIA GPU的监控接口,可以获取实时功耗、温度、利用率等信息。NVML是GPU能源监控的标准工具,被广泛集成到各种能源监控框架中。
Intel RAPL(Running Average Power Limit):提供对Intel处理器和内存的功耗监控接口。RAPL通过模型特定寄存器(MSR)提供功耗数据,精度约为软件级监控中最高。
功率计设备:如Watts Up? Pro、Kill-A-Watt等外部功率计,可以直接测量设备的电力消耗。外部功率计提供最高精度的测量,但需要专用设备,且难以区分不同组件的能耗。
表3 硬件级监控工具比较
| 工具 | 监控对象 | 精度 | 部署难度 | 成本 |
|---|---|---|---|---|
| NVML | NVIDIA GPU | 高 | 低 | 免费 |
| RAPL | Intel CPU/内存 | 中高 | 中 | 免费 |
| AMD uProf | AMD CPU | 中 | 中 | 免费 |
| 外部功率计 | 整机 | 最高 | 高 | 需购买 |
2.3 软件级监控框架
Carbontracker:一个Python工具包,用于追踪和预测深度学习模型的能源消耗和碳排放。Carbontracker支持多种硬件平台,包括NVIDIA GPU、Intel CPU等,可以集成到PyTorch和TensorFlow训练流程中。
Carbontracker的核心功能包括:
- 实时能源消耗监控
- 碳排放估算(基于区域碳强度)
- 训练完成时间和能源消耗预测
- 详细报告生成
CodeCarbon:一个Python包,用于追踪代码执行的碳排放。CodeCarbon支持多种硬件和云平台,可以估算不同地区的碳排放。
CodeCarbon的特点包括:
- 支持CPU、GPU、TPU等多种硬件
- 集成全球碳强度数据
- 支持离线模式
- 提供可视化仪表板
Green Algorithms:一个计算碳足迹的工具,基于能源消耗估算和碳强度数据计算碳排放。Green Algorithms提供在线计算器和Python包两种使用方式。
表4 软件级监控框架比较
| 工具 | 语言 | 支持硬件 | 碳强度数据 | 输出格式 |
|---|---|---|---|---|
| Carbontracker | Python | GPU, CPU | 在线获取 | 日志, JSON |
| CodeCarbon | Python | GPU, CPU, TPU | 内置数据库 | CSV, 日志 |
| Green Algorithms | Python, Web | 通用 | 内置数据库 | 文本, JSON |
| experiment-impact-tracker | Python | GPU, CPU | 在线获取 | CSV, 日志 |
2.4 碳排放计算方法
碳排放计算需要结合能源消耗数据和区域碳强度信息。碳强度(Carbon Intensity)表示单位能源生产所产生的碳排放量,通常以gCO2eq/kWh为单位。
碳排放的计算公式为:
Carbon Emission=E×CI\text{Carbon Emission} = E \times CICarbon Emission=E×CI
其中,EEE是能源消耗(kWh),CICICI是碳强度(gCO2eq/kWh)。
碳强度因地区而异,取决于当地的能源结构。以可再生能源为主的地区碳强度较低,而以化石能源为主的地区碳强度较高。例如,挪威的碳强度约为20 gCO2eq/kWh(水电为主),而某些以煤电为主的地区可能超过800 gCO2eq/kWh。
碳强度数据可以从以下来源获取:
- 电力系统运营商发布的实时数据
- Carbon Intensity API等公共服务
- 政府发布的年度统计数据
2.5 能源测量的最佳实践
基于本综述的分析,我们总结了GML研究中能源测量的最佳实践:
完整报告硬件配置:包括处理器型号、GPU型号、内存大小、存储类型等,这些因素都会影响能源消耗。
明确测量范围:说明测量是否包括整个系统、仅GPU、或仅CPU等,确保测量的可比较性。
报告测量方法:说明使用的监控工具、采样频率、测量时长等,确保测量的可重复性。
考虑冷启动效应:设备预热阶段的能耗可能与稳定运行阶段不同,应明确是否包含冷启动阶段。
报告环境条件:环境温度、散热条件等因素会影响设备功耗,应在报告中说明。
提供原始数据:尽可能提供能源消耗的原始数据,支持后续分析和验证。
3 基准数据集与可重复性标准
3.1 基准数据集概述
基准数据集是GML研究的基础设施,支持不同方法的公平比较和可重复性验证。本综述系统组织了GML研究中使用的基准数据集,按数据模态进行分类。
3.2 图像数据集
表5 GML研究中的图像基准数据集
| 数据集 | 样本数 | 类别数 | 图像尺寸 | 典型任务 | 应用场景 |
|---|---|---|---|---|---|
| MNIST | 70,000 | 10 | 28×28 | 分类 | 手写数字识别 |
| CIFAR-10 | 60,000 | 10 | 32×32 | 分类 | 物体分类 |
| CIFAR-100 | 60,000 | 100 | 32×32 | 分类 | 细粒度分类 |
| ImageNet | 1,400万+ | 21,841 | 可变 | 分类, 检测 | 大规模视觉识别 |
| COCO | 330,000+ | 80 | 可变 | 检测, 分割 | 目标检测与分割 |
| Pascal VOC | 11,530 | 20 | 可变 | 检测, 分割 | 目标检测 |
MNIST是最简单的图像分类基准,包含70,000张28×28灰度手写数字图像。由于其简单性,MNIST常用于快速验证新方法的有效性。
CIFAR-10/100是中等规模的图像分类基准,包含60,000张32×32彩色图像。CIFAR数据集在GML研究中广泛使用,因为其规模适中,可以在合理时间内完成实验。
ImageNet是大规模图像分类基准,包含超过1400万张图像和21,841个类别。ImageNet训练需要大量计算资源,是评估GML方法在大规模场景下效果的重要基准。
3.3 文本数据集
表6 GML研究中的文本基准数据集
| 数据集 | 样本数 | 任务类型 | 语言 | 应用场景 |
|---|---|---|---|---|
| IMDB | 50,000 | 情感分类 | 英语 | 电影评论情感分析 |
| SST-2 | 67,349 | 情感分类 | 英语 | 句子情感分析 |
| CoLA | 10,657 | 语法判断 | 英语 | 语言可接受性 |
| MRPC | 5,801 | 相似度判断 | 英语 | 句子对相似度 |
| SQuAD | 100,000+ | 问答 | 英语 | 阅读理解 |
| GLUE | 多个 | 多任务 | 英语 | 通用语言理解 |
**GLUE(General Language Understanding Evaluation)**是一个多任务基准,包含多个自然语言理解任务。GLUE广泛用于评估预训练语言模型的性能和能效。
**SQuAD(Stanford Question Answering Dataset)**是阅读理解基准,要求模型根据给定段落回答问题。SQuAD常用于评估大型语言模型的推理能力。
3.4 音频与多变量数据集
表7 GML研究中的音频和多变量基准数据集
| 数据集 | 类型 | 样本数 | 任务 | 应用场景 |
|---|---|---|---|---|
| SpeechCommands | 音频 | 65,000 | 分类 | 语音命令识别 |
| LibriSpeech | 音频 | 1,000小时 | 识别 | 语音识别 |
| UrbanSound8K | 音频 | 8,732 | 分类 | 环境声音分类 |
| UCI HAR | 多变量 | 10,299 | 分类 | 人类活动识别 |
| ECG5000 | 多变量 | 5,000 | 分类 | 心电图分类 |
| FordA | 多变量 | 4,921 | 分类 | 工业故障检测 |
音频数据集在语音识别、声音事件检测等应用中使用。音频数据的GML研究关注实时处理约束下的能效优化。
多变量时序数据集在物联网、工业监测、医疗健康等应用中使用。多变量数据的GML研究关注特征选择和模型简化。
3.5 可重复性标准
可重复性是科学研究的基本要求,但在机器学习研究中面临特殊挑战。本综述提出了GML研究的可重复性标准,包括以下方面:
实验可重复性:
- 完整报告硬件配置(处理器、GPU、内存、存储)
- 报告软件环境(操作系统、框架版本、依赖库)
- 提供随机种子和初始化方法
- 公开代码和训练脚本
测量可重复性:
- 明确能源测量方法和工具
- 报告测量范围和采样频率
- 提供原始能源数据
- 说明碳强度数据来源
结果可重复性:
- 报告多次运行的统计结果(均值、标准差)
- 提供完整的超参数配置
- 公开模型检查点
- 提供评估脚本
表8 可重复性检查清单
| 类别 | 检查项 | 重要性 |
|---|---|---|
| 硬件 | 处理器型号、GPU型号、内存大小 | 高 |
| 软件 | 操作系统、框架版本、主要依赖库 | 高 |
| 数据 | 数据集版本、预处理方法、划分方式 | 高 |
| 训练 | 超参数、随机种子、训练时长 | 高 |
| 能源 | 测量工具、测量范围、采样频率 | 高 |
| 碳排放 | 碳强度来源、计算方法、区域信息 | 中 |
| 代码 | 代码仓库、依赖文件、运行脚本 | 高 |
| 模型 | 模型架构、参数量、检查点 | 中 |
3.6 开放科学实践
开放科学实践支持GML研究的可重复性和透明性。推荐的实践包括:
代码开源:在GitHub等平台公开研究代码,使用开源许可证,提供完整的依赖文件和运行说明。
数据共享:在符合隐私和伦理要求的前提下,共享研究数据或提供数据获取方式。
预注册:在实验开始前注册研究计划,减少选择性报告和发表偏差。
开放同行评审:参与开放同行评审过程,提高评审透明度。
预印本发布:在正式发表前发布预印本,加速知识传播。
这些开放科学实践有助于建立GML研究的信任基础,推动领域的健康发展。
小结
本篇文献精读系统阐述了绿色机器学习的核心算法策略和能源测量工具。模型压缩技术(剪枝、量化、知识蒸馏)是GML研究中最成熟的技术方向,可以在保持模型性能的同时显著降低能源消耗。高效训练方法、联邦学习优化策略和神经架构搜索为GML提供了多样化的技术路径。能源测量工具(Carbontracker、CodeCarbon、Green Algorithms等)为GML研究提供了标准化的监控和报告方法。基准数据集和可重复性标准的建立,为GML研究的规范化发展提供了基础设施支持。下一篇将深入讨论GML研究的开放挑战、未来方向和战略路径。
参考文献来源:Santos S, Ottoni ALC, Borgo R, Ferreira D, Nepomuceno E. A systematic review of Green Machine Learning: practices and challenges for sustainability. Artificial Intelligence Review (2026) 59:132. https://doi.org/10.1007/s10462-026-11515-8
