论文阅读:基于强化学习的数据中心冷却控制


目录
  • Dmitry Berenson 的读论文方法(感觉很实用,所以特意写了一篇 )。
  • 论文标题:Transforming Cooling Optimization for Green Data Center via Deep Reinforcement Learning,用深度强化学习 做数据中心冷却 的优化。发表于 2019 年,已经被引 116 次。
  • 不清楚这篇 2019 年的论文 是否算 RL 做此类优化的早期工作;
    • Google Scholar 上,最早的相关工作是在 2017 年,18 年开始变多;
    • 除了数据中心冷却之外,建筑的 HVAC(Heating Ventilation and Air Conditioning,供暖通风与空气调节)也比较多。
  • 最后,这篇博客是我断断续续写了将近两个月才发出来的,中间跑去实习、又跑去保研、学运筹学、干各种事情,一直搁置到现在。
    • 前几天有在读《Lessons from AlphaZero》,并且参加一些组会,对自动化有了一些新的认识。现在看来,下文的博客内容,可能有些太激进、过于偏颇了。
    • 对于我的个人观点,读者随便看看就好。RL 是否纯粹,可能没那么重要,重要的是我们把问题解决了,这就足够了。

layer 1:知道 main idea

  1. 【问题定义】作者试图解决 / 研究什么类型的问题 / 现象?
    1. 我们希望帮助数据中心节能。数据中心的能耗主要分为三部分:① 电脑跑程序的能耗,② 冷却电脑的能耗,③ 房间照明、监控等其他 misc 事情(一般不考虑)。
    2. 然而,我们不能影响数据中心的任务调度(比如 A 机器已经很忙了,再干活就过热了,所以把任务强行塞给 B 机器),只能影响冷却系统(比如空调、冷却水等),控制冷却系统的功率、运作方式等。
    3. 我们的目标是:合理控制冷却系统,使得 ① 机器不过热 ② 能耗尽量小。
  2. 【问题重要性】读者为什么要关心这个问题 / 现象?
    1. 因为数据中心耗能很多,冷却耗能占一大部分,所以,如果能节省 15% 的冷却耗能,就已经是很大一笔。
  3. 【novelty】proposed method 与 previous works 有什么不同?
    1. previous works:一般采用 two-step 的形式,先(基于物理方程、专家经验等)建 DC 的模型,再基于进行控制。
    2. proposed method: end-to-end、RL-based method(虽然感觉 proposed method 不算典型 end-to-end,并且也不能算是典型 RL)。
  4. 【为何胜出】比 previous works 好在哪里?(比如 性能更好 / 更 general / 更快)
    1. general:用 neural net 代替一些模块,可以省去很多物理建模的复杂度吧。(但是随之而来的调参复杂度,不知道怎么样)
    2. 性能:貌似在某些情况下,性能>baseline(一个魔改的 two-step method)。
  5. 【论文在文献树上的位置】这是什么类型的方法?(通常有几种方法可以解决相同的问题)
    1. 文中有提到传统的 two-step 解决方案,先物理建模数据中心,然后再 somehow 给出控制信号。
    2. 月出个人猜测,还会有一些 用 ai 取代部分模块 的方案,比如神经网络建模数据中心、启发式算法跑出控制信号。
    3. 这篇论文提出了全部采用 ai 技术的方案,并且采用了类似 RL 的框架。
  6. 【实际应用】这项工作有哪些应用?
    1. 用来给出更好的控制,或者控制参考建议。
    2. 不过在这方面有个隐忧:如果 ai 的可靠性 / 可解释性不足够,万一对于某些状态,给出了很离谱的控制。
    3. 感觉我们可以添加一个安全性模块,用来拦截住离谱的控制信号,或者做一些 model ensemble,进行一个去除最大最小的 voting。
    4. 不过,那天导师说 我们项目采用人工闭环,也就是程序仅提供一个控制的参考值,这是因为自动控制太贵了,人工控制便宜一点 ?? 所以如果不解决这个问题,追求人工闭环是没有工业意义的,学术意义倒是未尝不可。

