用线性二次模型建模大型数据中心,基于 MPC 进行冷却控制
一个总述
- 论文题目:Data center cooling using model-predictive control
- 主要工作:用线性二次系统 + MPC 进行大规模 DC 控制。
- 关键点:利用 DC 结构对称性。图 2 还是很有启发的。
- 局限性:1. 线性二次形式的建模,2. cost function 不一定完全代表功耗。
- 加了一堆 tricks,比如 在什么情况下才会更新系统参数。
- 设定点(冷通道气温)和 最后评测方法(仅取真实 state 在 setpoint 一个邻域的数据),也有点迷惑。
reviews
1
对于大规模数据中心的温度和气流调节问题,使用 RL 的 data-driven、model-based 方法,相比于现有手工 PID 提高了运行效率。
作者进行了开环的线性系统识别,他们的方法不依赖于历史或基于物理的模型。事实上,他们表明,使用历史数据甚至可能对控制性能有害,因为根据观察数据学习的模型 可能无法捕捉到系统中关键的潜在依赖关系(因为在数据中心,由于 PID 控制器的稳定状态,状态值不太可能有太大的变化,观察到的数据不够丰富,无法进行系统识别)。
作者使用 MPC 来学习数据中心动态的线性模型(Linear-Quadratic),使用安全的随机探索,从很少或没有先验知识开始。然后,他们通过优化 model-predicted trajectories 的成本,确定每个时间步的控制行动,确保在每个时间步重新优化。
本质上的贡献不是算法,而是在一个真实世界的大规模动态系统上,使用开环方法进行线性系统识别 + 使用 MPC 进行控制的一个示例。
2
描述了一个非常有趣的、将 RL 应用于大规模 DC 的温度气流调节的任务。在几乎没有先验知识的情况下,RL 能够经过几个小时的探索,实现有效和安全的调节。即使在探索过程中,该方法也始终是安全的。
这比 DeepMind 最近的工作有优势,因为 DeepMind 使用 ML 来操纵冷却塔出水温度、冷冻水注入温度的设定点,而本文使用了 MPC,它使用随机探索(但总是安全的)来学习 DC dynamics 的线性模型,不需要基于物理的模型甚至任何历史数据。然后,控制器通过优化 model-predicted trajectories 的成本,产生每一步的 action。
3
本文将 MPC 应用于 DC 冷却,即,通过控制鼓风机速度和水冷空调的水流,来调节机房 / 地板的空气温度和空气流量。假设 MPC 的动态模型是一个线性自回归模型,通过随机探索控制来学习模型参数。通过实地部署来评估方法的性能,并与传统 PID 控制进行讨论和比较。
问题:
- 在图 2 中,能否为本地模型之间共享参数的模型结构添加一些解释 / 说明?(这个我也想看)
- 在探索阶段(4.2 节),出于安全考虑,你是否只限制了控制步骤的大小?你是否也在监测关键点的温度?
0 abstract
- 尽管 RL 好用,但由于意外事件、受限制的数据、发生昂贵故障的潜在可能性,在现实世界的物理系统中部署 RL 往往很复杂。
- 在本文中,我们描述了调节大规模 DC 温度和气流的任务中 “野外”(in the wild)应用 RL 的情况。
- 通过数据驱动 基于模型的方法,一个没什么先验知识的 RL agent 能够在短短几小时的探索后,达成高效安全的策略,优于 PID 控制器。
1 intro
- DeepMind 在 2014 年做了一个 ML 的 DC 冷却工作 [13],用 ML 建模 Google DC,setpoint 是冷却塔出水温度 + 冷冻水注入温度。
- 技术路线:1 通过安全的随机探索,学习 world-model,2 通过 MPC 每部重新规划,给出控制策略。
- 我们的基于粗粒度 linear dynamics 的 MPC 只需学几个小时,但配置一个新的(比如说)PID 需要几个周的测试。
2 related work
- 线性二次(linear quadratic LQ)控制:假设系统线性,cost 二次形式。
- 已知 dynamics:可以用 dp 给出最优策略(事实上我记得 LQ 控制有闭式解)。
- 未知 dynamics:开环策略(open-loop strategies)有专门的探索阶段,用来学系统模型;闭环策略(closed-loop strategies)一上来就控制,边控制边学模型。
- 中间两段:分别介绍了 open-loop closed-loop strategies。
- 在 state 或 control 存在约束的情况下,直接对 control 进行优化更简单,比如 MPC。
3 DC cooling(问题定义)
- 介绍了 DC cooling 的大致设置(见图 1),以及问题定义(state action 随机因素)。
- 优化目标:在接近温度和压力上限的情况下,以最小的 AHU 功率和用水量运行。
- 空调 ACU(air cooling unit)被叫做 AHU(air handling unit)。
- action:AHU 的风扇速度(控制空气流量)和阀门开度(调节用水量)。
- state:
- 空气压差(DP),冷通道温度(CAT),沿机架部署传感器进行测量。为减少冗余并提高对传感器故障的稳健性,我们对局部的一组 CAT 和 DP 传感器的中位数进行建模和调节。
- 每个 AHU 的热空气进入温度(EAT)(回风温度),冷却空气的离开温度(LAT)(送风温度)。
- cost(负 reward):
- \(Σ_{s} q_s(x^s_i[τ]−x^s_{sp})^2 + Σ_{c} r_c(u^c_i[τ] − u^c_{min})\)
- 第一项:实际 state 和 setpoint 之差²;第二项:control 和其最小值之差²,因为 control 是风扇速度和用水量,越小越节能。
- 随机因素(文中称为 Disturbances):server 用电量(产热大头),每个 AHU 的冷冻水进水温度(EWT)。
4 MPC(method)
- 建立每个 AHU 对大邻域(多达 5 个服务器行)状态变量的影响模型,而不仅仅建模 AHU 对邻近传感器的影响;
- 直接控制 CAT(冷通道温度),而不是通过 LAT(空调送风温度)进行间接控制;
- 联合优化所有控制,而不是对每个 rack 使用独立的本地控制器。
4.1 Model structure
- 建模为 T-Markov。设 state x、control u、disturbance d,则有 x[t] = Σ_{k=1..T} (Ak x[t-k] + Bk u[t-k] )+ Cd[t-1]。
- 每个时间步为 30s,根据交叉验证设定 T=5。
- 参数矩阵的稀疏性:
- 利用 DC 的结构性特征(一个 rack 只能影响周围几个 rack,影响不了太远的),参数矩阵有类似 块对角阵 的稀疏性。例如,每个位置的温度和 DP(空气压差)只直接依赖于附近位置的 state control disturbance。
- 根据变量类型,可以再稀疏一点。例如,DP(空气压差)直接取决于风扇速度,在一个狭窄的温度范围内(大致)与温度无关。
- 也就是说,某些 state 变量可以直接用 local model 来建模。表 1 列出了用于预测这些 state 变量的特征。
- 各个 state 分量建模的参数共享:
- 利用 DC 的布局特征(结构相同 和 对称性),我们在 local model 之间共享参数以提高采样效率。因此,模型拥有一个整体的线性卷积(?)结构。
- 见图 2,相同颜色箭头就是共享模型。
4.2 System identification
- 主要内容:安全的随机探索,用于学习系统模型。
- 参数初始化:A 对角矩阵 B C 零矩阵,状态转移完全没有变化。
- 探索策略:在安全范围内进行随机游走,取到每个值的概率均等。
- 安全性保证:安全范围由历史数据得到。如果没有历史数据的,可以先保守地初始化安全范围,再逐渐扩大。(一个随机探索 trajectory 的示例见图 3)
- 参数学习:
- 探索阶段:用递归的最小二乘法更新参数。
- 控制阶段:选择性更新参数,避免用稳态数据淹没模型。用训练数据中变量 s 的均方根误差,作为模型预测结果的噪声标准差 σs 估计值,只有在模型(当前)预测误差超过 2σs 时,才用一个例子更新模型。
4.3 Control
- 优化目标:L 步轨迹的总 cost 最小。
- 这是一个有 2ML ≈ 1.2k 个决策变量的二次优化问题,M 是 AHU 数量,L 是 lookahead 步数。
- 用 TensorFlow 来解,优化器是 Adam。
- 用一个 min max 套 tanh,将 control 的约束转换成无约束问题(公式 7)。
5 实验
5.1 先比较一下 system dynamics 建模的效果
- 模型们:
- 1:我们的模型,3h 探索数据。
- 2:在 local PID(就是每 AHU 配备一个 然后各 AHU 单独决策的)生成的一周历史数据上训练。
- 3:在 3h 探索数据上训练,数据由 certainty-equivalent controller 生成。(没太明白,可能是边学模型 边生成控制,每次都取自己认为最好的 control?)
- setpoints 好像是 CAT(冷通道温度)和 DP(空气压差)的中位数。
- 这里技术细节没太明白。
- 为将 disturbance 对控制性能的影响剥离,我们对实验数据根据 state(CAT DP)和 disturbance(AHU 的冷冻水进水温度、服务器负载)进行分层。并且,假设传感器仅受最近 AHU 的影响,把每个 AHU 以及相关性能单拎出来看。
- 这里技术细节没太明白。
- 结果见表 2,model 1 是最好的。
5.2 跟 local PID 比较性能
- PID 与我们的区别:将 LAT(AHU 送风温度)控制为 EWT(AHU 冷冻水进水温度) + 一个偏移,而非直接控制 CAT(冷通道温度)。
- 评测方法跟 5.1 相同。能省 9% 冷却能耗。
6 discussion
- NN 可能需要大量训练数据。一个可能的办法是,训好几个 LQ 模型,然后根据 disturbance 情况(rack 负载等)来决定使用哪个。
用线性二次模型建模大型数据中心,基于 MPC 进行冷却控制的更多相关文章
- TWaver 3D应用于大型数据中心(续)
在2014年11月份,我们当时发了一篇有关TWaver HTML5 3D应用于大型数据中心的文章,该blog比较详细的描述一些常用的功能的实现方法,比如:动态添加机柜,告警,温度,湿度等相关的功能的具 ...
- VXLAN大数据中心组网
目录: 一.什么是vxlan 二.为什么要用vxlan,解决了什么痛点 三.vxlan与vlan之间有什么不同 四.如何建立vxlan隧道 五.vxlan的网关有哪些种类 六.vxlan在报文中如何转 ...
- [转载] Google数据中心网络技术漫谈
原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd ...
- PGM学习之二 PGM模型的分类与简介
废话:和上一次的文章确实隔了太久,希望趁暑期打酱油的时间,将之前学习的东西深入理解一下,同时尝试用Python写相关的机器学习代码. 一 PGM模型的分类 通过上一篇文章的介绍,相信大家对PGM的定义 ...
- SSAS Tabular 表格模型建模(关系)及部署
一.表格建模(SSAS 表格) 表格模型是 Analysis Services 中的内存中数据库. 使用最先进的压缩算法和多线程查询处理器,xVelocity 内存中分析引擎 (VertiPaq) ...
- matlab 实现感知机线性二分类算法(Perceptron)
感知机是简单的线性分类模型 ,是二分类模型.其间用到随机梯度下降方法进行权值更新.参考他人代码,用matlab实现总结下. 权值求解过程通过Perceptron.m函数完成 function W = ...
- Python数学建模-02.数据导入
数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...
- Factorization Machines 学习笔记(二)模型方程
近期学习了一种叫做 Factorization Machines(简称 FM)的算法,它可对随意的实值向量进行预測.其主要长处包含: 1) 可用于高度稀疏数据场景:2) 具有线性的计算复杂度.本文 ...
- 10分钟明白对偶建模法 / +Leampms的“主模型建模”和“对偶模型建模” 之 —— 三类最短路径问题
摘要 对偶模型建模是非常有独特的一种建模方式 —— 当问题本身要求指标极小的情况下,对偶模型表现为求极大.本文给出三种最短路径问题的线性规划/混合整数规划模型,其中的第三类最短路径问题采用对偶建模方法 ...
- Thinkphp5.0 的使用模型Model删除数据
Thinkphp5.0 的使用模型Model删除数据 一.使用destory()删除数据 //删除id为3的记录 $res = User::destroy(3); //返回影响的行数 dump($re ...
随机推荐
- Mongodb安装篇+可视化工具篇
下载MongoDB 官网下载地址:Download MongoDB Community Server | MongoDB Version 选择:稳定版4.4.2 Mongo的版本分为稳定版和开发版 ...
- 浅析 ArrayList
by emanjusaka from https://www.emanjusaka.top/2023/12/java-arrayList 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文地址. ...
- Linux:LVM磁盘扩容实战
1.列出分区表 命令:fdisk -l 查看到目前挂载了 vda1.vda2.vda3,并且查看到还有vdb 100G没有挂载,以及现在的LV大小仅为29G root@JumpServer-DB-T0 ...
- Pikachu漏洞靶场 Sql Inject(SQL注入)
SQLi 哦,SQL注入漏洞,可怕的漏洞. 文章目录 SQLi 数字型注入(post) 字符型注入(get) 搜索型注入 xx型注入 "insert/update"注入 inser ...
- 人大金仓驱动包kingbasejdbc8.6.0.jar V8驱动jar包
人大金仓驱动包kingbasejdbc8.6.0.jar V8驱动jar包 工作上要将kingbaseV8数据库整合到项目,我在官网找了半天,连个jdbc驱动包下载入口都找不到,简直就是官方文档毫无诚 ...
- ASCII编码:计算机文本通信的基石
ASCII(美国信息交换标准代码)编码是一种将字符与数字相互映射的编码系统,它为现代计算机文本通信奠定了基础.本文将从多个方面介绍ASCII编码的原理.发展历程.应用及其在现实场景中的优势,帮助您深入 ...
- 20、Scaffold属性 BottomNavigationBar 自定义底部导航
BottomNavigationBar 是底部导航条,可以让我们定义底部Tab切换,bottomNavigationBar是 Scaffold组件的参数. BottomNavigationBar 常见 ...
- gitee图床不能用了,心态崩了
起因 大概上周五晚上吧,想着可以正常下班了.也没啥事,正好可以逛逛自己的小破站,看看有没有小伙伴留言什么的. 然后发现小破站图片显示不出来了... 一开始也没在意,想着可能是Gitee又挂了,可能一会 ...
- 数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库
摘要:全密态数据库,专门处理密文数据的数据库系统,数据以加密形态存储在数据库服务器中,数据库支持对密文数据的检索与计算. 1.云数据库安全现状及问题 伴随着云基础设施的快速增长和成熟,与之对应的云数据 ...
- 讲真,你知道Python咋来的吗?
摘要:什么是Python?它怎么诞生的?它跟C语言.shell语言有什么区别?语言环境是怎么样的?这些你都知道吗? Python诞生在一个圣诞节 Python诞生于1989年的一个圣诞节,其创作者Gu ...