如果你正在學習深度學習,也許你已經知道 fastai 這個詞。這是一個深度學習社區,由Jeremy Howard發起,此公是麥肯錫咨詢公司的第一位數據科學家,同時也是Kaggle的聯合發起人。同時,fastai也是一個基於Pytorch的封裝包,有點兒類似深度學習領域的sklearn,提供了很多神經網絡的封裝,並且包含了一套非常不錯的默認超參數。
如果你第一次聽說fastai,非常推薦你去他們的官網看看,把環境搭建好,然后學起來吧。這里先給出網址,但是還是希望你先看完下面的內容再過去。
https://www.fast.ai/
那么,為什么這么多人學習fastai的課程呢?根據我自己的學習體驗,大致有以下這么幾點:
- 這個課程采用自頂向下的方法。上手直接帶你調包,先搭建出一個非常優秀的圖片分類器,讓你直接體會到ResNet是怎么使用的。然后在Part 2課程中才會談到一些黑盒內的東西。
- 這個課程有非常活躍的社群,你可以在里面盡情提問,閱讀別人發起的問答。總之,你遇到的問題一般都有同道中人幫你解答,有時候Jeremy自己也會回復。
- 這套系列課程有深度學習、機器學習、NLP、線性代數。后續肯定還會有課程上線。所有課程都免費。
當然,這套課程也不是沒有缺點的,根據我自己的學習體驗,大致也有以下這么幾點:
- 混亂。這是我第一次訪問fastai官網的感受。各個課程都有多個版本,而且社群論壇里的帖子驚人的多,給人的感覺就是混亂。
- 環境搭建不容易,經常出現:你按照指引,吭哧吭哧弄好環境,打開jupyter notebook運行導入fastai這個包作驗證時,彈出找不到這個包。非常令人沮喪,導致后面的課程無法進行。
- fastai這個框架封裝的太狠了,基本沒給用戶留什么自主性。
但是,在學習一段時間后,我針對上面三個缺點逐一答對:
- 確實混亂,需要自己耐着性子去理清。舉例子:深度學習課程分為part 1 和part 2。part 1 就是純粹的講怎么使用fastai去快速上手深度學習,去實際做點東西出來,完成CV和NLP任務;part 2 則會深入一點,會帶領大家看看fastai這個框架是怎么設計的,背后用到的深度學習的一些原理是怎樣的。這是橫向的分別。縱向分別有v1,v2,v3,分別是2017、2018、2019三個版本,其中2017版本用的是keras,2018之后用的是pytorch。目前主流的學習使用的是2018這版,當然2019版本也已經上線,bilibili上有授權翻譯版視頻。
- linux上搭建fastai相對要容易一些,但是linux自有其他不合適使用的問題。比如筆者這樣,自己組裝了一個主機,買的RTX 2070 super顯卡的用戶,肯定是不會去使用雲服務器(太貴啦),但是又不可能直接安裝Linux系統,那樣日常沒法使用。在windows上安裝fastai則成為“剛需”,這篇隨筆要記錄的就是這個事情。
- 因為是自頂向下的學習路線,決定了這套課程不會講得太深入,用的工具也必須要開箱即用的。筆者自己也曾想自底向上去學習機器學習、深度學習。但是筆者不是科班方面的博士,只是一個數據工程師,學習的目的是快速掌握數據挖掘中用到的技術。如果一直在打基礎,結局只能是學而不用則惘。所以,學習完fastai的所有課程之后,才是我們自己真正開始研究底層原理的正確時機。
介紹性的談話就到這里打住,更多的信息請大家去fastai的論壇里面盡情閱讀,地址是 https://forums.fast.ai/top/all
下面開始介紹如何在 win10 系統上搭建環境,win7系統應該相差無幾。
-
獲取超級管理員權限(具體操作請自行谷歌)
-
安裝 Anaconda(具體操作請自行谷歌)
-
安裝 Cmder(具體操作請自行谷歌)
-
打開cmder,切換到你想放置fastai的目錄,運行下列命令:
- git clone https://github.com/fastai/fastai.git
- cd fastai
- conda env update (這一步會使用fastai目錄里的environment.yaml幫你創建一個名為fastai的虛擬環境;建議將文件里的pytorch版本設置為1.0.0)
- conda activate fastai
- jupyter nbextension enable --py widgetsnbextension --sys-prefix
- cd courses\dl1 (你要學習哪個課程就去哪個目錄,如果要學習機器學習,就應去 courses\ml)
- rm -rf fastai (也有可能你的文件夾里沒有這個目錄,跳過即可)
- mklink /d fastai ..\..\old\fastai
- cd ..\..
- jupyter notebook
-
到這里,環境就搭建好了,下面還需要下載fastai的模型,否則你在學習時會發現無法建立神經網絡訓練器
- 下載 http://files.fast.ai/models/weights.tgz
- 將它解壓到 courses\dl1\目錄下
- 對應的數據從這里下載 http://files.fast.ai/data/ ,對應的notebook里也會提示數據來自哪里
-
如果在跑模型過程中遇到 CUDNN_STATUS_EXECUTION_FAILED 問題,檢查下是否cuda版本和顯卡不適配。例如筆者的顯卡是RTX 2070,使用的cuda版本必須是10.0以上。同時注意,cudnn101 需要python版本在3.7以上,而Python3.7是不包含ssl模塊的,這就會導致你圍繞python3.7搭建好pytorch環境后,嘗試打開jupyter notebook時會報錯: import _ssl DLL error。需要手動安裝ssl包,命令是
conda install openssl
,成功安裝后關閉命令行工具后重新打開,就可以正常使用jupyter notebook了。 -
如果跑模型過程中提示顯卡內存不夠分配了,可以把每個batch的規模調小一點,用時間換取空間。
祝大家學習順利,今天是2020年1月1日,新的10年開始了,祝無怨無悔。