layer 2:知道 proposed method 的 structure

【画出整个 method 的框图】,每一模块的 目的功能 + 输入输出。

layer 3(不完整):比较重要的细节

  • 【result & conclusion 匹配吗】结果是否证明了 该方法的合理性?

    • 说实话,我并不 sure… 无论如何,它看起来蛮 work 的。
    • 总感觉对于一个实验,如果想 claim 它 outperform 了 baseline,细细想来的话,可操作的点太多了。
  • 【有无遗漏的实验】是否有 应该测试但没测试的 案例 / 场景?

    • 不知道测试温度阈值(希望数据中心气流温度<某个值,就是指的这个阈值)等于其他值的情况,是否有必要。
  • 【performance & complexity 的权衡】(对于某些可量化的指标),proposed method 相比于其他方法的优势,能否使人接受 它新引入的 complexity?

    • ai 是可以的!

    • 首先,对于物理建模数据中心,1. 太麻烦了,2. 对于不同场景,建模也不一样,3. 必然会写近似的物理公式,建模也不精确。但 ai 就可以隐藏这些复杂性,让建模变得很容易。

      • ai 取代物理建模的劣势:1. 原数据多样性不够时 train 不出模型,2. 可靠性 / 可解释性 让人隐隐忧虑。
    • 然后,对于 somehow 得到控制方案这一步,直接 neural net 输出控制信号,时间花费很少,只需做一次 forward,无需复杂的在线优化。

      • 不过,1. 数据不够、2. 可靠性 / 可解释性的问题依然存在。
    • 最后,想补充一句:感觉 ai 这些优点已经成为共识,全流程 ai 的论文已经有很多了。这篇文章得到了不少引用,可能是因为 借鉴了一些 RL 的框架,并且使用了 1. 把先前状态叠起来、2. action 延后使用 等 tricks,所以性能还不错。

  • 【不 work 的场景】方法在哪些情况下失败?

    • 可能因为测试数据太少、并且不够多样(严重的聚簇,这确实是个棘手的问题),模型并不能很好处理 某些温度预测:实际温度会突然出现一个尖峰,这个尖峰很难被预测出来,预测值往往偏低。

0 abstract

  • 背景:
    • 数据中心(Data Center / DC)是 电子商务、云计算 等领域的基础设施,数量越来越多、规模越来越大,所以 DC 的耗能问题也备受关注。
    • 然而,几乎一半(其实才 38%)的能源成本 是用来冷却(cooling)DC 的。
    • 因此,在保证安全性的前提下,抑制冷却能源成本,是一个关键的操作挑战。
  • 现有方法:two-step 两阶段。
    • 1,根据专家知识建模 DC;
    • 2,通过 启发式方法 / best practice,确定冷却的操作。
    • 然而 这些方法通常很难 generalize,而且因为 DC 系统的规模很大,如果模型有一点点不准确,就会导致次优解 / 不稳定的解。
    • (为什么不说 启发式方法 不靠谱呢?还有不稳定,RL 不是更不稳定吗?)
  • 本文方法:基于 深度强化学习(DRL)的 DC cooling control。
    • 基于 DDPG 的 end-to-end 冷却控制算法(cooling control algorithm / CCA)。
      • critic network:预测 1. DC 的能源成本 2. 冷却效果
      • actor network / policy:判定 当前优化过的 control setting。
    • 为了减少 critic 使用神经网络 导致温度低估(即 overestimate / 过于乐观的估计),还引入了一个 反低估(de-underestimation / DUE)验证模块。
  • 实验结果:
    • EnergyPlus 仿真:11% cooling 成本降低。
    • 从 新加坡超算中心(NSCC)收集的真实数据:15% 成本降低。

1 intro

这个 intro 占了将近两页,大部分都是 abstract 的扩写,就不在此赘述了。

