论文导读会议精选:SysML2018,SysML2019
Posted 大饼博士X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文导读会议精选: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就能提升性能,特别在推理中的效果比训练更好。未来工作作者也简单讨论了下:
- 包括RNN类网络的并行
- 在不相同model训练场景下如何用该技术?(因为模型的结束时间会差很多,这个怎么调整呢?我想想应该是用异步启动,前面的model结束后可以新起model来补充GPU利用率)
- 分布式训练中能不能用modelbatch?有一个情况是,我们可以天然把通信藏在多个模型的训练计算中,通信虽然有delay,但是其他model还在跑计算,所以实际上并没有完全浪费。
2、待补充。
参考资料
[1] 机器学习 + 系统 : 一个新的方向,https://zhuanlan.zhihu.com/p/61786615
以上是关于论文导读会议精选:SysML2018,SysML2019的主要内容,如果未能解决你的问题,请参考以下文章
学界 | NLP年度盛宴EMNLP/CoNLL 2018最精彩论文精选(摘要+评论)