mxnet的並行計算為什麼這麼牛,是什麼原理?
01-14
簡單來說是當計算開銷大於通訊開銷時,通過並行兩者可以達到將近線性的加速。
具體可參見 Sec 4.4 和 4.5 http://www.cs.cmu.edu/~muli/mu-thesis.pdf
ps: 這裡有新的在256塊GPU上的加速,和10台機器vs單機的收斂:
個人理解
通過執行引擎來達到計算和收發的並行,例如後向時算完某一個參數的梯度後,執行引擎會立刻提交到發送隊列中開始發送,這時候其他的後向計算還在進行中。
此外發送與接收的隊列有優先順序,時刻保證最高優先順序參數的接收與發送上述機制保證了對於較深的網路能夠達到了很好的線性加速比,不過對於淺層網路,比如只有兩層lstm的 encoder decoder這種方法的並行效果欠佳。總的來說還是灰常牛逼滴!Mxnet 最近怎麼天天發軟文?是不是錢多了?錢多了趕緊去把文檔寫了。
1. 單機里先對你的網路建一個Computation Graph, 建法大概是算出每個forward/backward的依賴, 然後這個圖的執行可以在不影響拓撲序的情況下並行2. 多機是通過利用Data Parallelism, 可以看做是並行執行mini batch. 系統上差不多算個kv存儲, key是參數index, value是參數具體值, 然後每個client在算gradient的時候拿最新的參數去算, 算完讓server去update. 模型上要處理的是非同步的情況下client提交的gradient可能不是針對當前的參數算出來的, 不過這跟效率沒多大關係了..
我用了多GPU訓練,反而變慢了
有人趟過這個坑么
用python里的例子,2個GPU比單個GPU慢200倍
還有啊,運行cifar10例子時,啟動也很慢
推薦閱讀:
※現在tensorflow和mxnet很火,是否還有必要學習scikit-learn等框架?
※為什麼在數據量較小的時候CPU計算會快於GPU?
※PyTorch 有哪些坑/bug?
※PyTorch提取中間層特徵?
※如何評價 2017 年 12 月 5 日發布的 PyTorch 0.3.0?
TAG:機器學習 | 深度學習DeepLearning | TensorFlow | mxnet | 大規模機器學習 |