遷移學(xué)習(xí)的魔法:任何人都將能使用深度學(xué)習(xí)
一年前,我和幾個小伙伴一起開始在構(gòu)建機器學(xué)習(xí)API的開源平臺Cortex上工作。起初,我們假設(shè)所有用戶,包括所有把機器學(xué)習(xí)(ML)運用于生產(chǎn)的公司,都是擁有成熟數(shù)據(jù)科學(xué)團隊的大公司。
但我們大錯特錯了。
一年中,我們看見學(xué)生、獨立工程師以及小型團隊紛紛把模型投入生產(chǎn)。出乎意料,他們提供的通常都是最先進的大型深度學(xué)習(xí)模型,可用于日常應(yīng)用程序。一個兩人組成的團隊最近建立了一個500個GPU推理集群,以支持其應(yīng)用程序的1萬個并發(fā)用戶。
僅僅在不久之前,只有預(yù)算高、數(shù)據(jù)量大的公司才能做到這樣的事情?,F(xiàn)在,任何團隊都可以做到。這種轉(zhuǎn)變是多種因素共同作用的結(jié)果,但其中一個重要因素是遷移學(xué)習(xí)。
什么是遷移學(xué)習(xí)
廣義上講,遷移學(xué)習(xí)是指將經(jīng)過一項任務(wù)訓(xùn)練的深度神經(jīng)網(wǎng)絡(luò)的知識“遷移”到訓(xùn)練相關(guān)任務(wù)的另一個網(wǎng)絡(luò)的技術(shù)。例如,可以使用遷移學(xué)習(xí)來獲取用于對象檢測模型,然后使用少量數(shù)據(jù)對其進行“微調(diào)”來檢測更具體的事物。
這些技術(shù)之所以能起作用是因為深度神經(jīng)網(wǎng)絡(luò)的體系結(jié)構(gòu)。網(wǎng)絡(luò)的低層負責(zé)更多的基礎(chǔ)知識,而特定任務(wù)知識則通常在頂層:

圖源:Stanford
較低層訓(xùn)練完后,可以用少量數(shù)據(jù)微調(diào)較高的層。例如,對象檢測模型(比如說YOLOv4)進行微調(diào)后可以識別具有很小數(shù)據(jù)集的特定事物(例如車牌)。
在網(wǎng)絡(luò)之間遷移知識的技術(shù)各不相同,但不約而同的是,最近有許多新項目旨在簡化這個過程。例如,gpt-2-simple庫允許任何人微調(diào)GPT-2,還可以使用Python函數(shù)生成預(yù)測:https://gist.github.com/caleb-kaiser/dd40d16647b1e4cda7545837ea961272。
遷移學(xué)習(xí)是如何打通機器學(xué)習(xí)的
大部分團隊不會因為缺乏某類知識而無法使用機器學(xué)習(xí)。如果要構(gòu)建圖像分類器,有許多知名的模型可以使用,使用現(xiàn)代化框架會讓訓(xùn)練變得非常簡單。對于大多數(shù)團隊來說,機器學(xué)習(xí)因其成本因素所以從未被視為一個現(xiàn)實的選擇。
讓我們用OpenAI的(到目前為止)最佳語言模型GPT-2為例來說明。
如果使用公有云,單就估算GPT-2訓(xùn)練成本就已超過4萬美元,除了這一費用,GPT-2還需要訓(xùn)練40GB的文本內(nèi)容(保守估計超過2000萬頁),抓取和整理大量文本本身就是一個巨大的項目。這讓大多數(shù)團隊無法訓(xùn)練自己的GPT-2。
但如果只是對其進行微調(diào)呢?來看一個相關(guān)項目。
AI Dungeon是一款可自行選擇的冒險游戲,其風(fēng)格延續(xù)之前的命令游戲地牢爬行者。玩家通過輸入指令進行游戲,游戲通過推進冒險作為回應(yīng)。這款冒險游戲是由訓(xùn)練后的GPT-2模型編寫的,你可以編寫自己選擇的冒險文本:

