五行代碼玩轉GPT-2,新加坡高中生開源輕量級GPT-2「客戶端」

2021-01-10 量子位

魚羊 發自 凹非寺量子位 報導 | 公眾號 QbitAI

OpenAI會講故事的文本生成模型GPT-2,現在有了更易用的封裝版本。

輕鬆上手,輕量級,速度快。這就是這隻名叫gpt2-client的包裝器的突出特性。

作者小哥 Rishabh Anand 表示,gpt2-client 簡化了整個文本生成過程,有了它,任何人都可以毫不費力地開始使用文本生成模型。

Rishabh Anand 小哥來自新加坡國家初級學院,是的你沒看錯,這是一位高中生。

五行代碼文本生成

gpt2-client 是 GPT-2 原始倉庫的包裝器。OpenAI 帶來的功能,gpt2-client 一樣能實現,並且這個「客戶端」更具可訪問性,可理解性,也更加易用。

不管是 117M(小型)GPT-2 模型,還是擁有15億參數的 345M(中型)GPT-2 模型,都能在五行代碼以內輕鬆玩轉。還能用輕鬆適配自定義數據集。

就像這樣。

實測幾分鐘之後,GPT-2就開始編故事了。

難怪網友會說,這真是令人難以置信:

Rishabh Anand 還放出了 Colab 在線 Demo,涵蓋了gpt2-client的基本功能,打開瀏覽器即可食用。

一起來看看效果。

輸入一個提示:In latest news(最新消息)

Enter a prompt got GPT-2 >> In latest newsprompt: In latest newsGenerating sample…————————————SAMPLE————————————[『 Zeta-Jones/The Washington PostSen.澤塔瓊斯/華盛頓郵報。Bernie Sanders and House Minority Leader Nancy Pelosi made their remarks in response to a question on the role religion played in the 2016 election.」We were talking about religious liberty and we saw that in our country, and my faith,」波尼·桑德斯和眾議院少數黨領袖南希·佩洛西在回答關於宗教在2016年大選中扮演的角色的問題時發表了上述言論。「我們談論的是宗教自由,我們在我們國家和我的信仰中看到了這一點,」…Watch the video below, via MSNBC, at the top of the post.觀看帖子頂部 MSNBC 的視頻。One of my favorite things about the summer months is when I start going through a few pictures with some friends of mine. It means a lot that I’m having this crazy-easy weekend where I have some friends in the house and have this friend and all these interesting things going on. This is especially fun for me because I have no idea what’s going on but I keep thinking in a pretty good way how we should all be doing something together.夏天的幾個月裡,我最喜歡的事情之一是和我的朋友們一起拍照。這意味著很多:我有一個瘋狂的周末,我的一些朋友們在我家裡,我擁有朋友和所有這些有趣的事情。這對我來說特別有趣,因為我不知道發生了什麼,但我一直在思考我們如何用精彩的方式一起做些事。…]

食用指南

想要親自體驗一下 gpt2-client,並不困難。

Python 版本 ≥ 3.5,TensorFlow 版本 ≥ 1.X,就能得到完美支持。如果選擇Python 2.X,那麼可能需要重新安裝或升級某一些庫。

首先,還是 pip 安裝:

pip install gpt2-client

下載模型權重和檢查點:

from gpt2_client import GPT2Clientgpt2 = GPT2Client(』117M』, save_dir = 『models』)# 想用 345M 模型,就換成 『345M』gpt2.download_model(force_download = False)# 使用緩存(如果有)。將 force_download 設置成 true 能重新下載文件

經過這一步,當前工作目錄中會生成一個名為 models 的新目錄,並下載模型所需的權重,檢查點,模型 JSON 和超參數。一旦調用了download_model()函數,就假設文件已經在 models 目錄中下載完成,無需再次調用。

接著就可以開始生成文本了:

from gpt2_client import GPT2Clientgpt2 = GPT2Client(117M』) # 可以是 345Mgpt2.generate (interactive=True) # 要求用戶輸入提示gpt2.generate (n_samples=4) # 生成 4 個文本片段text = gpt.generate (return_text=True) # 生成文本並返回 arraygpt2.generate (interactive=True, n_samples=3) #每次都有不同提示

