論文導讀、會議精選: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章