常見問題
本節回答了 mxnet/issues上的常見問題。在提問前,請先檢查該頁面。如果你想要貢獻本頁面,請儘量使問題和答案簡單。如果你的回答非常詳細,請發佈在其它地方並提供鏈接。
構建和安裝
關於構建和安裝的問題,絕大多數問題的答案都可以在 build page 上找到。
速度
在GPU上啓動花費很長時間
嘗試禁止OpenCV使用GPU: build opencv from source with GPU module disabled.
It’s slow on a single GPU
檢查下面幾條:
- 確保 CUDA/驅動 版本不是太老。
- 構建時使用
USE_CUDNN=1
。這一般能提速 50+%。嘗試使用最近版。 - 在運行前執行
export MXNET_CUDNN_AUTOTUNE_DEFAULT=1
。這一般能提速 10%-15%。 - 如果你使用的是 Tesla GPUs,那麼執行命令
nvidia-smi -e 0
,來禁用ECC。這需要root權限和重啓。You might need root permission and have to reboot. - 對於 Tesla 顯卡,執行命令
nvidia-smi -ac ??
,設置最大時鐘。詳細細節,參考 this blog。 - No throttle reason 一般是由於溫度引起的。
nvidia-smi -q -d PERFORMANCE
。
使用多個GPU或機器,但速度沒有提升
檢查下面幾條:
- 你的神經網絡是否已經很快了?比如,>1000樣本/秒,或>10 批/秒?如果是的話,由於通信開銷,不能通過添加更多資源來提速。
- 批的尺度是不是很小?嘗試增大批尺度。
- GPUs數量是否超過4個? 使用
--kv-store=device
。
內存使用
CPU內存使用異常
這可能是因爲數據預取。查看 issue 2111。
等待審覈
下面的話題需要被審覈。
如何將部分參數複製到另一個模型
大部分MXNet包含2部分,參數數組和符號。你可以簡單地將參數數組複製到另一個模型的參數數組。例如,在Python模型API中,你可以如下操作:
copied_model = mx.model.FeedForward(ctx=mx.gpu(), symbol=new_symbol,
arg_params=old_arg_params, aux_params=old_aux_params,
allow_extra_params=True);
關於從已存的old_arg_params
複製模型參數的更多信息,請查看 notebook。
如何提取某一層的特徵圖
請查看 notebook.
MXNet 和 CXXNet, Minerva, 與 Purine2是什麼關係?
- MXNet 是由來自以上3個項目的作者們相互協作創建的。
- MXNet 反映了我們已從這些項目中學習到的東西。
- MXNet 組合了這些項目的重要方面:效率高,靈活和內存利用率高。
- MXNet 也包含了新的方法:允許你組合使用不同的編程方式,寫出比 CXXNet 和 Purine內存利用率高的CPU/GPU應用,比Minerva更加靈活。
MXNet 和 TensorFlow的是什麼關係?
-
MXNet 和 TensorFlow都使用計算圖抽象化,它最早在Theano中使用,後來被其它庫所採用,比如,CGT, Caffe2, 和 Purine。當前,TensorFlow 使用一個優化的符號API。MXNet 支持一種混合方法,該方法使用動態依賴調度器來組合符號編程和命令編程。
-
簡而言之,MXNet是輕量級的,混合的。既有命令式編程的靈活性,又因計算圖(符號編程)而變得速度快和內存高效。