AI Dungeon是由獨立工程師尼克·沃頓開發(fā)的,他利用gpt-2-simple和從chooseyourstory.com網(wǎng)站上提取的文本微調(diào)GPT。沃爾頓表示微調(diào)GPT-2需要30MB的文本和12小時左右的時間來訓(xùn)練DGX-1——大約花費了374.62美元,但做出來的產(chǎn)品效果和AWS的p3dn.24xlarge差不多。
也許大部分團隊只能對著4萬美元的云服務(wù)費和40GB的文本提取量望洋興嘆,但是375美元和30MB即便對小團隊來說也不成問題。
遷移學(xué)習(xí)的應(yīng)用領(lǐng)域超越了語言模型。在藥物發(fā)現(xiàn)中,通常沒有足夠的特定疾病數(shù)據(jù)來從零開始訓(xùn)練模型。DeepScreening是一個解決此類問題的免費平臺,它允許用戶上傳自己的數(shù)據(jù)庫和微調(diào)模型,然后利用該平臺來篩選可能會發(fā)生反應(yīng)的化合物庫。
圖源:unsplash
從零開始訓(xùn)練一個這樣的模型超出大多數(shù)研究人員的能力范圍,但是由于有了遷移學(xué)習(xí),突然間人人都可以做到。
新一代深度學(xué)習(xí)模型取決于遷移學(xué)習(xí)
必須強調(diào)的一點是,盡管筆者目前給出的例子都偏重經(jīng)濟效益,但遷移學(xué)習(xí)并不是小型團隊用來湊數(shù)的一個工具,所有團隊無論大小都在使用遷移學(xué)習(xí)來訓(xùn)練深度學(xué)習(xí)模型。事實上,一些新發(fā)布的模型都是專門針對遷移學(xué)習(xí)的。
還記得GPT-2首次發(fā)布時,因其原始內(nèi)存而霸占各大頭版頭條,我們以前從未聽說過有15億參數(shù)的模型。然而和GPT-3相比則是小巫見大巫了,后者參數(shù)量達到1750億。
除了OpenAI之外,幾乎沒有哪家公司能訓(xùn)練擁有1750億個參數(shù)的語言模型。即便是部署這么大的模型也存在諸多問題。OpenAI打破了他們發(fā)布開源的傳統(tǒng),預(yù)訓(xùn)練新模型版本,將GPT-3作為API發(fā)行—用戶可以使用自己的數(shù)據(jù)微調(diào)GPT-3。
換句話說,GPT-3的龐大讓遷移學(xué)習(xí)不再是訓(xùn)練新任務(wù)的一個經(jīng)濟實惠的方法,而是唯一可行的方法。
遷移學(xué)習(xí)優(yōu)先方法已經(jīng)變得越來越普遍。Google剛剛發(fā)布的Big Transfer是一個先進計算機視覺模型開源存儲庫。盡管計算機視覺模型通常要比語言模型小,但它們已經(jīng)開始追趕了——預(yù)訓(xùn)練過的ResNet-152x4接受了1400萬張圖像的訓(xùn)練,容量為4.1 GB。
顧名思義,Big Transfer旨在鼓勵利用這些模型來使用轉(zhuǎn)移學(xué)習(xí)。作為存儲庫的一部分,Google還提供了可以輕松微調(diào)每個模型的代碼。正如下圖所示,模型容量會隨著時間不斷增大(GPT-3會將圖表的大小增加10倍):

圖源:Microsoft
如果這種趨勢持續(xù)下去(沒有跡象表明這種趨勢不會持續(xù)),那么遷移學(xué)習(xí)將成為團隊使用前沿深度學(xué)習(xí)的主要方式。
隨著模型變得越來越大,遷移學(xué)習(xí)使得每個團隊都能使用這些模型,投入生產(chǎn)的大型深度學(xué)習(xí)模型的數(shù)量猛增。訓(xùn)練這些模型是一個挑戰(zhàn)——它們需要大量空間和內(nèi)存來進行推理,而且通常無法一次處理多個請求。
圖源:unsplash
因為這些模型(GPU / ASIC推斷,基于請求的彈性伸縮,spot實例支持),我們已經(jīng)給Cortex引入了幾個主要功能,并且隨著模型的擴大,我們將不斷添加新的功能。
然而,與讓世界上每個工程師都可以使用最先進的深度學(xué)習(xí)解決問題的潛力相比,基礎(chǔ)架構(gòu)挑戰(zhàn)性的難度微不足道。人人可使用的深度學(xué)習(xí),已經(jīng)觸手可及。


























