熱點(diǎn) | 大三學(xué)生獨(dú)自破解逆天AI模型
本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
GPT-2,一個(gè)逆天的 AI。
今年 2 月,OpenAI 首次對(duì)外公布了這個(gè)模型的存在。GPT-2 寫(xiě)起文章來(lái)文思泉涌毫無(wú)違和感,無(wú)需針對(duì)性訓(xùn)練就能橫掃各種特定領(lǐng)域的語(yǔ)言建模任務(wù),還具備閱讀理解、問(wèn)答、生成文章摘要、翻譯等等能力。
但不同尋常的是,這個(gè)模型并沒(méi)有真的開(kāi)源。OpenAI 給的解釋是,它太過(guò)強(qiáng)大,我們不敢放出完整模型……盡管因此被外界嘲笑,但 GPT-2 仍然封閉至今。
現(xiàn)在,有人單槍匹馬,破解了 OpenAI 不欲人知的秘密。
而且,是一個(gè)大三的學(xué)生。
來(lái)自慕尼黑工業(yè)大學(xué)的 Connor Leahy 同學(xué),在兩個(gè)月的時(shí)間里,付出了 200 個(gè)小時(shí)的時(shí)間,花費(fèi)了大約 6000 人民幣,復(fù)現(xiàn)了 GPT-2 項(xiàng)目。
這件事在推特上引發(fā)了眾多關(guān)注。稱(chēng)贊 Awesome 的有之,深入討論的有之,甚至連 OpenAI 的幾位資深研究員,都趕來(lái)溝通。
另外讓人佩服的是,Connor Leahy 同學(xué)關(guān)于機(jī)器學(xué)習(xí)的知識(shí),都是利用空閑時(shí)間自學(xué)而成。他形容自己是一個(gè)充滿好奇心的本科生。
“我只是把別人出去撩妹的時(shí)間,用來(lái)搞 AI 實(shí)驗(yàn)了而已。”
一氣之下
GPT-2 是 OpenAI 最棒的研究成果。
這個(gè)模型是 GPT 的“進(jìn)化版”,最大區(qū)別就在于規(guī)模大小。GPT-2 參數(shù)達(dá)到了 15 億個(gè),使用了包含 800 萬(wàn)個(gè)網(wǎng)頁(yè)的數(shù)據(jù)集來(lái)訓(xùn)練,共有 40GB。
使用語(yǔ)言建模作為訓(xùn)練信號(hào),以無(wú)監(jiān)督的方式在大型數(shù)據(jù)集上訓(xùn)練一個(gè) Transformer,然后在更小的監(jiān)督數(shù)據(jù)集上微調(diào)這個(gè)模型,以幫助它解決特定任務(wù)。
GPT 模型
OpenAI 的研究人員表示,在各種特定領(lǐng)域數(shù)據(jù)集的語(yǔ)言建模測(cè)試中,GPT-2 都取得了優(yōu)異的分?jǐn)?shù)。作為一個(gè)沒(méi)有經(jīng)過(guò)任何領(lǐng)域數(shù)據(jù)專(zhuān)門(mén)訓(xùn)練的模型,它的表現(xiàn),比那些專(zhuān)為特定領(lǐng)域打造的模型還要好。
除了能用于語(yǔ)言建模,GPT-2 在問(wèn)答、閱讀理解、摘要生成、翻譯等等任務(wù)上,無(wú)需微調(diào)就能取得非常好的成績(jī)。
GPT-2 發(fā)布后,深度學(xué)習(xí)之父 Hinton 獻(xiàn)出了他注冊(cè) Twitter 以來(lái)的第三次評(píng)論:“這應(yīng)該能讓硅谷的獨(dú)角獸們生成更好的英語(yǔ)了。”
關(guān)于這個(gè)模型的強(qiáng)大表現(xiàn),可以參考量子位之前的報(bào)道,這里不再贅述。
總之,就是一個(gè)字:強(qiáng)。
就是因?yàn)閺?qiáng),OpenAI 做了一個(gè)艱難的決定:不把完整的模型放出來(lái)給大家。他們先是放出了不到十分之一規(guī)模、1.17 億個(gè)參數(shù)的小型版本,被吐槽幾個(gè)月后又放出了 3.45 億參數(shù)的中型版本。
毫無(wú)疑問(wèn),GPT-2 激發(fā)了 Connor Leahy 同學(xué)的好奇心,同時(shí),OpenAI 私藏這個(gè)模型的決定,也讓他非常生氣。“信息應(yīng)該是自由的。”
于是他決定自己動(dòng)手復(fù)現(xiàn)出來(lái)。
他不只是因?yàn)橐粫r(shí)沖動(dòng)。對(duì)于為什么要復(fù)現(xiàn) GPT-2,Connor Leahy 同學(xué)在自己的博客里有長(zhǎng)長(zhǎng)的思考,其中包括與其害怕 AI 編造的假新聞,不如積極行動(dòng)起來(lái),讓大家意識(shí)到這個(gè)問(wèn)題,勇敢面對(duì)然后想辦法解決。
當(dāng)然還有另一個(gè)原因,他覺(jué)得這么做:
很酷。
復(fù)現(xiàn)版 GPT-2
“你怎么知道自己成功復(fù)現(xiàn)了 15 億參數(shù)的 GPT-2 模型?”
這個(gè)問(wèn)題,恐怕絕大多數(shù)人都想知道答案。
Connor Leahy 同學(xué)給出的回應(yīng)是:兩個(gè)模型的大小和參數(shù)量相同,基于相似的數(shù)據(jù)源訓(xùn)練,使用了類(lèi)似的計(jì)算資源,而且輸出結(jié)果質(zhì)量相仿。
他也給出了兩者的一些明確不同,比方:
1、dropout 和 learning rate 官方?jīng)]有披露,所以設(shè)置可能不一樣。
2、模型訓(xùn)練使用了 Adafactor 而不是 Adam。Connor Leahy 同學(xué)不知道怎么把 15 億參數(shù) +Adam 塞進(jìn) TPU,即便 16bit 精度也不行。
哎?等下……
一個(gè)普普通通的大三學(xué)生,怎么能用到 TPU 搞這種研究?
感謝 Google。
Google 有一個(gè) Tensorflow Research Cloud(TFRC)計(jì)劃。這個(gè)計(jì)劃面向研究人員,提供 1000 個(gè) Cloud TPU 組成的集群,完全免費(fèi)。這個(gè)計(jì)劃用于支持多種需要大量計(jì)算并且無(wú)法通過(guò)其他途徑實(shí)現(xiàn)的研究項(xiàng)目。
當(dāng)時(shí) Connor Leahy 同學(xué)在研究 GPT-2 復(fù)現(xiàn)的時(shí)候,遇到了計(jì)算資源的瓶頸,然后隨口跟 TFRC 團(tuán)隊(duì)提了一嘴,結(jié)果卻得到了 Google 慷慨的支持。
實(shí)際上,在推進(jìn)這個(gè)項(xiàng)目之前,Connor Leahy 同學(xué)從來(lái)沒(méi)有使用過(guò) TPU。所以,他在博客中熱情的對(duì) Google 團(tuán)隊(duì)表達(dá)了感謝。
不過(guò),他還是在云端花費(fèi)了大約 600-800 歐元(人民幣 6000 元左右),用于創(chuàng)建數(shù)據(jù)集、測(cè)試代碼和運(yùn)行實(shí)驗(yàn)。
他用的筆記本是一臺(tái)舊的 ThinkPad。
Connor Leahy 同學(xué)還對(duì)降噪耳機(jī)表達(dá)了感謝:讓我保持寧?kù)o。
目前,復(fù)現(xiàn)版的 GPT-2 已經(jīng)放在 GitHub 上開(kāi)源,代碼可以在 GPU、TPU 以及 CPU 上跑(不建議)。現(xiàn)在作者放出了兩個(gè)版本,一個(gè)是 1.17 億參數(shù)的小型版本,一個(gè)是稱(chēng)為 PrettyBig 的版本,比 3.45 億參數(shù)的官方中型版稍大一點(diǎn),也是目前公開(kāi)的最大 GPT-2 模型。
至于 15 億參數(shù)的完整版,作者計(jì)劃 7 月 1 日發(fā)布。
現(xiàn)階段,Connor Leahy 同學(xué)邀請(qǐng)大家下載試用,跟他一起討論復(fù)現(xiàn)版 GPT-2 到底還有什改進(jìn)空間。在關(guān)于這件的博客文章里,他說(shuō):我 100% 能接受大家指出的任何錯(cuò)誤,如果你發(fā)現(xiàn)問(wèn)題請(qǐng)與我聯(lián)系。
關(guān)于作者和傳送門(mén)
Connor Leahy 同學(xué) 2017 年考入德國(guó)慕尼黑工業(yè)大學(xué),目前是一名大三的計(jì)算機(jī)本科學(xué)生。在 LinkedIn 上,他說(shuō)自己對(duì)人工智能充滿熱情。
從 2018 年 9 月迄今,他還在馬克思普朗克研究所實(shí)習(xí),也在用來(lái)自 Google 的 TPU,研究正經(jīng)的 AI 課題。
最后,放一下傳送門(mén)。
Connor Leahy 同學(xué)充滿思考的博客:
https://medium.com/@NPCollapse/gpt2-counting-consciousness-and-the-curious-hacker-323c6639a3a8
與他在 GitHub 相見(jiàn)吧:
https://github.com/ConnorJL/GPT2