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