生成選項非常靈活,可以根據需要生成的文本類型進行混合和匹配。

最後,根據自定義數據集微調 GPT-2。

from gpt2_client import GPT2Clientgpt2 = GPT2Client (『117M』)my_corpus = 『./data/shakespeare.txt』custom_text = gpt2.finetune (my_corpus, return_text = True) # 加載自定義數據集

這一步最好是用上 GPU 或 TPU,也可以試試Google Colab。

最後,再多說一句,Rishabh Anand 小哥還是個寫博客小能手,感興趣的話可以 follow 他喲。

傳送門

GitHub地址:

https://github.com/rish-16/gpt2client

Colab在線調教地址:

https://colab.research.google.com/drive/1RZwp1n6XeWxvhBjt1e3ATSOy4Mj9GEEl

Rishabh Anand 博客:

https://medium.com/@mail.rishabh.anand

— 完 —

相關焦點

  • 愛奇藝開源輕量級插件化方案 Neptune
    愛奇藝近日開源了其輕量級插件化方案 Neptune,項目地址:https://github.com/iqiyi/Neptune插件化框架可以在主程序不重新安裝的情況下,針對單個業務模塊進行動態加載達到模塊更新的目的
  • 2018 年度新增開源軟體排行榜之國產 TOP 50
    所有前端後臺代碼封裝過後十分精簡易上手,出錯概率低,同時支持移動客戶端訪問。 Vue 的輕量級靜態網站生成器,以及為編寫技術文檔而優化的默認主題。通過 OSROOM,除了可以搭建常見的普通網站外,還可以作為小程序服務端,小程序客戶端可直接調用 API 請求數據。
  • InfoWorld 公布 2020 年最佳開源軟體
    它是為大型數據集實時探索查詢的引擎,專為雲時代而設計,提供專為 OLAP 設計的開源分析數據存儲系統,它的設計意圖是在面對代碼部署、機器故障以及其他產品系統遇到不測時能保持 100% 正常運行。它也可以用於後臺用例,但設計決策明確定位線上服務。
  • Jeecg Boot 2.3 裡程碑版本發布,基於 SpringBoot 的低代碼平臺
    項目介紹JeecgBoot是一款基於代碼生成器的低代碼平臺,開源界「小普元」超越傳統商業級平臺
  • 索尼開源 Xperia 5 原始碼,可解鎖 Bootloader
    Open Devices 項目是索尼為方便開發者自由研究而設的開源項目,索尼會在該項目中公開旗下安卓手機的內核代碼,開發者可以根據代碼內容進行第三方 ROM 適配,為用戶提供個性化的定製系統。
  • 物聯網開源作業系統,你了解多少?
    windows 作業系統 MS-DOS 的基礎上設計的圖形作業系統,是一種閉源系統,即原始碼不開放。而Unix及類Unix作業系統,例如FreeBSD、OpenBSD、Solaris 、Minix、Linux、QNX、谷歌的Android 作業系統(基於linux),ubuntu,這些基本上都是開源系統,原始碼開放。
  • 不到1000行代碼,GitHub 1400星,天才黑客開源深度學習框架tinygrad
    tinygrad 的代碼數量不到 1000 行,目前該項目獲得了 GitHub 1400 星。  在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。而這些大公司也花費了很大的精力來維護 TensorFlow、PyTorch 這樣龐大的深度學習框架。
  • 算命的也要懂代碼了?這個開源項目從黃曆到八字都算得清清楚楚
    Gitee 上這位開發者就用代碼為算命先生們提供了技術支持,為算命行業提效!一起來看看這個開源項目吧。項目名稱:lunar項目作者:6tail開源許可協議:MIT項目地址:https://gitee.com/6tail項目簡介lunar 是一款無第三方依賴的公曆(陽曆)和農曆(陰曆、老黃曆)工具,支持星座、儒略日、幹支、生肖、節氣、節日、彭祖百忌、吉神(喜神/福神/財神/陽貴神/陰貴神)方位、胎神方位、衝煞、納音、星宿
  • 細數當今著名開源軟體的吉祥物,哪個你的最愛?
    gitHub相信各位程序猿都很熟悉,它是一個面向開源及私有軟體項目的託管平臺,因為只支持git 作為唯一的版本庫格式進行託管,故名gitHub,它的logo是一個章魚貓(Octocat),下半身為章魚的爪子,上本身為貓頭,它寓意git的分布式特性。當然這是虛構出來的吉祥物,現實中並不存在。
  • 百度開源2020:二十個技術領域持續開源 飛槳、阿波羅成行業領先者...
    【2.0-RC1】飛槳核心框架重要升級,先後發布了2.0-alpha、2.0-beta、2.0-rc0、2.0-rc1共計 4個版本。2.0版本為開發者提供了「編程一致、動靜統一」的全新開發體驗,動態圖功能走向成熟、API進行了全面升級,同時動靜統一的編程體驗將為深度概率編程、量子機器學習等前沿學術研究提供更好的支持。
  • Gemini雙子新約即將進入全新的時代2.0
    短短30個區塊天,全網交易量近70萬筆,LGC持有地址近2萬個。在轉換塔進行了300多發子彈,CGC增加了96%,LGC增加了255%,這是你我所希望的盛會。由於參與人數眾多,gemini1.0在運行過程中偶爾會出現網絡擁塞等問題。同時,由於1.0網絡偏向於基礎設施建設,在某些方面不能滿足分散的宏觀生態建設。
  • Lettuce 5.0.2 和 4.4.3 發布,Redis Java 客戶端
    Lettuce 5.0.2 和 4.4.3 已發布,Lettuce 是一個可伸縮線程安全的 Redis 客戶端。多個線程可以共享同一個 RedisConnection。
  • GitHub 1400星,天才黑客開源深度學習框架tinygrad
    最近,天才黑客 George Hotz 開源了一個小型深度學習框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。tinygrad 的代碼數量不到 1000 行,目前該項目獲得了 GitHub 1400 星。 在深度學習時代,谷歌、Facebook、百度等科技巨頭開源了多款框架來幫助開發者更輕鬆地學習、構建和訓練不同類型的神經網絡。
  • DragonFly BSD 4.2.4 發布,BSD 系統
    DragonFly BSD 4.2.4 發布,此版本是個 bug 修復。
  • 又是不懂開源協議惹的禍,唯品會 Saturn 未聲明上遊項目版權被拒
    基於 ElasticJob 的原始許可證 Apache 2.0 ,所有文件的 header 都應該保留,即便他們修改了代碼。所以,無論你或是任何人想要做這個插件,我們都不能正式接受它作為 Apache SkyWalking 的一部分。如果你認識他們,請聯繫他們。只有在他們糾正了許可證問題,並且回滾了所有的 header 之後,我們才能支持他們的新版本。
  • 核心功能全部開源,雖霸榜GitHub,但怎麼賺錢?|陶建輝
    2:License的選擇 首先要明確一點的是,開源並不意味代碼可以隨意使用。開源產品有很多License, 流行的有Apache, BSD, MIT, GPL等等。我們選擇的是AGPL,這個License是GPL上的增強版。GPL 屬於dual license,如果要免費使用,使用者的代碼也必須開源,否則需要付費。AGPL是雲計算的背景下出來的,有更強的限制。
  • Lepus 3.6 發布,開源資料庫企業監控系統
    Lepus-資料庫企業監控系統從3.6版本開始正式開源發布Lepus 3.6更新內容如下:1.支持MySQL/Oracle/MongoDB
  • AEAI BPM V3.0.2 開源發布,流程集成平臺
    本次開源發布的是AEAI BPM V3.0.2版流程集成平臺,該版本是數通暢聯首次正式對外發布的版本,產品現已開源並上傳至開源社區http://www.oschina.net/p/aeai-bpm