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

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

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

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