intro 最后给出了论文的 contributions:

  1. 提出了一个基于 DRL 的 end-to-end 框架,可用于 DC 冷却控制优化。并且提出了相配套的算法,只要有预先收集的 data trace,即可训练神经网络。
  2. 用 EnergyPlus 建立了一个测试平台,并基于复杂的仿真验证了 proposed method。仿真结果表明,我们相比 baselines(abstract 提到的 two-step method)可以节省 11% 的冷却成本。
  3. 通过研究真实数据中心的 data trace,提出了一种 用来消除预测温度低估(过度乐观)的技术 DUE。因为 proposed method 没有在真实数据中心上跑,仅基于真实 data trace 做理论分析,所以结论有必要更保守、安全可信一点。

DC 冷却的 two-step method [4] - [9] [20]:

  • 第一步:建模 DC。
    • 热动力学(thermal dynamics)建模冷却效率 [4] - [8] [20]。
    • 计算流体动力学(computational fluid dynamics / CFD)分析 aire-flow efficiency [21]。
    • [4] 使用了 43 个数学公式,来建模一个特定的制冷系统,即 没法 generalize 到其他结构的系统。
    • 为了 generalize,[9] 用神经网络来建模。
  • 第二步:基于 DC 模型,求解决策变量。
    • 传统优化方法 [4] / 随机的优化方法 [9]。
  • 然而,大多数工作都基于简化的理想模型。

其他相关工作:

  • ice-storage system:冷却优化 节省能源 [22] [23]。
  • DC 在 IT 侧的能源节省:
    • 通过工作负载调度,优化 DC 的热力图,以减少冷却耗能 [24] - [26]。
    • 网络流量管理,减少交换机(switch)个数,以节省能源 [27]。

一些 RL / DRL 工作的罗列,月出就不详细说了。

3 冷却优化 问题定义

3.1 基于 EnergyPlus 仿真的 RL 模型

  • 仿真环境:

    • (其实仿真环境的样子无所谓,反正都用神经网络模拟,不会用物理建模。但是,我们需要找到最关键的几个指标,作为 RL framework 的 state / observation。)
    • DC 的产热组成:
      1. IT 设备(IT equipment / ITE),负载定义为 α · L,其中 L 是已知的 load density(每平方米),α 随时间变化。
      2. 其他热源(如照明),认为照明不随时间变化,看作常数。
      3. 在房间里工作的人。
    • 环境:两个房间(Zone),一个用 direct expansion (DX) cooling(即 通过气体换热),一个用 chilled water (CW) cooling(即 通过液体换热),如下图【图 1 2】所示。
  • State Space:1. 工作负载级别 + 2. 环境温度 的元组(连续 state space)。

    • 环境温度的英文是 ambient temperature,百度翻译为环境温度、背景温度、周围介质温度。月出推测就是当地气温的意思… 这模型在一个前(经典 AI 的)RLer 眼里,有点太简陋 ??
    • 【state 和 observation 不一样,详见第 4 节】
  • Reward:基于两个 zone 的 1. PUE(能源效率的倒数)2. ITE 出口温度。

  • Action Space:根据两个 zone 各自的的冷却原理,action 为五元组(连续 action space),见上图【图 2】:

    1. DX cooling:DEC 气流出口温度 \(T_{dec}\)
    2. DX cooling:IEC 气流出口温度 \(T_{iec}\)
    3. DX cooling:线圈气流出口温度 \(T_{dx}\)
    4. CW cooling:水循环的出口温度 \(T_{cw}\)
    5. CW cooling:气流循环的出口温度 \(T_{ch}\)

3.2 Problem Statement

  • 已知数据:环境空气温度 \(T_{amb}\) + 负荷系数 \(H_{ite}\) 的元组(随时间变化)。

  • action / 决策变量:\(A = [T_{cw}, T_{dx}, T_{dec}, T_{iec}, T_{ch}]\)

  • 最小化的目标函数:(也可认为是 -reward)

    • \[\min_A \bigg[\epsilon_{pue}+\lambda\cdot\ln(1+\exp(T_{z1}-\phi))+ \lambda\cdot\ln(1+\exp(T_{z2}-\phi))\bigg] \\ \text{ s.t. } L_A\le A\le U_A \tag{1} \]

    • 其中,\(L_A\)\(U_A\) 是 action 的 lower / upper bound,\(T_z\) 是两个 zone 的出口温度,φ 是温度阈值。

    • 解读:第一项希望 PUE 最小化,第二、三项是 zone 温度过热的惩罚。

