在日常生活讓 AI 幫忙完成一些任務,已經不是新鮮事。智能音箱裏的 AI,可以告訴你“明天天氣怎麼樣”;翻譯軟件裏的 AI,能準確翻譯一大段話甚至一篇文章;寫作 AI 則會輸出作文。
但它們都只能幹一件事,翻譯的 AI 寫不了作文,問答的 AI 也不會翻譯。它們更像一個個工具,而不是一個智能體。一個真正智能的 AI 應該是什麼樣的?它應該是通用的,既可以對付問答、寫文章,也能搞定翻譯。
最近在硅谷大火的 GPT-3,就是這麼一個 AI。問答、寫文、翻譯都不在話下,還能寫代碼、算公式、做表格、畫圖標。
本質上,GPT-3 其實是一個語言模型。所謂語言模型,就是讓機器理解並預測人類語言的一項技術。如果説以前的語言模型是專才,那 GPT-3 就是一個通才,而且樣樣都幹得還不錯。
當我們仔細回顧和梳理它的誕生故事會發現,AI 領域的一個明顯趨勢正在浮出水面:要訓練一個有顛覆性進步的模型,最終比拼的是數據量和算力規模,這意味着這個行業的門檻越來越高,最終可能導致 AI 技術的競爭變成少數“燒得起錢”的大公司之間的遊戲。
預訓練築起數量門檻GPT-3的故事要從2018年説起。
2018 年初,艾倫人工智能研究所和華盛頓大學的研究人員提出了 ELMo(Embedding from Language Models)模型。這之前的模型,無法理解上下文,不能根據語境去判斷一個多義詞的正確含義,ELMo 第一次解決了這個問題。
在訓練 ELMo 模型過程中,研究人員採用了一種關鍵的方法——預訓練。通常,訓練一個模型需要大量經過人工標註的數據。而在標註數據很少的情況下,訓練出來的模型精度很差。
預訓練則擺脱了對標註數據的依賴,用大量沒有標註的語料去訓練(即無監督學習),得到一套模型參數,再把這套模型參數應用於具體任務上。這種模式訓練出來的語言模型被證明了,在自然語言處理(以下簡稱 NLP)任務中能實現很好的效果。可以説,預訓練這種方式的成功,開創了自然語言研究的新範式。
2018 年 6 月,在 ELMo 基礎上,OpenAI 提出了 GPT。GPT 全稱 Generative Pre-training,字面意思是“生成式預訓練”。
GPT 同樣基於預訓練模式,但和 ELMo 不同的是,它加入了第二階段訓練:精調(Fine-tuning,又稱“微調”),開創了“預訓練+精調”的先河。所謂精調,即在第一階段訓練好的模型基礎上,使用少量標註語料,針對具體的 NLP 任務來做調整(即有監督學習)。
除了開創“預訓練+精調”模式,GPT 還在特徵提取器上採用更加強大的 Transformer。所謂特徵提取器,就是用來提取語義特徵的。Google 在 2017 年推出的 Transformer,比 ELMo 所用的特徵提取器 RNN,在綜合效果和速度方面有優勢。並且,數據量越大,越能凸顯出 Transformer 的優點。
GPT 在預訓練階段設計了 12 層 Transformer(層數越多規模越大),並且使用“單向語言模型”作為訓練任務。上文説到,ELMo 模型能理解上下文,上文和下文的信息都被充分利用。而 GPT 和之後的迭代版本,堅持用單向語言模型,只使用上文信息。
GPT 的設計思路奠定了此後迭代的基礎,但由於它的規模和效果沒有很出眾,風頭很快被 2018 年底亮相的 BERT 所蓋過。
BERT 由 Google 打造,刷新 11 項 NLP 任務的最好水平,顛覆了整個 NLP 領域。BERT 的成功其實有 GPT 功勞,它們大框架上基本相同,都採用“預訓練+精調”模式。差異的地方在於,GPT 是單向語言模型,而 BERT 採用雙向語言模型。
BERT 雖然取得了巨大成功,但它有兩個缺點。其一,雖然採用無監督學習和有監督學習結合(即“預訓練+精調”)的模式,但還是少不了特定領域一定量的標註數據。其二,因為領域標註數據有限,會導致 BERT 模型過擬合(模型過於死板,只適用於訓練數據),難以應用到其他領域,即通用能力不足。
2019 年 2 月亮相的 GPT-2,解決了 BERT 的短板。為了擺脱對標註數據的依賴,OpenAI 在設計 GPT-2 模型時,基本上採用無監督學習(即預訓練),減小了精調階段有監督學習的比重,嘗試在一些任務上不進行精調。
其次,為了增強通用性,OpenAI 選取了範圍更廣、質量更高的數據,用 800 萬個互聯網網頁的語料(大小 40 GB)去訓練,幾乎覆蓋所有領域。此外,OpenAI 還加大了 GPT-2 模型的規模,把參數增加到 15 億,是 GPT(1.17 億個參數)的 10 倍,是 BERT-Large(BERT 一個規模較大的版本,有 3 億個參數)的 5 倍。
GPT-2 亮相後,很快吸引了整個 NLP 領域的目光。它在做具體 NLP 任務時(如問答、翻譯和摘要),用的都是預訓練階段的模型,都能比較好的完成這些任務。特別是給定短文續寫文章方面,表現十分出色。
沿着大規模預訓練的思路,OpenAI 繼續“大水漫灌”,用更多無標註數據、更多參數和更多算力去訓練模型,終於在 2020 年 5 月推出了 GPT-3。7 月,又開發了 API(應用程序接口),讓更多開發者可以調用 GPT-3 的預訓練模型,徹底引爆了整個 NLP 圈。
堆人、堆算力規模從 GPT-1 的“平平無奇”到 GPT-3 的突破,充分體現了什麼叫“大力出奇跡”。
首先看人力。初代 GPT 的論文只有四位作者,GPT-2 論文有六位作者。到了 GPT-3,論文作者猛增為 31 位。
並且,這 31 位作者分工明確,有人負責訓練模型,有人負責收集和過濾數據,有人負責實施具體的自然語言任務,有人負責開發更快的 GPU 內核,跟公司不同部門間合作沒啥區別。
再看看算力。從初代 GPT 到 GPT-3,算法模型基本沒有變化,都是基於 Transformer 做預訓練,但訓練數據量和模型規模十倍、千倍地增長。相應地,所需要的算力也越來越誇張。初代 GPT 在 8 個 GPU 上訓練一個月就行,而 GPT-2 需要在 256 個 Google Cloud TPU v3 上訓練(256 美元每小時),訓練時長未知。
到 GPT-3,算力費用已經是千萬級別。據 GPT-3 的論文,所有模型都是在高帶寬集羣中的英偉達 V100 GPU 上訓練的,訓練費用預估為 1200 萬美元。
甚至,由於成本過於地高,研究者在發現了一個 Bug 的情況下,沒有選擇再去訓練一次,而是把涉及的部分排除在論文之外。
顯然,沒有強大的算力(其實相當於財力)支持,GPT-3 根本不可能被訓練出來。那麼,OpenAI 的算力支持源自何處?這要説回到一筆投資。2019 年 7 月,微軟向 OpenAI 注資 10 億美元。雙方協定,微軟給 OpenAI 提供算力支持,而 OpenAI 則將部分 AI 知識產權授權給微軟進行商業化。
2020 年 5 月,微軟推出了一台專門為 OpenAI 設計的超級計算機。它託管在 Azure 上,包含超過 28.5 萬個處理器內核和 1 萬塊 GPU,每個顯卡服務器的連接速度為 400 Gbps/s。它的性能在超級計算機排名中,可以排到前五。
最後,再來説説 OpenAI 這家機構。埃隆・馬斯克和原 Y Combinator 總裁山姆·奧特曼主導成立於 2015 年的 OpenAI,原本是一個純粹的非營利 AI 研究組織,但經過一次轉型和架構調整,加上引入微軟投資,現在已經成為混合了營利與非營利性質的企業。
一直以來,OpenAI 的目標都是創建“通用人工智能”(Artificial General Intelligence,簡稱AGI),就好像文章開頭所説的,AGI 是一個可以勝任所有智力任務的 AI。
打造 AGI 的路徑有兩種,一種是開發出更加強大的算法,另一種是在現有算法基礎上進行規模化。OpenAI 就是第二種路徑的信仰者。2019 年,OpenAI 核算了自 2012 年來所有模型所用的計算量,包括 AlexNet 和 AlphaGo,發現最大規模 AI 模型所需算力,已經增長了 30 萬倍,每 3.4 個月翻一番。而摩爾定律指出,芯片性能翻倍週期是 18–24 個月。這就意味着,最大規模 AI 模型對算力需求的增長,遠超芯片性能的提升。
毫無疑問,算力已經成為 NLP 研究甚至 AI 研究的壁壘。知乎用户“李漁”説得好:GPT-3 僅僅只是一個開始,隨着這類工作的常態化開展,類似 OpenAI 的機構很可能形成系統性的 AI 技術壟斷。