欢迎光临
我们一直在努力

AI 集群的功耗挑战:如何通过动态调频(DVFS)在性能不掉队下节省电费

AI 集群的功耗挑战与 DVFS 简介

随着AI模型规模的爆炸式增长,支持这些模型的计算集群(无论是使用高性能CPU还是GPU)消耗的能源也水涨船高。高功耗不仅意味着高昂的电费,还会带来巨大的散热压力和潜在的硬件故障风险。在许多情况下,集群节点并非时刻处于100%满载状态,尤其是在数据预处理、I/O等待或分布式同步阶段,保持芯片以最高频率和电压运行是巨大的浪费。

动态电压和频率调节(Dynamic Voltage and Frequency Scaling, DVFS)是一种成熟的硬件控制技术,允许操作系统根据当前负载动态调整处理器(CPU或GPU)的核心频率和运行电压。由于功耗与电压的平方和频率呈正相关($P \propto C V^2 f$),即使是微小的电压降低也能带来显著的功耗节省。

本文将聚焦如何在Linux驱动的AI集群节点上,利用DVFS机制,特别是在CPU侧(适用于数据预处理、推理、参数服务器等角色)进行优化,以达到节能降费的目的,同时确保关键性能不掉队。

实施步骤:Linux 下 CPU 动态调频配置

在大多数现代Linux系统上,DVFS是通过内核的CPU频率调节器(CPU Frequency Scaling Governors)来实现的。这些调节器定义了CPU频率调整的策略。

1. 检查当前状态

首先,确定你的系统支持哪些调节器,以及当前的调节器设置。

# 查看当前所有CPU核的频率调节器设置
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# 查看系统支持的调节器列表
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

常见的调节器包括:
* performance: 始终以最大频率运行(高功耗,高响应速度)。
* powersave: 始终以最低频率运行(低功耗,低性能)。
* ondemand: 负载达到一定阈值时迅速提升频率,负载降低时降低频率。
* schedutil: 最新的推荐调节器,它利用Linux调度器的信息来更智能、更平滑地调整频率,通常比ondemand更高效和响应及时。

2. 选择合适的 DVFS 策略

对于AI集群的非训练核心(如处理I/O、分布式通信或轻量级推理),推荐使用 schedutil 调节器。

如何判断性能不掉队?

在切换调节器后,需要通过实际运行AI工作负载(例如小型批次的训练或推理任务)并监控其延迟和吞吐量。如果使用 performanceschedutil 模式下的性能指标差距小于5%,则采用 schedutil 是理想的节能方案。

3. 动态设置调节器

你可以使用简单的Shell循环命令将所有核心的调节器设置为 schedutil

#!/bin/bash

GOVERNOR="schedutil"

# 检查 schedutil 是否可用
if grep -q "$GOVERNOR" /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors; then
    echo "开始将所有CPU核心设置为 $GOVERNOR 模式..."

    # 遍历所有CPU核心并设置调节器
    for cpu_path in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
        echo "$GOVERNOR" | sudo tee $cpu_path > /dev/null
    done

    echo "设置完成。请验证:"
    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
else
    echo "错误:调节器 $GOVERNOR 不可用,请尝试 ondemand 或其他选项。"
fi

4. 实时监控和验证

配置完成后,需要实时监控CPU的实际运行频率和功耗(如果硬件支持)。使用 cpupower 工具或简单的 lscpu 结合 watch 命令可以快速查看频率变化。

# 实时查看CPU的运行频率 (需要安装 cpupower utils)
watch -n 1 cpupower frequency-info

# 或使用 lscpu (简略查看)
watch -n 1 'lscpu | grep "MHz"'

当AI负载启动时,您会观察到频率迅速提升;当负载减小时(如等待数据加载),频率则会降低,从而实现有效的功耗节省。

DVFS 在 GPU 集群中的应用(概述)

对于主要执行计算任务的GPU,NVIDIA和AMD也提供了类似的动态功耗管理机制,虽然操作方式不同于CPU。

对于NVIDIA GPU,通常通过 NVIDIA System Management Interface (nvidia-smi) 来控制功耗限制(Power Limit)和持久化模式。

如果集群的AI任务具有低优先级或间歇性特点,可以尝试设置较低的功耗上限:

# 查看当前GPU的功耗限制
nvidia-smi -q -d POWER

# 设置特定的GPU(例如GPU 0)的功耗上限为200W
sudo nvidia-smi -i 0 -pl 200

通过降低功耗上限,GPU会自动降低其运行频率和电压,以满足限制,这对于那些未充分利用全部计算资源的AI模型尤其有效。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » AI 集群的功耗挑战:如何通过动态调频(DVFS)在性能不掉队下节省电费
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址