文章目录

  • 问题
  • 设计
    • 深度学习任务的性能建模
      • 学习收敛曲线
      • 资源-速度建模
    • 动态调度
      • 资源分配
      • 任务放置

问题

在一个共享的深度学习集群中,同一时期会提交各种各样的训练任务,高效的资源调度能够最大化利用昂贵的资源,以加速完成训练。可以利用深度学习框架的结构(比如参数服务器架构)和深度学习任务的特征(比如迭代、收敛性质)来最大化训练效率。

这篇文章提出了Optimus,一种定制化的深度学习集群调度器,能够最小化任务训练时间、提升资源利用效率。

设计

深度学习任务的性能建模

为了做出好的资源调度,需要知道资源配置和任务训练时间之间的关系。为此,作者估计了一个任务再训练多少个回合才能收敛,以及在给定的资源配置下一个任务完成一个训练回合需要多长时间。

学习收敛曲线

大部分DL任务使用SGD来更新参数,SGD以O(1/k)的速率收敛,其中k是迭代的步数(一个worker训练一个小批量并更新梯度称为一步)。因此使用以下模型来拟合训练损失:

l(k)=1β0k+β1+β2l(k) = \frac{1}{\beta_0 k + \beta_1} + \beta_2 l(k)=β0​k+β1​1​+β2​

其中l表示训练损失,β0\beta_0β0​、β1\beta_1β1​和β2\beta_2β2​都是非负参数。

在每个训练步之后,收集训练损失,然后使用非负最小二乘法来拟合曲线。使用拟合好的损失函数曲线和预定义的收敛阈值,就可以很容易地算出还需要迭代的回合数。

资源-速度建模

作者考虑了前向传播、反向传播、梯度上传、梯度更新、参数拉回和通信开销(处理TCP连接、控制信息),建模出了训练速度与worker数量w、PS数量p的关系,同步模型如下:

异步模型如下:

之后,用收集的数据拟合参数值(在训练之前,先用一个小的数据集训练,使用不同的p、w组合,收集训练速度数据),得到训练速度与p和w的关系。在实际的训练中,可以收集真正的训练速度数据,微调参数。

动态调度

Optimus周期性的给活跃任务分配资源,调整每个任务的参数服务器和worker的数量和放置。

资源分配

QjQ_jQj​表示任务j达到收敛剩余的迭代步数,f(pj,wj)f(p_j,w_j)f(pj​,wj​)表示任务j目前的训练速度。定义任务完成时间的边际效益如下:

