一天star量破千,300行代碼,特斯拉AI總監(jiān)Karpathy寫(xiě)了個(gè)GPT的Pytorch訓(xùn)練庫(kù)

Karpathy 表示,這個(gè) minGPT 能夠進(jìn)行加法運(yùn)算和字符級(jí)的語(yǔ)言建模,而且準(zhǔn)確率還不錯(cuò)。
不過(guò),在運(yùn)行 demo 后,Andrej Karpathy 發(fā)現(xiàn)了一個(gè)有趣的現(xiàn)象:2 層 4 注意力頭 128 層的 GPT 在兩位數(shù)加法運(yùn)算中,將 55 + 45 的結(jié)果計(jì)算為 90,而其他加法運(yùn)算則沒(méi)有問(wèn)題。

目前,該項(xiàng)目在 GitHub 上亮相還沒(méi)滿 24 小時(shí),但 star 量已經(jīng)破千。
minGPT 項(xiàng)目地址:
https://github.com/karpathy/minGPT

GPT 并非一個(gè)復(fù)雜的模型,minGPT 實(shí)現(xiàn)只有大約 300 行代碼,包括樣板文件和一個(gè)完全不必要的自定義因果自注意力模塊。
Karpathy 將索引序列變成了一個(gè) transformer 塊序列,如此一來(lái),下一個(gè)索引的概率分布就出現(xiàn)了。剩下的復(fù)雜部分就是巧妙地處理 batching,使訓(xùn)練更加高效。
核心的 minGPT 庫(kù)包含兩個(gè)文檔:mingpt/model.py 和 mingpt/trainer.py。
前者包含實(shí)際的 Transformer 模型定義,后者是一個(gè)與 GPT 無(wú)關(guān)的 PyTorch 樣板文件,可用于訓(xùn)練該模型。相關(guān)的 Jupyter notebook 則展示了如何使用該庫(kù)訓(xùn)練序列模型:
play_math.ipynb 訓(xùn)練一個(gè)專(zhuān)注于加法的 GPT;
play_char.ipynb 將 GPT 訓(xùn)練成一個(gè)可基于任意文本使用的字符級(jí)語(yǔ)言模型,類(lèi)似于之前的 char-rnn,但用 transformer 代替了 RNN;
play_words.ipynb 是 BPE(Byte-Pair Encoding)版本,目前尚未完成。

OpenAI gpt-2 項(xiàng)目提供了模型,但沒(méi)有提供訓(xùn)練代碼(https://github.com/openai/gpt-2);
OpenAI 的 image-gpt 庫(kù)在其代碼中進(jìn)行了一些類(lèi)似于 GPT-3 的更改,是一份不錯(cuò)的參考(https://github.com/openai/image-gpt);
Huggingface 的 transformers 項(xiàng)目提供了一個(gè)語(yǔ)言建模示例。它功能齊全,但跟蹤起來(lái)有點(diǎn)困難。(https://github.com/huggingface/transformers/tree/master/examples/language-modeling)
論文地址:
https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

論文地址:
https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
GPT-2 將 LayerNorm 移動(dòng)每個(gè)子模塊的輸入,類(lèi)似于預(yù)激活殘差網(wǎng)絡(luò),并在最后的自注意力模塊后添加了一個(gè)額外的層歸一化。
此外,該模型還更改了模型初始化(包括殘差層初始化權(quán)重等)、擴(kuò)展了詞匯量、將 context 規(guī)模從 512 個(gè) token 增加到 1024、使用更大的批大小等。具體實(shí)現(xiàn)細(xì)節(jié)參見(jiàn)下圖:

論文地址:https://arxiv.org/pdf/2005.14165.pdf


2016 年,Karpathy 加入 OpenAI 擔(dān)任研究科學(xué)家。2017 年,他加入特斯拉擔(dān)任人工智能與自動(dòng)駕駛視覺(jué)總監(jiān)。如今,Karpathy 已經(jīng)升任特斯拉 AI 高級(jí)總監(jiān)。
他所在的團(tuán)隊(duì)負(fù)責(zé)特斯拉自動(dòng)駕駛系統(tǒng) Autopilot 所有神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì),包括數(shù)據(jù)收集、神經(jīng)網(wǎng)絡(luò)訓(xùn)練及其在特斯拉定制芯片上的部署。




參考鏈接:
https://news.ycombinator.com/item?id=24189497
戳↓↓“閱讀原文”小七送你AI大禮包哦!
