微軟開源深度學習工具包CNTK更新2.3版,帶來多重性能改進
近日微軟更新了自家開源深度學習工具包 CNTK,新的版本號為 2.3,帶來了多項性能改進。
CNTK 全名為 Computational Network Toolkit,與谷歌的 TensorFlow、非死book 的 Caffe/Caffe2 一樣是開源的計算平臺/工具包,意在服務更多深度學習、人工智能的研究人員和開發者們。從 2016 年開源起,微軟就宣傳 CNTK 的性能明顯高于 Caffe、Theano、TensoFlow 等其它的一些熱門工具,當然也提供了基于英偉達 cuDNN 的一到多 GPU 加速支持。
CNTK 在 2.0 的多個 Beta 和 RC 版本中逐步更新了面向 Python、C++、C#、Java 等語言的 API 支持,對 Keras 的后端支持,Python 示例和教程、自動安裝等等一大堆新功能,接著在 2.1 中把 cuDNN 版本升級到了 6.0、支持 Universal Windows Platform,在 2.2 中做了許多模型支持相關的改進之后,近日 CNTK 也發布了 2.3 版本。雷鋒網 AI 科技評論把更新內容簡單介紹如下:
CNTK 2.3 更新重點
-
對 ONNX 標準的更好支持(關于 ONNX 看這里)
-
分布式訓練支持切換到 NCCL2,帶來更好的性能(NCCL 是英偉達官方的多卡訓練庫,詳細解讀看這里)
-
改進了C# API 的支持
-
(2.2 版本中必須安裝 OpenCV 庫)現在 OpenCV 不是必須安裝的,只有當用到 TensorBoard Image 功能和圖像讀取功能時才需要安裝它
-
多重性能改進
-
增加了網絡優化 API
-
更快的稀疏 Adadelta
性能改進的相關項目包含
-
改進 C# API,提升訓練和預測性能
-
通過自由動態軸的支持,提升帶有卷積操作的網絡的訓練速度。對于某些模型,訓練速度可以提升 5 倍以上;
-
提升驗證性能,移除了許多不需要的驗證檢查;
-
CPU 卷積中更多地使用 MKL-ML,AlexNet 的訓練速度可以提升 4 倍;
-
Linux 的正式版 CNTK-GPU 會默認使用 NCCL2,可以降低分布式訓練中的聚合開銷。對于 Python 用戶來說沒有什么影響,Linux 的 Python 自己就帶有 NCCL 支持。BrainScript 版本的用戶需要先自己手工安裝 NCCL 庫作為 CNTK 的運行環境,就像 CUDA 和 CUDNN 一樣。CPU 版本和 Windows 版本都不受影響,因為目前 NCCL 只支持 Linux。
-
提升了梯度稀疏時 Adadelta 的更新速度。現在每次更新的運行時間和梯度中不為零的元素的數量成正比。對于在單個 GPU 上運行的帶有高維稀疏輸入(大約 2 百萬特征)的前饋模型,性能可以提升 5 倍。內存需求稍有增加,每一個稀疏的輸入特征會需要額外的四個字節空間(對前面提到的模型來說一共增加 8MB 左右的內存需求)
其它值得注意的項目
-
2. 3 版本是最后一個支持 Python3.4 的版本,未來版本的 CNTK 將不再支持 Python3.4。
-
ONNX 方面,優化標準支持的同時,ONNX 標準也更新到了最新版本;目前已經覆蓋了 ResNet、Inception、VGG 在內的多數計算機視覺模型
-
增加了 GPU 上分組卷積的支持
CNTK2.3 版本此次發布了運行在 Windows 下的 CPU、GPU、GPU+1bit-SGD、UWP 等多個版本以及運行在 Linux 下的 CPU、GPU、GPU+1bit-SGD 三個版本,都支持 64 位系統。有需要的研究人員和開發者請到 CNTK 的 github 馬上更新吧。
來自: 雷鋒網