公式中的,NjDN_j^DNjD​表示的是任务j的参数服务器的支配资源的数量(一个支配的资源是有最大份额的资源),OjD′O_j^{D'}OjD′​表示的是任务j的workers的支配资源的数量。因此前面的项指的是增加一个参数服务器后每单元支配资源减少的完成时间,后面的项指的是增加一个worker后每单元支配资源减少的完成时间。

资源分配算法如下:首先给每个活跃任务分配一个worker和一个参数服务器。然后给所有任务按照边际效益的递减顺序排序。然后,选择边际效益最大的一个任务增加参数服务器或worker(选择上式中两项中最大的那一个)。算法迭代到所有的资源被用尽,或者所有任务的边际效益都是非正值。

任务放置

资源分配好了以后,需要考虑将这些worker和参数服务器放到哪个真实的服务器上,注意,一个服务器可以支撑多个worker和参数服务器。

定理:考虑到同步训练作业中worker和参数服务器的数量,在同质服务器集群中,为实现作业的最大训练速度,最佳的worker/参数服务器放置原则是使用最小数量的服务器来承载作业,从而在这些服务器上分别部署相同数量的参数服务器和相同数量的worker。

基于以上原则设计了以下算法,以最小化传输时间:

首先按照可用资源大小的递减顺序给所有的服务器排序(比如可用CPU容量)。然后,按照资源需求递增的顺序给任务排序,防止任务饿死。对于每个任务,首先检查前k个服务器是否足够(从k=1开始),如果足够,就在k个服务器上均匀的放置参数服务器和worker。如果不够,就检查k+1,k+2,…,直到找到足够的服务器放置任务。最后更新这k个服务器的可用资源数量,然后重新排序服务器。重复这个过程,知道所有的任务被放置或者没有足够的资源放置任务。

Optimus: An Efficient Dynamic Resource Scheduler for Deep Learning Clusters(论文笔记)相关推荐

  1. 《Medical image classification using synergic deep learning》论文笔记

    利用协同深度学习进行医学图像分类 0 Abstract 医学图像分类在计算机辅助诊断.医学图像检索和医学图像挖掘中是一个非常重要的任务.尽管深度学习相对于传统的手工标注特征的方法有明显的优势,但是因为 ...

  2. Yoshua Bengio——《Deep Learning》学习笔记1

    版权声明:此为Yoshua Bengio的新书<Deep Learning>学习笔记,本文为博主在研究工作中经验分享,包括学习笔记.摘录.研究成果,以便以后工作参考之用,欢迎交流和批评:其 ...

  3. Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks论文笔记

    Procedural Noise Adversarial Examples for Black-Box Attacks on Deep Neural Networks论文笔记 0. 概述 如今一些深度 ...

  4. Ian Goodfellow《Deep Learning》读书笔记

    Ian Goodfellow<Deep Learning>读书笔记 感觉大学快毕业了才开始做一些有用的事情,就当是个小学生吧,由于毕业设计和复试的需要,开始着手一些人工智能方面的内容,毕业 ...

  5. 深度学习Deep learning小白入门笔记——PanGu模型训练分析

    书接上回 深度学习Deep learning小白入门笔记--在AI平台上训练LLM--PanGu 对训练模型重新认知与评估. 模型评估 在训练过程中或训练完成后,通常使用验证集或测试集来评估模型的性能 ...

  6. scDeepCluster:Clustering single-cell RNA-seq data with a model-based deep learning approach论文解读

    这是2019年发表于nature子刊machine intelligence的一篇论文,作者是Tian Tian , Ji Wan, Qi Song and Zhi Wei.论文主要是提出了一个新的框 ...

  7. Prediction of Multidrug-Resistant TB from CT Pulmonary Images Based on Deep Learning Techniques论文总结

    Prediction of Multidrug-Resistant TB from CT Pulmonary Images Based on Deep Learning Techniques 解决的问 ...

  8. 《neural networks and deep learning》读书笔记

    neural networks and deep learning 项目地址:https://github.com/mnielsen/neural-networks-and-deep-learning ...

  9. 韩松EIE:Efficient Inference Engine on Compressed Deep Neural Network论文详解

    EIE为韩松博士在ISCA 2016上的论文.实现了压缩的稀疏神经网络的硬件加速.与其近似方法的ESE获得了FPGA2017的最佳论文. 目录 一.背景与介绍 1.1 Motivation 1.2 前 ...

最新文章

  1. 成都铁路警方联合多部门开展反恐防暴演练
  2. 零编程基础学python-零编程基础怎么自学python?
  3. Android Activity动画属性简介
  4. wine: Unhandled page fault on read access to 0x00000000 at address 0x10b1fb8
  5. 用u盘安装linux系统
  6. VS2019,C#打包发布生成单个exe
  7. J.U.C并发框架源码阅读(二)AbstractQueuedSynchronizer
  8. 基于qt开发的轻量级浏览器
  9. 在Eclipse4.2 4.3 中安装最新版插件 WindowsBuilder swt
  10. 关于yolo3的学习
  11. 【C++ STL学习笔记】C++ STL基础
  12. spilt的用法小结
  13. 用计算机数字技术制作的电影是,计算机数字技术为电影带来的空前发展.doc
  14. 华为mate30和mate30pro的区别
  15. mysql数据库导出数据乱码问题_Mysql数据库导出来的是乱码如何解决
  16. html5 多点触控 缩放,WebBrowser禁用触摸缩放
  17. 科研——多问、多交流
  18. Android OpenGL ES (十三) 视频播放器
  19. 趣味编程故事|java进程占用cpu过高怎么办,别急我来帮你
  20. 这个是小蜜蜂老师给出的蓝桥杯练习题目,我通过这个题目加深了对iic总线的理解和应用。

热门文章

  1. 福特sync恢复出厂设置_福特新蒙迪欧SYNC使用说明书!
  2. 如何下载jQuery常用插件
  3. MATLAB新版本中modem.qammod函数无法使用问题
  4. HDU1166:敌兵布阵
  5. URP中如何用多个相机?
  6. Android Studio 4.0 的 gradle-6.1.1-all.zip 下载(包含其他版本)
  7. Qcom Sensor调试
  8. 怎么讲计算机屏幕录制,录屏怎么录声音?手机、电脑屏幕录制这些要知道
  9. linux c程序设计基础秦攀科版答案,2016年linux c程序员和初学者不得错过的精品图书18册...
  10. Adobe Photoshop 中,经常使用的默认键盘快捷键