4 method

4.1 基于 DDPG 算法的 CCA(cooling control algorithm)

  • DDPG:

    • Deep Deterministic Policy Gradient,是 model-free、off-policy 的 RL 算法,支持 continuous action space。
    • 结构类似 Actor-Critic,包含 policy network 和 value network,policy network 输入 observation 输出 action,用来估计让 value network 值最大的 action。
  • DDPG 的参考博客:

    • https://zhuanlan.zhihu.com/p/398288352
    • 蘑菇书 EasyRL:https://datawhalechina.github.io/easy-rl/#/chapter12/chapter12?id=ddpgdeep-deterministic-policy-gradient
  • actor / policy network \(a=\pi(s)\):输入 observation,输出一个确定性的 action。

    • 参数更新:梯度上升,最大化 \(Q(s,\pi(s))\);即 往输出 \(a=\pi(s)\) 的参数梯度方向,走 \(Q(s,\pi(s))\) 步长。
  • critic / value network \(Q(s,a)\):输入 obs + action,输出 Q value。

    • 参数更新:基于 TD-error / Bellman Equation 的一步更新。
    • 为缓解 over-estimation,应用了 target network;即 用 target network(Q value + policy)的预测值,来更新当前网络的 Q value,一段时间后更新 target network ← 当前 network。
  • pretrained policy:

    • 在现实情况下,肯定不能让 policy 从初始的 random 状态开始 与环境交互(random policy 的输出 可能很危险,把整个系统过热烧掉);
    • 并且 再考虑到训练效率(跑 simulator 比 train RL 还耗时),我们先用收集的 off-line data 进行 pretrain。
    • DDPG 是 off-policy 的,所以 off-line pretrain 可行。

4.2 训练细节

  • 和经典的 RL 不同,我们不用未来的 reward * discount 求和 做训练,而是仅使用单步 reward 做训练,因为未来的 reward 更多由天气 / 工作量所决定。(月出表示意料之外 ?? )

  • 调节 action 带来的影响有一个延时,因此:

    1. 取过去一段时间的 state-action 轨迹,作为 observation。
    2. 此刻 observation 得到的 action,等到下一个 time slot 再采用。
  • critic(输入最近的 state-action 轨迹 + action,输出 Q value):

    • Q-network 的第一层是一个 encoding,随后的 layers 用于预测 PUE 和温度,然后用 PUE 温度 来算 reward,这样 即可直接监督学习。
    • 因为我们仅用单步 reward 进行训练,所以 Q value(一个 action 的好坏)= reward。
    • 训练:拿真实的 PUE 和温度,直接监督学习。(reward 是 PUE 和温度的函数)
  • actor(输入最近的 state-action 轨迹 + 当前 obs,输出 action):

    • 训练:最大化当前 action 的 Q-network 值。
    • (训好的 Q-network 可以直接拿来训 policy,可以基于 off-line data trace,不需要与环境交互)
  • 避免过拟合(不是 abstract 提到的 DUE,DUE 用于处理真实场景的温度低估,见博客 6.2 节):

    • 用 validation error 验证集的误差,取验证集误差最小的 policy 和 Q-network。
  • 月出的评价:

    • 披着 DDPG 结构(actor-critic)的监督学习 ??
    • 不过 tricks 应该有参考意义。

4.3 神经网络设计

如图所示:

对于 tanh 激活函数,我们把输入归一化到 [-1, 1],把输出归一化回来。

5 评测:simulation

