论文导读、会议精选:SysML2018,SysML2019

先简单介绍一下SysML会议,2018年新成立的一个聚焦在机器学习系统、软件、硬件等综合领域研究的一个学术会议。由一堆学术界和工业界大佬抱团组建。从18年发布的一篇Machine Learning System(机器学习系统)白皮书可以看到。

在这里插入图片描述

在白皮书中,机器学习系统的研究方向定义为在现实世界中设计和实现一类系统,这类系统用于支持和部署机器学习模型。随着机器学习模型的快速迭代,旧的系统已经不能为机器学习的应用提供最优的平台,并且这个成为了机器学习方法落地及大规模应用的阻碍之一。这类系统的研究包含三个层面:硬件系统,软件系统,以及以精确度以外的标准(能耗,抗攻击新,公平性等)为目标的机器学习模型的支持体系。计算机系统和机器学习的交叉诞生了 SysML 这个会议。会议已经在 Stanford 举行了两次,在圈内受到了不小的关注。(本段引用[1])

本文主要用于记录该会议论文的导读和笔记,以备日后查阅。本文会不定期add更行,所以会慢慢变长。


1、Accelerating Model Search with Model Batching

Stanford的论文,动机非常简单:现在有很多极度消耗GPU算力的场景,比如AutoML的NAS和Hyperparameter tuning,但是单GPU往往是利用率很低的( not saturated),特别是对一些small models,以及RNN类型的网络。这些网络本身在单GPU下训练的时候利用率就很低,而现在的实际在搜网络结构或者超参的时候往往都是一个GPU训一个model。

因此作者就提出了2个技术:在单卡上用multi streams 并行执行多个model,以此来喂饱GPU;以及配套的,需要这些model是共享数据预处理的,因此采用共享的数据预处理(CPU处理以此,发给多个model),这一点也很重要,否则预处理也称为瓶颈就没有意义了。
在这里插入图片描述

ModelBatch has two key components:

  • Shared preprocessing: Preprocessing performed on the CPU, and
    shared among the different models. After preprocessing, processed
    tensors are moved to the GPU asynchronously; this communication is
    overlapped with compute using double buffering
  • Parallel model training: Performed on the GPU on a per-model basis,
    contains operations like convolutions, matrix multiplications, and
    pooling. Kernels launched in parallel using CUDA streams

效果非常直观,能喂饱GPU就能提升性能,特别在推理中的效果比训练更好。未来工作作者也简单讨论了下:

  1. 包括RNN类网络的并行
  2. 在不相同model训练场景下如何用该技术?(因为模型的结束时间会差很多,这个怎么调整呢?我想想应该是用异步启动,前面的model结束后可以新起model来补充GPU利用率)
  3. 分布式训练中能不能用modelbatch?有一个情况是,我们可以天然把通信藏在多个模型的训练计算中,通信虽然有delay,但是其他model还在跑计算,所以实际上并没有完全浪费。

在这里插入图片描述

2、待补充。

参考资料

[1] 机器学习 + 系统 : 一个新的方向,https://zhuanlan.zhihu.com/p/61786615

发布了83 篇原创文章 · 获赞 639 · 访问量 133万+

猜你喜欢

转载自blog.csdn.net/xbinworld/article/details/102887127