用线性二次模型建模大型数据中心,基于 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 ...
随机推荐
- springBoot——多环境开发
不常用的application.properties版的 常用的:application.yml版 #多环境开发,设置启用环境 spring: profiles: active: test --- # ...
- Elasticsearch安装ik分词器,并配置扩展词典
1.首先安装好elasticsearch,这里我用的是docker安装 2.去GitHub下载ik分词器,GitHub地址 3.下好了解压 4.使用远程客户端工具(我用的是finalShell)将整个 ...
- Codeforces Round #426 (Div. 2) A. The Useless Toy
A. The Useless Toy time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- 【分享】推荐一个非常好用的redis远程连接工具
推荐一个非常好用的redis远程连接工具 蓝奏云地址 https://wwsi.lanzoum.com/ig7xZ0xspf0h 密码:4vnz 二维码:
- StingBuilder与StringBuffer包含的常见方法(图示)
StingBuilder与StringBuffer包含的常见方法
- Cesium案例解析(九)——Rotatable2DMap旋转2D地图
目录 Cesium的Rotatable 2D Map示例展示了一个旋转的二维地图: 'use strict'; var viewer = new Cesium.Viewer('cesiumContai ...
- 原理一、Java中的HashMap的实现
文章从JDK1.7和JDK1.8两个版本解析HashMap的实现原理及其中常见的面试题(两个版本HashMap最大的区别,1.7版HashMap=数组+链表,1.8版HashMap=数组+红黑树+链表 ...
- .NET技术分享日活动-202104
2021年4月27日下午,个人组织举办了山东地区的山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NET ...
- 论文解读丨无参数的注意力模块SimAm
摘要:本文提出了一个概念简单但对卷积神经网络非常有效的注意力模块. 本文分享自华为云社区<论文解读系列三十:无参数的注意力模块SimAm论文解读>,作者:谷雨润一麦. 摘要 本文提出了一个 ...
- Linux设置SSH连接时间,解决断开速度快,不停输密码问题: connection reset by
ssh 登录,没有设置ssh key 登录的情况下(临时登录),断开速度太快.如何解决? 修改:/etc/ssh/ssh_config 文件 #设置连接保持的时间ClientAliveInterval ...