# Cloud Workflow Scheduling base on Deep Reinforcement Learning
北京化工大学本科毕业设计《基于深度强化学习的云工作流调度》
关键词:有向无环图,工作流,深度强化学习,图神经网络; 蒙特卡洛树搜索
## Installation
It requires the following packages:
- Python 3.9.7
- torch 1.10
- gym 0.21.0
- networkx 2.6.3
## Instructions
1. 将 Env/___.py 文件注册在gym的环境中;
2. 运行 DAGs_generator.py 生成 train dataset, test dataset.
3. 修改环境代码适应生成数据集的路径;
4. 运行 PPO/DRLagent.py 训练网络;
5. 运行 PPO/DRLtest.py 测试推理。
5. 运行baseline_tableau.py 得出baseline算法效果
5. 运行MonteCarloTreeSearch.py 得出MCTS算法效果
## 目前进度
2022.03.11
- 目前状态空间,动作空间下设计的Actor- Critic,PPO方法难以超越baseline [Tetris](https://dl.acm.org/doi/abs/10.1145/2740070.2626334?casa_token=EYl_WpNS79MAAAAA:iNwogrNmlUceBfJ-P0vySitXQzV01kmwGmkRj4qTHPeqBiyd04Zqt6giZpwvOR3TgR1Nv46_8jJYdt0)的效果。
- 尝试经典[GCN](https://arxiv.org/abs/1609.02907)编码DAG,效果不佳。
- 尝试[Decima](https://dl.acm.org/doi/abs/10.1145/3341302.3342080)中的编码结构。
2020.03.23
- 结合[Decima](https://dl.acm.org/doi/abs/10.1145/3341302.3342080)中的[GCN](https://arxiv.org/abs/1609.02907)对DAG进行编码,改变编码数量,效果不佳
- 完成深度强化学习加速蒙特卡洛树搜索算法(魔改[spear](https://ieeexplore.ieee.org/abstract/document/8885307/)),目前在DAG_size=10大小上效果最佳。
- 编写了单个DAG任务资源用量检测脚本。
2020.04.19
- 完成蒙特卡洛树n=10-50的所有实验
- 完成毕业论文初稿
- 下一步优化GCN编码
## 有向无环图生成设计
工作流通常由DAG(有向无环图)来定义,其中每个计算任务$T_i$由一个顶点表示。同时,任务之间的每个数据或控制依赖性由一条加权的有向边$E_{ij}$表示。每个有向边$E_{ij}$表示$T_i$是$T_j$的父任务,$T_j$只能在其所有父任务完成后执行。一般在所有任务之前设立一个Start虚拟节点,作为所有没有父任务节点的父节点;同理,在所有任务之后设立一个Exit虚拟节点,作为所有没有子任务节点的子节点,这两个虚拟节点都没有计算资源需求。
确定表示一个DAG需要三个数据,分别是是节点连接信息,各节点的父节点数,各节点的子节点数。由这三个元素可以确定一个独立的DAG。
例如一个10个节点的DAG:
**Edges:** [(1, 5), (1, 6), (2, 4), (2, 6), (3, 6), (4, 7), (4, 9), (5, 9), (5, 7), (6, 7), ('Start', 1), ('Start', 2), ('Start', 3), ('Start', 8), ('Start', 10), (7, 'Exit'), (8, 'Exit'), (9, 'Exit'), (10, 'Exit')]
**In_degree:** [1, 1, 1, 1, 1, 3, 3, 1, 2, 1]
**out_degree:** [2, 2, 1, 2, 2, 1, 1, 1, 1, 1]
表示的是下面这一张图。
<img src="README.assets/image-20220228114904174.png" alt="image-20220228114904174" style="zoom:67%;" />
图 1 一个DAG示例
参数设定为:
size = [20,30,40,50,60,70,80,90] #DAG中任务的数量
max_out = [1,2,3,4,5] #DAG节点的最大出度
alpha = [0.5,1.0,1.5] #控制DAG 的形状
beta = [0.0,0.5,1.0,2.0] #控制 DAG 的规则度
具体的实现细节如下:
1. 根据公式$length=\frac{\sqrt{size}}{alpha}$计算出生成DAG的层数,并计算平均每层的数量$\frac{size}{length}$.
2. 在以均值为$\frac{size}{length}$,标准差为$beta$的正态分布中采样每层的任务数并向上取整,这样随机采样得到的总任务数可能有偏差,随机在某几层添加或者删除任务,使DAG总任务数等于$size$。
3. 对于第一层到倒数第二层:每一个任务随机在[0, $max\_out]$,并随机连接$n$个下一层的任务。
4. 最后给所有没有入边的任务添加Start作为父节点,所有没有出边的任务添加Exit任务作为子节点,至此一个随机的DAG就生成好了。
在这里$alpha$控制的是DAG的整体形状,如果$alpha$越小,DAG越长,$alpha$越大,DAG越短。
![image-20220228152039290](README.assets/image-20220228152039290.png)
图2 不同alpha下DAG的形状(n=30)
$beta$则是控制的DAG的规则度,如果$beta$越大,DAG越参差不齐。
## 添加工作流信息
对DAG中每一个任务随机分配它的持续时间和资源需求(CPU,Memory)。
为了模拟一些时间占用相对较长的任务,定义一个概率prob=80%,每个任务的持续时间有80%的几率在$[t,3t]$的范围内随机取值,20%的概率在$[10t,15t]$的范围内随机取值。
每个任务有50%的概率为CPU密集型任务,剩下的50%是Memory密集型的任务。
CPU密集型的任务CPU的资源占用量在$[0.25r,0.5r]$中随机取值,Memory的资源占用量在$[0.05,0.01]$随机取值。Memory密集型的任务资源需求量相反。
举一个根据以上规则生成的工作流信息的例子,对10个任务的 DAG 随机生成的工作流信息如下表示: (r=100,t=10)
任务占用时间 Ti: [27.174, 23.215,24.209,15.085, 20.691,29.892,20.632, 26.777, 19.402,18.362]
任务资源占用 (res_cpu,res_memory): [(31.432, 1.019), (4.7330, 25.308), (1.208, 42.542), (1.517, 47.633), (39.299, 4.826), (1.654, 46.401), (2.438, 35.593), (3.887, 42.224), (1.594, 30.074), (42.445, 3.225)]
## 马尔可夫决策过程建模
### 状态空间
1. 当前执行的时间(1维)
2. 当前资源中剩余的 CPU 资源(1维)
3. 当前资源中剩余的 Memory 资源(1维)
4. Ready_task 任务列表(长度为 10)中的任务要求时间(30维)如果不足30空位补-1
5. Ready_task 任务列表中的 CPU 要求资源(30维) 如果不足30空位补-1
6. Ready_task 任务列表中的 Memory 要求资源(30维) 如果不足30空位补-1
7. 当前未完成 DAG 部分的最大路径长度(1维)
8. 当前未完成 DAG 部分的子节点数(1维)
9. 超出 Ready_task 任务列表长度且准备好的任务的时间要求总和(1维)
10. 超出 Ready_task 任务列表长度且准备好的任务的 CPU 要求总和(1维)
11. 超出 Ready_task 任务列表长度且准备好的任务的 Memory 要求总和(1维)
共98维状态。
### 动作空间
{-1,0,1,2,3,4,5,6,7,8,9,...,29}
•选择 $a=-1$表示执行完计算资源里的一个耗时最短的任务。此时执行时间增加该任务的消耗时间,释放占用的CPU和Memory资源。
•选择$a=0\sim29$表示把当前 Ready_task 任务列表的第a个任务提交给计算资源。此时当前执行时间不变,当前CPU/Memory资源减去该任务占用的资源。
### 回报函数
•选择 $a=-1$: $reward = -\frac{\text{执行时间}}{t}$
•选择$ a=0\sim9$: $reward = 0$
## 环境说明
实验采用OpenAI 强化学习gym平台,自定义的工作流调度环境主要包括两个函数:
### state, reward, done, infor = env.step(action)
step函数用于智能体与环境进行交互,输入动作action返回的是下一步的状态state,该步的reward,是否执行完一整个个DAG任务,和动作是否有效(infor)。 当接受到动作后智能体首先判断该动作是否有效:
a) 该动作对应的位置是没有任务(数据是-1),动作无效。
b) 计算资源不能能满足该位置上的任务的CPU/Memory资源需求,动作无效。
c) 如果当前计算资源中没有提交的任务,动作$a=-1$是无效的。
如果动作无效,重新采样动作;
如果动作有效,则更新状态:
a) $ a=0\sim29$ :计算资源中CPU/Memory分别减去该任务占用的资源,更新Ready_task 任务列表中该任务对应位置上的执行时间,CPU/Memory资源全部置为-1,表示该任务已经提交给计算机。
b) $a=-1$ :表示执行当前计算机�
没有合适的资源?快使用搜索试试~ 我知道了~
人工智能项目资料-
【探索人工智能的宝藏之地】
无论您是计算机相关专业的在校学生、老师,还是企业界的探索者,这个项目都是为您量身打造的。无论您是初入此领域的小白,还是寻求更高层次进阶的资深人士,这里都有您需要的宝藏。不仅如此,它还可以作为毕设项目、课程设计、作业、甚至项目初期的立项演示。
【人工智能的深度探索】
人工智能——模拟人类智能的技术和理论,使其在计算机上展现出类似人类的思考、判断、决策、学习和交流能力。这不仅是一门技术,更是一种前沿的科学探索。
【实战项目与源码分享】
我们深入探讨了深度学习的基本原理、神经网络的应用、自然语言处理、语言模型、文本分类、信息检索等领域。更有深度学习、机器学习、自然语言处理和计算机视觉的实战项目源码,助您从理论走向实践,如果您已有一定基础,您可以基于这些源码进行修改和扩展,实现更多功能。
【期待与您同行】
我们真诚地邀请您下载并使用这些资源,与我们一起在人工智能的海洋中航行。同时,我们也期待与您的沟通交流,共同学习,共同进步。让我们在这个充满挑战和机遇的领域中共同探索未来!
收起资源包目录
北京化工大学本科毕业设计《基于深度强化学习的云工作流调度》.zip (135个子文件)
events.out.tfevents.1648025256.bogon.20133.0 835KB
events.out.tfevents.1650357478.bogon.12292.0 557KB
events.out.tfevents.1650505386.bogon.2078.0 556KB
events.out.tfevents.1650364222.bogon.15910.0 556KB
events.out.tfevents.1648035224.bogon.23193.0 556KB
events.out.tfevents.1648038395.bogon.25510.0 417KB
events.out.tfevents.1648041268.bogon.26891.0 334KB
.DS_Store 14KB
.DS_Store 8KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.gitattributes 66B
launch.json 481B
extensions.json 59B
LICENSE 1KB
README.md 16KB
edges50_lib.npy 1.01MB
edges50_lib.npy 1023KB
edges40_lib.npy 818KB
edges40_lib.npy 814KB
edges30_lib.npy 607KB
edges30_lib.npy 604KB
edges20_lib.npy 398KB
edges20_lib.npy 394KB
demand50_lib.npy 391KB
demand50_lib.npy 391KB
demand40_lib.npy 313KB
demand40_lib.npy 313KB
demand30_lib.npy 235KB
demand30_lib.npy 235KB
duration50_lib.npy 195KB
duration50_lib.npy 195KB
edges10_lib.npy 193KB
edges10_lib.npy 193KB
duration40_lib.npy 156KB
demand20_lib.npy 156KB
duration40_lib.npy 156KB
demand20_lib.npy 156KB
duration30_lib.npy 117KB
duration30_lib.npy 117KB
demand10_lib.npy 78KB
duration20_lib.npy 78KB
demand10_lib.npy 78KB
duration20_lib.npy 78KB
edgestest_lib.npy 63KB
duration10_lib.npy 39KB
duration10_lib.npy 39KB
demandtest_lib.npy 24KB
durationtest_lib.npy 12KB
actor.pkl 29KB
critic.pkl 25KB
消融实验.png 933KB
resource.png 458KB
random.png 412KB
makespan50.png 334KB
makespan40.png 333KB
makespan20.png 329KB
makespan30.png 322KB
makespan10.png 314KB
10DAG.png 214KB
image-20220228152039290.png 192KB
image-20220228153127773.png 189KB
p11.png 127KB
PPO.png 81KB
image-20220228114904174.png 68KB
spear.png 51KB
PPO_graphEnv-v0_30GCN_256.pth 678KB
PPO_graphEnv-v0_30GCN_128.pth 213KB
PPO_MyEnv-v0_30.pth 94KB
PPO_clusterEnv-v0_30MCTS.pth 94KB
PPO_clusterEnv-v0_50MCTS.pth 94KB
PPO_clusterEnv-v0_40MCTS.pth 94KB
PPO_clusterEnv-v0_20MCTS.pth 94KB
PPO_clusterEnv-v0_resourceTest.pth 94KB
PPO_clusterEnv-v0_10MCTS.pth 94KB
PPO_graphEnv-v0_30GCN.pth 76KB
NonLinearNw3_3-3.pth 2KB
NonLinearNw2_3-3.pth 2KB
NonLinearNw1.pth 2KB
GCN_0.pth 2KB
GCN_1.pth 2KB
NonLinearNw2.pth 2KB
NonLinearNw3.pth 2KB
clusterEnv.py 20KB
graphEnv.py 19KB
myEnv.py 18KB
testEnv.py 18KB
MonteCarloTreeSearch.py 14KB
resources_monitor MCTS.py 14KB
PPOagentForGCN.py 14KB
共 135 条
- 1
- 2
资源推荐
资源预览
资源评论
159 浏览量
5星 · 资源好评率100%
129 浏览量
172 浏览量
2024-12-04 上传
5星 · 资源好评率100%
2024-01-03 上传
122 浏览量
5星 · 资源好评率100%
152 浏览量
2024-04-23 上传
5星 · 资源好评率100%
179 浏览量
177 浏览量
2021-02-24 上传
5星 · 资源好评率100%
187 浏览量
189 浏览量
180 浏览量
2023-03-12 上传
2023-10-30 上传
128 浏览量
资源评论
妄北y
- 粉丝: 2w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 金属、有机的、纸张、塑料检测48-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- 塑胶结构设计-螺丝柱设计
- 47种室内植物种类图像分类数据集【已标注,约14,000张数据】
- Android开发中使用的google定位的总结:主要有四种方式:有需要自行寻找对应的方式方法
- 程序员专用的HTML5个人简历模版源代码+手机端
- 禾川HCQ1系列PAC脉冲控制步进驱动器测试程序
- 8255 并行接口实验-微机原理与接口技术课程设计
- 小程序快速实现大模型聊天机器人
- 金属、有机物、非有机物检测67-YOLO(v7至v9)、COCO、CreateML、Darknet、Paligemma数据集合集.rar
- 8254 定时计数器应用实验-微机原理与接口技术课程设计
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功