本周,Facebook 的 AI 研究團隊發布了一個 Python 工具包,專門針對 GPU 加速的深度神經網絡(DNN)編程。它有望輔助、或在一定程度上替代,現有的 Python 數學、統計庫(比如 NumPy)。它實現了機器學習框架 Torch 在 Python 語言環境的執行。開發團隊表示,除 Facebook之外,它還已經被推特、卡內基梅隆大學和 Salesforce 等機構採用。
使用 Pytorch 的機構
Torch 是一個十分老牌、對多維矩陣數據進行操作的張量(tensor )庫,在機器學習和其他數學密集型應用有廣泛應用。但由於其語言採用 Lua,導致在國內一直很小眾,並逐漸被支持 Python 的 Tensorflow 搶走用戶。如今,作為經典機器學習庫 Torch 的埠,PyTorch 為 Python 語言使用者提供了舒適的寫代碼選擇。雷鋒網此前對 Torch 做過介紹。詳情請看盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn 。
PyTorch 提供了:
PyTorch 的首要優勢是,它處於機器學習第一大語言 Python 的生態圈之中,使得開發者能接入廣大的 Python 庫和軟體。因此,Python 開發者能夠用他們熟悉的風格寫代碼,而不需要針對外部 C 語言或 C++ 庫的 wrapper,使用它的專門語言。雷鋒網獲知,現有的工具包可以與 PyTorch 一起運行,比如 NumPy、SciPy 和 Cython(為了速度把 Python 編譯成 C 語言)。
PyTorch 還為改進現有的神經網絡,提供了更快速的方法——不需要從頭重新構建整個網絡。這是由於 PyTorch 採用了動態計算圖(dynamic computational graph)結構,而不是大多數開源框架,比如 TensorFlow、Caffe、CNTK、Theano 等採用的靜態計算圖。雷鋒網(公眾號:雷鋒網)獲知,該技術從另一個 Python 的神經網絡框架——Chainer 那裡借用。開發者團隊還強調 PyTorch 優越的內存效率,因為它採用了定製的 GPU 內存分配器。這使得開發者的深度學習模型能夠有「最大限度的內存效能」,訓練比從前更大的深度神經網絡。
雖然 PyTorch 為機器學習應用而優化,這並不是它的唯一使用場景。比如說,相比 NumPy ,PyTorch 的張量計算可作為它對應功能的替代。PyTorch 為這些功能提供了 GPU 加速的版本。在沒有強力 GPU 加持的情況下,開發者能使用 CPU 運行。
這是 PyTorch 中包含的工具包列表:
torch :類似 NumPy 的張量庫,強 GPU 支持
torch.autograd :基於 tape 的自動區別庫,支持 torch 之中的所有可區分張量運行。
torch.nn :為最大化靈活性未涉及、與 autograd 深度整合的神經網絡庫
torch.optim:與 torch.nn 一起使用的優化包,包含 SGD, RMSProp, LBFGS, Adam 等標準優化方式
torch.multiprocessing: python 多進程並發,進程之間 torch Tensors 的內存共享。
torch.utils:數據載入器。具有訓練器和其他便利功能。 Trainer and other utility functions for convenience
torch.legacy(.nn/.optim) :處於向後兼容性考慮,從 Torch 移植來的 legacy 代碼。
via infoworld
相關文章:
英特爾開源BigDL,可直接在Spark框架下運行深度學習
盤點四大民間機器學習開源框架:Theano、Caffe、Torch 和 SciKit-learn
谷歌開源 3D 數據壓縮算法 Draco,在線看片再也不用緩衝了?
谷歌布局大數據:開源平臺 Apache Beam 正式發布
BAT 在下一盤大棋?深度盤點國內四大機器學習開源平臺
谷歌、微軟、OpenAI 等巨頭的七大機器學習開源項目 看這篇就夠了
雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。