5.1 实验准备

  • 实验环境:EnergyPlus 仿真平台。
    • 由 U.S. Department of Energy Building Technologies Office 提供,用于模拟建筑制冷的能耗,广泛使用的经典仿真平台。支持自定义的算法、control actions、schedules。
    • 仿真配置:采用 EnergyPlus 提供的原始 Data Center 模型,地点(天气)设为新加坡。模拟期为一年,每 6 分钟收集一次模拟数据。
  • 数据生成 & 预处理:
    • 使用 random 算法进行一年的模拟,前 55% 作为 offline training data,后 45% 用来测试。
    • random 算法中,为确保 action 平稳变化,对随机生成的 action 进行平滑处理。
    • (simulation 的数据没有噪声。)
  • baselines:
    • ①:EnergyPlus 的默认算法 DefaultE+,根据底层模型(underlying model)的目标区温度计算设定点;
    • ②:改编自 [9] 的 two-step method:
      • 第一步:在第一阶段,训练与 CCA 相同的评价网络(Q-network),对应 [9] 中冷风机(chiller)效率建模的网络。
      • 第二步:使用 SciPy [46] 提供的迭代微分进化(iterative differential evolution)优化算法,寻找每个测试状态的最优解。(原论文是遗传算法)
        • 作者说,随便选个靠谱的优化算法是合理的;如果问题的设定好、建模好,那么算法就理应 work。
        • 或许因为遗传算法有一些缺点(百度搜到的),然后目前使用的进化算法,是遗传算法的加强版。
  • proposed CCA method 的细节:
    • 网络结构:
      • Q-network 的 hidden-layer 大小为 50-50-3。
      • μ-network 的 hidden-layer 大小为 50-50。
      • 网络权重初始化:zero-sum、0.01-Standard deviation 随机生成。
    • 超参数:
      • 参数优化算法为 Adadelta [45]。
      • epoch(把所有训练数据过几遍)数量 = 200。
      • batch size = 128。
      • 公式 (1) 中的 λ(能源成本 - 冷却效果的 tradeoff)= 0.01。更多 λ 设置参见原文 Section 5.E。
      • 公式 (1) 中的温度阈值(预期的目标温度)φ = 29。
  • 性能评估指标:
    • PUE(能源效率的倒数),出口温度 1,出口温度 2。

5.2 实验结果

表1 + 图4:proposed CCA method 与 baselines 的性能比较。τ 是博客 4.2 节提到的“过去一段时间的 state-action 轨迹作为 Q-network 输入”的 stat-action pair 数量。

图5:一个 proposed CCA method 与 baselines 的模拟轨迹(PUE、两个出口温度)。

结论:

  • PUE:CCA 明显低(1.37 → 1.33,节省 11% 冷却功率),TS 比 DefaultE+ 好。
  • 出口温度:“比其他方法高,但令人满意。”(倒是能看出来 TS 比 DefaultE+ 明显好:PUE 没怎么变,温度还低)
    • 说实话,月出读到这里时,很怀疑 CCA 只是用温度换 PUE,其实性能没提升。毕竟,论文怎么不放 出口温度阈值 ≠ 29℃ 的实验结果呢,数据中心冷却非要 29℃ 不可嘛?该不会因为其他不 work 吧 ??
    • 博客 5.3.3 节有其他的结论,证明 CCA(在某种程度上)还是比 TS 性能好的,不过仍没完全打消疑虑。
  • Q-network 输入长度 τ = 3 时:TS 和 CCA 都不太稳定,可能因为模拟数据没有噪声,所以 Markov 性质比较好,用过去一步的数据就够了。用更多的过去数据来参考,反而带来了干扰。

细节:

  • 学到的 action 符合物理规律。action 里的温度 \(T_{dec}\)\(T_{iec}\) > \(T_{dx}\),因为热气流会从 DEC、IEC 逐渐冷却到 DX 线圈;\(T_{ch}\) > \(T_{cw}\),因为送风温度不能低于冷却气流的冷却水温度。

