15億參數的GPT-2被兩個CS碩士複製出來了,沒有語言建模經驗,花了5萬美元
機器之心報道
參與:杜偉、張倩
前幾天,OpenAI 發布了 7.74 億參數量的新一版 GPT-2,並表示將在幾個月之內發布 15.58 億參數量的完整版本。但還沒等到完整版官宣,有人就已經等不及了,索性自己動手複製了一個 15 億參數量的 GPT-2,並將其命名為 OpenGPT-2。項目作者是來自布朗大學的兩位碩士研究生,他們複製 GPT-2 的花費大約是 5 萬美元。
項目的兩位作者:Aaron Gokaslan和Vanya Cohen 。
讀者可以在 Google Colab 上訪問該模型並生成文本。
Google Colab 地址:https://colab.research.google.com/drive/1esbpDOorf7DQJV8GXWON24c-EQrSKOit
模型權重:https://drive.google.com/drive/u/0/folders/1KfK5MXtvgH8C615UUZoKPIUVJYIdJxX1
作者表示,複製 GPT-2 沒有那麼難,論文中的很多結果都是他們兩人可以複製的,並且二人並沒有語言建模的經驗。所以,只要你感興趣(壕),你也能自己複製一份。
複製方法和成本
OpenGPT-2 的實現基於 Grover 模型,通過修改它們的代碼庫來達到 GPT-2 的語言建模訓練目標。由於 Grover 模型是在類似的大型語料庫上進行訓練,所以很多代碼和超參數很容易重複使用。他們也沒有對 Grover 的超參數進行大量修改。
至於成本嘛,他們使用自己的代碼從零開始訓練 GPT-2 模型大約花費了 5 萬美元。但需要注意的是,5 萬美元只是雲計算的估算成本,沒有包含更細微的內在成本(在其他效率更低的易用計算資源上訓練模型的效果會更差)。
數據集
OpenAI GPT-2 的原始論文中有對清理數據集的詳解。在該論文中,Open AI 的研究人員用到了一個名為 WebText 的數據集,其中包含數百萬個網頁。
論文地址:https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
如 WebText 一樣,本文中的兩位研究者首先解析 Reddit 上 3 個 up-vote 以上的所有鏈接。同時,他們利用了 Pushshift Reddit scrape 數據集,該數據集集合了持續更新的 Reddit 帖子、評論和有關元數據。然後,作者對這些鏈接進行過濾,刪除那些不太可能包含有用文本或 HTML 的文件類型(即視頻文件、PDF 和 CSS 格式文件)的直接鏈接。
此外,作者還過濾了網頁,以刪除被各種評估基準和數據集所使用的 Wikipedia 內容。他們並不能確定自己的過濾方法是否符合 OpenAI 的標準。因此,他們使用 Newspaper Python 庫從 HTML 網頁上提取文本,然後使用 fastText Python 庫只過濾掉英文文本。
具體來說,作者使用了 WhatTheLang python Wrapper。他們利用局部敏感哈希(locally sensitive hashing,LSH)刪除這些文檔。最後,他們將這些文檔散列到了 5-gram 的集合中,並刪除了相似度閾值大於 0.5 的所有文檔。
作者還從數據集中刪除了 token 數少於 128 的文檔。這些短文檔往往質量較低。作者將這一數據集作為 OpenWebTextCorpus 發布。
數據集鏈接:https://skylion007.github.io/OpenWebTextCorpus/
在編碼數據集時,作者使用了 Radford 等人發布的適用於小模型的 Binary Pattern 編碼器。他們還利用 OpenWebText 網頁爬取代碼庫的修訂版作為自身數據集集合的起始點。
從公開發布的 WebText 的 26 萬篇文檔的集合來看,作者發現所有文檔的雙位元組編碼(BPE)長度最小為 40,最大為 1024。而 OpenWebText 的不同之處在於作者將文檔長度的最低值設為 128 個 token(替代 BPE),並且不限制文檔最大長度。此外,原始 WebTextCorpus 是在這些樣本可用之前發布的,因此作者沒有使用這些信息來生成清理啟發式。
儘管在訓練分布上存在差異,作者依然得出了與多數數據集接近的困惑度。
效果
兩位作者在 medium 博客中展示了 OpenGPT-2 的生成效果。他們提供給模型的提示為:「Recycling is good for the world. NO! YOU COULD NOT BE MORE WRONG!!」,輸入模型之後得到了以下輸出:
reddit 網友也根據作者給出的連接進行了測試,並將測試結果與 OpenAI 前幾天公布的 7.74 億參數量版本進行了對比。有人表示:
我使用相同的提示分別測試了 OpenGPT-2 和 OpenAI 的 GPT-2 7.74 億參數版本,結果還是 OpenAI 的輸出效果更好,所以作者的複製過程或許存在一些問題。
當然,也有人認為 OpenGPT-2 的效果更好:
我認為作者的 OpenGPT-2 效果優於 OpenAI 的 GPT-2 7.74 億參數版本,但還不足以用來製造令人信服的假新聞。幾次嘗試輸入「Shocking revelation! Vladimir Putin and Donald Trump are」,我得出了以下效果最佳的文本。該文本能夠更長時間地保持語義連貫性,語句也更有意義,但還是比較容易被識破。但不可否認,OpenGPT-2 對研究確實很有幫助。
但我還有一個疑問,OpenGPT-2 到底只是把它讀過的文本隨機組合到一起,還是真正地創造出了新文本。
至於 OpenGPT-2 的生成效果究竟如何,大家可以根據文中提供的鏈接測試一下。
參考鏈接:
https://www.reddit.com/r/MachineLearning/comments/cu9xgi/p_opengpt2_we_replicated_gpt2_because_you_can_too/
https://medium.com/@vanya_cohen/opengpt-2-we-replicated-gpt-2-because-you-can-too-45e34e6d36dc
WAIC 2019 開發者日將於 8 月 31 日在上海世博中心舉辦,包含 1 個主單元、4 個分單元、黑客馬拉松比賽和開發者診所互動區。
屆時,全球頂尖 AI 專家、技術大牛、知名企業代表以及數千名開發者將齊聚上海,圍繞人工智慧前沿理論技術和開發實踐進行分享與解讀。
※PyTorch代碼調試利器:自動print每行代碼的Tensor信息
※陳天奇:機器學習科研的十年
TAG:機器之心 |