5行程式碼秀碾壓,比Keras還好用的fastai來了,嚐鮮PyTorch 1.0必備伴侶
在今天的F8(Facebook開發者大會)上,深度學習框架PyTorch 1.0 rc1版如期釋出。然而在海外的論壇上,另一個開源庫的關注度不遑多讓。
它就是fastai 1.0。
簡單來說,fastai只要 一個API ,就包含了所有常見的深度學習應用。堪稱實用版的“要你命3000”。而且許多效能指標,已經超越了Keras。
比如, 5行 程式碼完成Keras用 31行 才能解決的事情。同時,誤差表現也更好。難怪在Hacker News上,fastai的關注度比PyTorch 1.0還高……
而且fastai基於PyTorch 1.0框架,也被Facebook官方重點宣傳。這兩個全新的框架同時下載配合使用,療效更佳。
這個悠長假期,你不試試麼?
fastai 1.0
fastai的出品方是fast.ai,機構規模不大,但因為提供大量免費機器學習課程,而名聲在外。還有,fast.ai也是美國軍方的合作伙伴,研究如何加速人工智慧技術的發展。
只要一個API
據創始人Jeremy Howard介紹,fastai只要 一個API ,就包含了幾乎所有常見的深度學習應用。
用從前的庫,都需要給不同的應用調取相應的API,fastai是 第一個 用單個API就能支援各類應用的庫。
這樣一來,使用者就不需要記得五花八門的API呼叫方法了。用fastai搭建過 視覺模型 之後,可以用同一個的API再去搭建 自然語言處理 模型了。
在1.0釋出之前,fastai最初的版本在9月上線,一波早期使用者已經先行探索過這個年幼的庫,並有多位大佬表示好用:
這是Kaggle資深玩家Miguel Pérez Michaus,用fastai做的 風格遷移 成果。
作為一個“ 沒有正式計算機背景 ”的程式猿,他毫不吝惜自己對fastai 靈活性 的讚美:連我都能用。

GitHub的機器學習科學家Hamel Husain也用這個庫,做了一個GitHub語義程式碼的搜尋工具,還是半路從TensorFlow Hub換成fastai的。現在,搜尋工具已經上線了:
https://experiments.github.com/semantic-code-search
還有, OpenAI 小姐姐Christine Payne,最近做的一個專案叫Clara,是用神經網路生成音樂的AI。小姐姐說,如果沒有fastai的話, 速度 就得不到保障了。
5行程式碼就夠了
Howard說,團隊做過的研究,都嵌在這個框架裡了。所以,大家可以充分享受這些成果。
他用 貓狗識別 的來舉慄,那是遷移學習的經典案例,也是fast.ai的課程裡最受歡迎的章節之一。
在新的庫誕生之前,這樣的問題大多是在TensorFlow上面用Keras解決的。如今,Keras依然是fast.ai團隊仰慕的物件。
所以,團隊也想在貓狗大戰裡感受一下,自家的框架和Keras對比起來,競爭力究竟如何。
1data = data_from_imagefolder(Path('data/dogscats'),
2 ds_tfms=get_transforms(), tfms=imagenet_norm, size=224)
3learn = ConvLearner(data, tvm.resnet34, metrics=accuracy)
4learn.fit_one_cycle(6)
5learn.unfreeze()
6learn.fit_one_cycle(4, slice(1e-5,3e-4))
這5行程式碼,就是在fastai框架裡做ResNet50的 two-stage微調 ,需要的全部操作了。
而同樣的任務,Keras要用 31行 才能完成。
除了程式碼行數,fastai在兩個階段的 誤差也比Keras更小 。
雖然成績表十分驕人,Howard依然三番五次地表示,Keras始終是大神,整個團隊都是Keras的粉絲。
先去用用看?
現在,fastai框架已經在GitHub上線了。下載請至:
https://github.com/fastai/fastai
也可以在 谷歌雲 平臺上用啊。先開啟這個頁面:
https://cloud.google.com/deep-learning-vm/docs/images
然後,給你的示例安裝配置,再把fastai部署在PyTorch 1.0上。有了。
如果要在GPU驅動的Jupyter Notebook上執行fastai,也沒問題:
https://salamander.ai/
除此之外,還有一個好訊息。不久就會支援AWS了,可以期待一下。
PyTorch 1.0
接下來,說說也是最新發布的PyTorch 1.0。
去年1月,PyTorch首次釋出,目前下載已經超過100萬次。今年五月,Facebook副總裁賈揚清和CTO Mike Schroepfer透露,PyTorch 1.0即將推出。當時,Caffe2程式碼還併入了PyTorch。
PyTorch 1.0 rc1版傳送門:
https://github.com/pytorch/pytorch/releases
Facebook在官方部落格中,還對PyTorch 1.0 rc1版進行了詳細的介紹。
新框架有了一個全新的混合模式前端,支援tracing和scripting模型,從eager模式進入graph模式,從而彌合研發與生產部署之間的差距;一個經過改進的torch.distributed庫,能讓Python和C++環境中的訓練更快。
以及這個版本正式融合了PyTorch框架的靈活性與Caffe2的生產力。賈揚清此前給的總結就是:Caffe2 + PyTorch = PyTorch 1.0。
三大新功能
torch.jit
JIT是一組編譯工具,用於彌合PyTorch研究和生產之前的差距。其中包含一種名為Torch Script的語言(仍然使用Python編寫),還有兩種方法可以使現有的程式碼與JIT相容。
Torch Script程式碼可以積極優化,並且在序列化之後可以在新的C++ API中使用,這就完全不依賴Python了。
c10d庫
torch.distributed軟體包以及torch.nn.parallel.DistributedDataParallel模組,由新的c10d庫提供支援。主要亮點包括:
● c10d是效能來驅動的,並且對所有後端完全非同步操作
● 分散式資料並行效能顯著改進
● 在Gloomy後端增加send和recv支援
C++前端API
這個前端API被明確標記為還不穩定(Unstable)。官方預計將在未來一兩個月穩定下來,同時不排除發生其中某些部分發生重大變化。
這個C++前端是一個純C++介面後端是PyTorch,與此前的Python前後端體系結構一樣。這個API只在實現高效能、低延遲和裸機C++應用程式的研究。
以下是兩種語言前端的簡單比較。
其他
生態系統
Google雲、亞馬遜AWS、微軟Azure Machine Learning等國外的流行雲服務,現在與PyTorch更加相容。
Arm、Nvidia、高通、英特爾、IBM等廠商的,也增加了對PyTorch 1.0的支援。確保PyTorch可以在資料中心、邊緣硬體等不同領域得到應用。
根據官方訊息,目前Google和Facebook正在合作,為PyTorch使用者構建TPU。Google雲的Deep Learning VM服務,也將提供PyTorch 1.0映像。
教育培訓
Facebook透露正與Udacity合作,為開發者提供免費的深度學習入門課程,這些課程都基於PyTorch。此外,Facebook還將贊助300名開發者,完成Udacity的中級課程,這些課程也已經改為基於PyTorch 1.0。
當然,fast.ai的 ofollow,noindex">新課程 和深度學習庫,也是PyTorch在教育領域的合作成果。
原文釋出時間為:2018-10-3
本文作者:關注前沿科技