性能提升>增加的复杂性?

  • 浅看了 [9] 的原方法,大概是用一个 ANN 拟合出模型(特定控制变量下,温度是多少、能源消耗是多少),然后用遗传算法确定控制变量(冷水系统负载是多少、冷水流量是多少)。
  • 相比于 [9],我们的方法 用神经网络确定控制变量,而不是用启发式方法。policy network 不是完全监督训练的,而是尽可能最大化 Q-network,比如走 Q-network 输出值这么大的梯度步。
  • 对于每次控制,遗传算法貌似每次都要跑一整遍,而 neural net 只要跑个 forward 即可。用训练时间变长,换测试时间变短,值得。

5.3 更换某个组件后的实验

5.3.1 改变 DRL 算法

DRL 算法的 counterpart:

  • A3C(fake):
    • A3C 简介:
      • Asynchronous Advantaged Actor Critic,是 actor-critic 算法 1. 将 value function 或者 Q function 写成 advantage 的形式,2. 进行异步的多 CPU 操作。
      • 具体的,(如果多 CPU)每个 CPU 对应一个 agent,这些 agent 在不同地方独立运行。一个 agent 跑完之后,把策略梯度传给中心进程 / 线程,中心进程 / 线程更新参数,再把最新参数传给这个 agent。
      • 参考博客:蘑菇书 EasyRL,it's enough,链接 。
    • 作者的魔改:
      • 作者认为 advantage 是没意义的,“因为无法判断某个负荷水平是否良好”。月出感到质疑:
        • 目前,state 是 1. 工作负载级别 + 2. 环境温度 的 tuple,action 是一些冷却系统的出口温度设定。感觉可以判断一个 state 是否优于另一个 state、一个 action 是否优于另一个 action。
      • 所以,A3C 被魔改成了多个 CCA 模型的集成(月出直呼离谱 ?? )并且,“multi-agent”这词也不兴这么用呀 ??
      • 看来,只能指望月出本人做出很强的工作,进行 RL 和自动化的神妙结合了! 哈哈哈 ?? 严肃的说,月出最想做的,是对工业界真正有意义的事情,无论是否 RL。
  • TRPO(半 fake):
    • TRPO 简介:
      • Trust Region Policy Optimization,是一种 model-free、 on-policy、policy gradient 的算法,核心思想是:在 vanilla policy gradient 的基础上,保证每次策略更新都有性能提升。
      • 参考博客:
        • https://blog.csdn.net/qq_43616565/article/details/121090957
        • https://blog.csdn.net/tanjia6999/article/details/99716133
        • https://blog.csdn.net/weixin_41679411/article/details/82421121
    • 作者的魔改:
      • 通过每次随机选取 off-line data,装作是当前 policy 新跑出来的 trajectory,实现 on-policy → off-policy 的转换。
      • 月出看到这里,直呼 on-policy 不能这么改 ???? 不过仔细想想,如果只考虑一步 reward,相当于每个 episode 长度都为 1,初始状态是唯一的状态;而经典 RL 认为,初始状态是系统随机给的,和策略没关系,所以随机采样的初始状态,和 on-policy 的初始状态等价…… 竟意外的说通了。
      • (所以,所以,只考虑单步 reward 真的合理嘛 ?? )

表2:

结论:

  • 模型集成的 CCA 比单个 CCA 好一点。
  • TRPO 不太稳定,可能因为它是 policy gradient,没有用到 value / Q network(CCA 用到了)。
  • anyway,CCA 算是不错的设计。

5.3.2 改变 network design

网络设计的 counterpart:

  • target network:DDQN / DDPG 减少 Q network 高估的 trick,原理是“避免打移动靶”。
  • ReLU net:将 CCA 的激活函数从 tanh 替换成 relu。
  • LSTM net:用 LSTM 层来处理最近的历史轨迹,而非直接 concat 成 state-action trace。(使用了博客前文 5.2 节中 τ = 3 的情况)

表3:原来 CCA 与 1. target network,2. relu net,3. LSTM net 的性能比较。

