谷歌算法研究員:我為什麼鍾愛PyTorch?

老鐵們好!我是一名前谷歌的算法研究員,處理深度學習相關項目已有三年經驗,接下來會在平臺上給大家分享一些深度學習,計算機視覺和統計機器學習的心得體會,當然了內推簡歷一定是收的。

這篇文章,不想說太多學術的東西,和大家簡單談一談深度學習框架的選擇,這幾年在輔導的過程中,見過了太多同學在無意義的事情上浪費了太多精力,而如果第一個demo始終無法順利跑動,這無疑是非常fraustrated的。

1. 操作系統

這個是最好說明的,使用Ubuntu或是OS系統,在筆者看來Windows本身的設計邏輯使得它非常不適合進行希望得到快速反饋的行為。而Unix-base的模型可以對輸入進行快速應答,而且Windows的註冊表文件實在是非常反人類。考慮到Mac的高昂成本,那麼筆者實際上是在推薦Ubuntu,win本下載vmware使用Ubuntu虛擬機即可,如有需要可在評論提出,會給出Ubuntu的相關安裝和配置說明。

2. 深度學習框架

筆者接觸過不少的深度學習框架,也就是說,放棄過很多框架。在工作中踩的坑,有些現在回想起來,依然沒法解決。

谷歌算法研究員:我為什麼鍾愛PyTorch?

最早使用的是Caffe,如果是有過一些工作經驗的AI從業者,一定對這個名字記憶猶新,早期幾乎所有的classic模型都是caffe-base的,而且它的可讀性很好,在進行了一定的基礎學習後,可以輕鬆理解模型。但是caffe最大的缺點在於,它的安裝較其他的框架而言更加繁瑣,配置起來很麻煩,甚至出現過公司裡所有做object detection的實習生都要使用同一臺服務器跑模型,因為他們自己的電腦上都有著各種各樣的錯誤提示,而且mentor們也看不出來問題。

谷歌算法研究員:我為什麼鍾愛PyTorch?

從使用的廣度來看,谷歌公司給出的TensorFlow在這幾年獨佔鰲頭,它使用的靜態圖是一種很有趣的思路,我們知道,在進行一系列的運算時一定有辦法可以將步驟和計算損耗進行簡化。

谷歌算法研究員:我為什麼鍾愛PyTorch?

現在我們手上有一個長度為n的向量,記為(x1,x2,...xn)(x_1, x_2, ...x_n)(x1​,x2​,...xn​)。現在在某個模型中需要對模型進行縮放之後的加和,巧合的是縮放係數是1n\frac{1}{n}n1​。那麼如果需要對模型分別縮放再逐個求和,需要的計算次數是2n2n2n,而如果我們將其先求和再縮放,即∑xin=1n∑xi\sum \frac{x_i}{n}=\frac{1}{n}\sum x_i∑nxi​​=n1​∑xi​,計算次數變為n+1n+1n+1,減少了接近一半的計算量。在進行了這樣的優化之後,需要對模型進行對應的變換,這在第一次運算時會損耗一定的時間,但是之後的每一次操作都會從中受益。當然這是個小學級別的例子,實際運用不會是這麼簡單的情況。

Keras本質上就是TensorFlow的一個高級封裝,所以TensorFlow有的缺點它都有,但是封裝保證了它的便捷性,只需要不多的幾行就能完成模型的搭建,不過,靈活性較差,工業領域一般沒人用這個。

那麼,終於可以給出My Favorite了!

谷歌算法研究員:我為什麼鍾愛PyTorch?

PyTorch是Python+Torch的結果,其中Torch和numpy十分類似,所以這也是data scientist轉行AI的首選框架

。它以Python為主,與TensorFlow相比,對於GPU的接口更加友好,實乃學習工作必備之良藥。

相較於TensorFlow而言,PyTorch是一個動態的框架,不需要每次操作時使用相同的計算圖,這也就使得

谷歌算法研究員:我為什麼鍾愛PyTorch?

不過對於有一定基礎的同學,只要在電腦上安裝了anaconda,就可以直接通過

pip install torch

即可完成PyTorch的安裝工作,除此之外FAIR的大學霸們還貼心的幫我們完成了很多經典模型的搭建,都存在torchvision庫裡了,通過

pip install torchvision

即可完成。深度學習很多時候都像是搭積木,通過torchvision可以快速將已有的模型作為模塊添加到整體中。

如果使用OS系統進行具有CUDA支持的PyTorch安裝,則需要如下指令:

export CMAKE_PREFIX_PATH=[anaconda root directory]
conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing

接下來進行源碼安裝

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install

接下來就盡情享受PyTorch的快樂吧!!


最近有很多的老鐵跟我說:什麼時候分享人工智能的TensorFlow框架深度學習、CNN卷積神經網絡、解析幾何、線性代數等等技術點的文章。

這方面的學習資料我倒是整理出來了,但是發文章,我想說老鐵們我這要發到猴年馬月呀!每個人的 “口味” 都不一樣。怎麼可能做到面面俱到呢!!

給你們指引一個好的方向吧!你們想要的都有。。


分享到:


相關文章: