經歷了長久的等待之後,深度學習框架 fast.ai 2.0 版本終於正式發布了。
fast.ai 課程,是為了踐行 Jeremy Howard 「讓深度學習不再酷」的承諾。這話的意思是也消除掉門檻,讓更多沒有高等數學和統計專業基礎的人,都有機會來了解和應用深度學習。關於這個事兒,我在《如何從零基礎學最前沿的 Python 深度學習?》一文中,給你介紹過。
課程的第一個輪次,使用的是 Keras 作為框架講解。這在當時是個不錯的選項。因為比起當時存在的各種深度學習框架,Keras 是其中最為簡單易學的。我也不止一次,在教程裡面給你推薦過 Keras 作者 François Chollet 的配套教材。
但是很快,Jeremy Howard 就發現了 Keras 存在的問題。這個框架提供的 API 雖然簡單,但是如果用戶希望進行深度定製,會比較費勁。因為一旦嘗試定製,就必然需要調用後端框架。而 Keras 的後端框架是 Tensorflow (當時還是1.x 版本)。Tensorflow 在當時幾乎是以「用戶不友好」著稱。
可是 Keras 明明已經提供了深度學習的模型建構、訓練、調試等功能,為什麼用戶還需要定製呢?這是因為 fast.ai 並不是一門 101 課程。Jeremy 不會認為只教你調用軟體包,做個 "hello world!" 就滿足了教學的目標。相反,他總是希望把最前沿的東西融入課堂。
例如文本深度遷移學習 ULMfit,在當時的理念上,著實是劃時代的。可以說,後面 BERT 和一系列的 Transformers 架構,都從中吸取了不少有益的特點。
這麼重要的一個架構,別人肯定是先把論文發了,然後再找時間看要不要在課上講解。Jeremy 不是。他先在課程中對 ULMfit 做了介紹,讓學生們第一時間嘗試這種新的語言模型,然後才受邀發了論文。ULMfit 裡面採用了一種「差序訓練速率」(discriminative learning rate),即對於不同層次,訓練速率都不同。這種對於模型架構的深度修改,沒有可擴展定製能力,顯然是不行的。
因為用 Keras 不順手,Jeremy 做出了一個決定:
一開始, Jeremy 是打算基於 Tensorflow 來做的。在準備迭代第二次課程的時候,PyTorch 的出現讓他眼前一亮。PyTorch 的 API 更加簡潔,一致性更強,用戶友好程度比起 Tensorflow 1.x 要好很多。於是 Jeremy 修改了方案,基於 PyTorch 開發前端 API ,名字就叫做 fast.ai 。
這個框架當時是為了上課用的。一邊備課一邊編寫,所以開發的時候非常緊迫。甚至導致他晚上上課,下午還在調代碼。進度趕得真叫一個驚心動魄。
好在,儘管過程磕磕碰碰,Jeremy 總算沒有因為 fast.ai 的開發進度耽誤上課。這一框架受到了初學者與研究界廣泛的好評。這好評主要包括兩個方面:
首先是低門檻。fast.ai 把一切能自動化完成的過程全都包裹了起來。這種簡便性,使得你只要看得懂函數名稱,就大致會用了。而且還有完整的課程,從頭教起。遇到問題,論壇上的回答氛圍也很活躍。
其次是高天花板。簡單並不一定意味著能力弱。fast.ai 不斷融合吸收大量深度學習領域前沿技術。例如數據增強、模型解釋等。
2019 年春天,fast.ai 課程進階部分第三次迭代。我原本以為這次的迭代,是提供了新的功能講解,或者更深度和前沿的應用樣例。但是沒有。Jeremy 嘗試帶著學生們從頭去實現框架的功能。
這個工作,我覺得很有意義。對一個框架從源頭掌握起來,學會怎麼從底層的 PyTorch 構建 fast.ai API ,對學生深刻理解深度學習的基礎知識,大有裨益。但這並不是全部。我發現 Jeremy 確實對於第二輪迭代的時候,因為趕工期做出的代碼耿耿於懷。我知道,一次大版本升級,甚至是重構快要開始了。
與更新的框架代碼同時推出的,還有一系列的配套產品。
這次的課程,包括了 8 講。利用 fast.ai v2.0 新的 API,把深度學習的各個領域應用橫掃了一遍,內容覆蓋相當全面了。基本上你把這門課學完,別人再想用深度學習中的概念來蒙你,就很難了。甚至,你可能在參加學術報告的時候,發現某些人把深度學習方法完全用錯了。
以前 Jeremy 的 fast.ai 課程,都是把課堂錄像,放到網上。這種形式的壞處,是你時刻都知道,Jeremy 不是在給你自己講課。代入感不夠強,不容易保持專注。
當書的第二作者 Sylvain Gugger 在網上宣布這個消息的時候,人們沸騰了。
短短幾個小時的時間,點讚數量已經超過 700,而且獲得了將近 70 次的轉推。這就是奔走相告啊。
我立即在亞馬遜 kindle 商店下單,買了一本。
從目錄來看,講的內容比課程更系統全面。而且節奏可以由學習者自行把握,也便於檢索內容。
不過,你不要急著下單。因為 fast.ai 給你提供了一項福利:
該版本包含了全書的圖文內容和代碼,採用了 Jupyter Notebook 形式存儲。
我跟 kindle 版本對照一下,內容沒有區別。而且使用 Jupyter Notebook 版本學習,你還能直接復用其中的代碼。
你想學這本書的內容,根本就不用花錢。是不是很慷慨?不過如果有實力的話,建議你買書支持一下作者。畢竟,一項事業僅僅依靠熱情,而沒有經濟基礎支撐,是無法長期維持的。
fast.ai 還發布了一篇學術論文,講這次改進後的 API 層級架構。如果你想從專業的角度了解新框架的設計思路,這篇論文值得認真閱讀。
另外如果你在自己的研究中使用了 fast.ai v2 框架,別忘了引用該論文。這也算對作者貢獻的肯定與回饋吧。上面介紹的相關資源連結,請在公眾號後臺回復「fv2」獲取。
感覺有用的話,請點「在看」,並且把它轉發給你身邊有需要的朋友。
我的視頻號已經上線,發布了教程和經驗分享視頻,歡迎關注。
訂閱我的微信公眾號「玉樹芝蘭」,第一時間免費收到文章更新。別忘了加星標,以免錯過新推送提示。
如果你希望能與其他熱愛學習的小夥伴一起討論切磋,答疑解惑,歡迎加入知識星球。