结论:

  • target network 和 CCA 差不多,作者说,因为 CCA 的 Q function 收敛非常快。
    • 难道不是因为,Q-network 是用 PUE / 出口温度 监督训练 的嘛,不会出现打移动靶的问题 ??
  • ReLU 明显弱于 tanh,可能 ReLU 还是太线性了,表达能力不强。进一步实验表明,ReLU 配上更多 hidden-layers 会好一些。
  • LSTM 和 CCA 差不多,不过不太稳定。作者认为合理,因为 LSTM 的训练更复杂。

5.3.3 改变能源成本 - 冷却效果的权衡 λ

图6:从 0.0 到 0.04 调整 λ 的结果。

结论:

  • λ ↗,温度的重要性 ↗,PUE ↗,温度 ↘,合理。
  • 如果想达到像 TS 那样的 26℃,可以 λ = 0.04,此时 PUE 大概 1.365,比 TS 的 1.371 好。现在我相信 CCA 比 TS 好了。
    • 但是 anyway,感觉作者不会对 TS 做像调整 λ 这样精细的操作,所以,好性能也可能是调出来的。

细节:

  • 作者说,可以通过由粗到细的直线搜索来调整 λ,简单并且效果好。

6 评测:真实数据

6.1 实验准备

  • 真实环境:

    • 数据来源:新加坡国家安全中心(NSCC of Singapore)。

      • 数据收集:2017年3月1日 ~ 3月15日,每 3min 收集一次数据,前 85% 用来训练,后 15% 用来测试。
    • 场景:

      • 房间里有 26 个机架,三个 PCU(precision cooling unit,精密冷却装置)提供冷空气,冷空气温度约为 20℃,如图所示:

      • 冷空气的循环路径:首先进入冷通道(cold aisle),然后穿过机架,最后返回 PCU。

      • 其他冷却设施:对 1-20 号机架,即超算机架,附加一个温水冷却系统(warm water cooling system);对 21-26 号机架,即用来管理的机架,附加一个后门冷却系统(rear-door cooling system)。

    • 优化目标:

      • 我们希望,在保持机架平均进口温度的同时,最小化 PCU 功耗。也就是说,提供刚好够用的冷空气,避免额外冷空气的浪费。

      • 目标函数:

      • \[\min_{f_{pcu}}\bigg[\epsilon_{pcu} + λ\cdot\ln(1+\exp(T_{intake}-\phi))\bigg] \tag{2} \]

      • 其中,\(f_{pcu}\) 是控制动作(气流速率),\(\epsilon_{pcu}\) 是 PCU 功耗。温度阈值 Φ 设定为 27℃,因为我们的目标是将进气温度控制在 27℃ 以下。

  • 问题定义(见原文表 4):

    • state:

      • 功率型 flow rate 型 温度型
        P1:机架 1~26 的总功耗 F1:温水冷却系统的 water flow rate T1:温水冷却系统的温水温度
        P2:其他机架的总功耗 F2:其他 PCU 的 air flow rate T2:要优化的这三个 PCU 的平均冷风温度
        P3:温水冷却系统的 heat load 总和 F3:后门冷却系统的 water flow rate T3:其他 PCU 的平均冷风温度
    • action:

      • flow rate 型
        F4:要优化的这三个 PCU 的 air flow rate
    • reward:

      • 功率型 温度型
        P4:要优化的这三个 PCU 的功耗 T4:平均机架进口温度
  • 实验细节:

    • 训练方法:先让 Q-network 学预测温度(监督学习),确保温度能预测好,然后用 Q-network 训练 μ-network,得到 policy。

    • 测试方法:对测试数据的每个场景,用 μ-network 给出 action,然后把 (state, μ 输出的 action) 输入 Q-network,将 Q-network 预测的温度 作为性能评测依据。

    • Q-network(critic):

      • 在 episode 长度 = 1 的 RL 下,Q-network 预测特定 state 特定 action 下的预期 reward。
      • 本场景中的 reward 由 ① PCU 功耗 ② 机架进口温度 决定。由于功耗可以直接拿 air flow rate 算出来,air flow rate 是我们的 action,所以 Q-network 只需要预测进口温度。
      • 只要进口温度预测足够精准,即可算出 reward。所以,最后变成了 监督学习 预测进口温度。
    • μ-network(actor):

      • 拿到足够精准的 Q-network 之后,相当于得到了环境的温度模型。μ-network 只需在该模型下,学习 自己输出什么功率,才能 ① 维持机架温度合适 ② 自己功率不太高 即可。
      • (和前面实验一样,也基本相当于监督学习。)
    • baseline:就是原数据,跟原本情况比较 ① 功耗是否更低 ② 温度是否更低。没有其他算法的 baseline。

