论文阅读:基于强化学习的数据中心冷却控制
- 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
- 【问题定义】作者试图解决 / 研究什么类型的问题 / 现象?
- 我们希望帮助数据中心节能。数据中心的能耗主要分为三部分:① 电脑跑程序的能耗,② 冷却电脑的能耗,③ 房间照明、监控等其他 misc 事情(一般不考虑)。
- 然而,我们不能影响数据中心的任务调度(比如 A 机器已经很忙了,再干活就过热了,所以把任务强行塞给 B 机器),只能影响冷却系统(比如空调、冷却水等),控制冷却系统的功率、运作方式等。
- 我们的目标是:合理控制冷却系统,使得 ① 机器不过热 ② 能耗尽量小。
- 【问题重要性】读者为什么要关心这个问题 / 现象?
- 因为数据中心耗能很多,冷却耗能占一大部分,所以,如果能节省 15% 的冷却耗能,就已经是很大一笔。
- 【novelty】proposed method 与 previous works 有什么不同?
- previous works:一般采用 two-step 的形式,先(基于物理方程、专家经验等)建 DC 的模型,再基于进行控制。
- proposed method: end-to-end、RL-based method(虽然感觉 proposed method 不算典型 end-to-end,并且也不能算是典型 RL)。
- 【为何胜出】比 previous works 好在哪里?(比如 性能更好 / 更 general / 更快)
- general:用 neural net 代替一些模块,可以省去很多物理建模的复杂度吧。(但是随之而来的调参复杂度,不知道怎么样)
- 性能:貌似在某些情况下,性能>baseline(一个魔改的 two-step method)。
- 【论文在文献树上的位置】这是什么类型的方法?(通常有几种方法可以解决相同的问题)
- 文中有提到传统的 two-step 解决方案,先物理建模数据中心,然后再 somehow 给出控制信号。
- 月出个人猜测,还会有一些 用 ai 取代部分模块 的方案,比如神经网络建模数据中心、启发式算法跑出控制信号。
- 这篇论文提出了全部采用 ai 技术的方案,并且采用了类似 RL 的框架。
- 【实际应用】这项工作有哪些应用?
- 用来给出更好的控制,或者控制参考建议。
- 不过在这方面有个隐忧:如果 ai 的可靠性 / 可解释性不足够,万一对于某些状态,给出了很离谱的控制。
- 感觉我们可以添加一个安全性模块,用来拦截住离谱的控制信号,或者做一些 model ensemble,进行一个去除最大最小的 voting。
- 不过,那天导师说 我们项目采用人工闭环,也就是程序仅提供一个控制的参考值,这是因为自动控制太贵了,人工控制便宜一点 ?? 所以如果不解决这个问题,追求人工闭环是没有工业意义的,学术意义倒是未尝不可。
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)验证模块。
- 基于 DDPG 的 end-to-end 冷却控制算法(cooling control algorithm / CCA)。
- 实验结果:
- EnergyPlus 仿真:11% cooling 成本降低。
- 从 新加坡超算中心(NSCC)收集的真实数据:15% 成本降低。
1 intro
这个 intro 占了将近两页,大部分都是 abstract 的扩写,就不在此赘述了。
intro 最后给出了论文的 contributions:
- 提出了一个基于 DRL 的 end-to-end 框架,可用于 DC 冷却控制优化。并且提出了相配套的算法,只要有预先收集的 data trace,即可训练神经网络。
- 用 EnergyPlus 建立了一个测试平台,并基于复杂的仿真验证了 proposed method。仿真结果表明,我们相比 baselines(abstract 提到的 two-step method)可以节省 11% 的冷却成本。
- 通过研究真实数据中心的 data trace,提出了一种 用来消除预测温度低估(过度乐观)的技术 DUE。因为 proposed method 没有在真实数据中心上跑,仅基于真实 data trace 做理论分析,所以结论有必要更保守、安全可信一点。
2 related work
2.1 related work: DC 冷却优化
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]。
2.2 related work: RL(DRL)
一些 RL / DRL 工作的罗列,月出就不详细说了。
3 冷却优化 问题定义
3.1 基于 EnergyPlus 仿真的 RL 模型
-
仿真环境:
- (其实仿真环境的样子无所谓,反正都用神经网络模拟,不会用物理建模。但是,我们需要找到最关键的几个指标,作为 RL framework 的 state / observation。)
- DC 的产热组成:
- IT 设备(IT equipment / ITE),负载定义为 α · L,其中 L 是已知的 load density(每平方米),α 随时间变化。
- 其他热源(如照明),认为照明不随时间变化,看作常数。
- 在房间里工作的人。
- 环境:两个房间(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】:
- DX cooling:DEC 气流出口温度 \(T_{dec}\),
- DX cooling:IEC 气流出口温度 \(T_{iec}\),
- DX cooling:线圈气流出口温度 \(T_{dx}\),
- CW cooling:水循环的出口温度 \(T_{cw}\),
- 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 带来的影响有一个延时,因此:
- 取过去一段时间的 state-action 轨迹,作为 observation。
- 此刻 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。
- 作者认为 advantage 是没意义的,“因为无法判断某个负荷水平是否良好”。月出感到质疑:
- A3C 简介:
- 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 真的合理嘛 ?? )
- TRPO 简介:
表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 的第三段,提到了一些问题:
- 数据清洁度:收集到的数据噪声 / 异常值太多。据作者说,当问题规模较大时,这个问题会带来比较大的影响,需要在应用算法之前,先仔细处理数据。
- 数据多样性:在真实数据中,(举个例子)比如空调一直开 26℃,所以拿 26℃ 的数据训练,就完全学不到 如果空调开 25℃,温度会怎么变化。
- 调超参数:将算法应用于不同数据中心时,调超参数(如 λ、τ)是不可避免的。