6.2 实验结果(包含 DUE)

图8:Q-network 输出温度 在不同 τ 下的结果,τ 是博客 4.2 节提到的“过去一段时间的 state-action 轨迹作为 Q-network 输入”的 state-action pair 数量。

结论:τ = 4 时,Q-network 拟合温度模型 效果最好,MAE = 0.094℃。

作者说,尽管误差看起来很小,但可能因为 模型更多去拟合落在中间的数据,(对过热过冷的情况 全部无脑输出中间温度),导致低估了过热情况的温度,给出了过度乐观的估计。

DUE:

  • 因为没法在真实 DC 上跑我们的算法,所以重要的是,我们要首先产生一些可靠的理论结果。低估温度是不可靠的情况,要尽量避免其发生。
  • 为了解决这个问题,作者使用了一个叫做 DUE 的 trick,具体的,在计算验证误差时(原论文 CCA 算法 11 行,如果目前 Q-network 误差<原先 Q-network 误差,则更新 Q-network),将原来的平方误差 替换成 只考虑低估误差。
    • (内心 OS:好不优雅 ?? 不过 maybe works)

图9:(并没有说 τ 是多少)温度拟合的一小段数据,?? 是真实值,?? 是不使用 DUE 的拟合结果,?? 是使用 DUE 的结果。

作者说,虽然加了 DUE 之后,误差变大了好多,整个曲线都往上漂移了,但至少 低估温度的情况有所缓解。

  • 月出发现,对于某些尖刺,目前的拟合结果都不太好。对于这种异常值,或许可以考虑用 AdaBoost 来做?

然后,我们研究了惩罚参数 λ(目标函数 (1) 中,温度超出预设的 penalty 的权重)不同的情况。

图10:在不同的 λ 下,蓝线是能源节省的百分比,红线是最大入口气温。

能源节省率 ↑,气温 ↑,相当于用更少的能源去开空调了,合理。作者声称,如果设定的温度阈值>26.6℃,则可以轻松节能 15%。

  • 虽然但是,现在不是变化 λ 嘛,已经把温度阈值设为 27℃ 了。……Hang on,温度阈值 = 27℃,最大入口气温才不到 26.6℃,相当于温度完全不超标呀!这是真的嘛?(那么变化 λ 的意义是什么)
  • 月出有一点怀疑实验结果 ??

图11:在不同的 λ 下,控制动作(air flow rate)和气温(预测值)的比较。黑十字是真实值,?? 线的颜色越深,λ 越小(气温越不重要)。

λ ↑,气温重要性 ↑,air flow rate ↑,预测的气温 ↓,合理。

7 conclusion

  • 问题背景、方法概述、实验结果就不多说了,不过 conclusion 的第三段,提到了一些问题:
    1. 数据清洁度:收集到的数据噪声 / 异常值太多。据作者说,当问题规模较大时,这个问题会带来比较大的影响,需要在应用算法之前,先仔细处理数据。
    2. 数据多样性:在真实数据中,(举个例子)比如空调一直开 26℃,所以拿 26℃ 的数据训练,就完全学不到 如果空调开 25℃,温度会怎么变化。
    3. 调超参数:将算法应用于不同数据中心时,调超参数(如 λ、τ)是不可避免的。

相关