自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

300行代碼實現(xiàn)“迷你版GPT”,上線三天收獲3.3k星

新聞 前端
“GPT并不是一個復(fù)雜的模型?!盞arpathy這樣說是有底氣的,因為他自己只用大約300行PyTorch代碼就實現(xiàn)了一個“小型GPT”——minGPT。

 本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

“GPT并不是一個復(fù)雜的模型。”

前OpenAI科學(xué)家、現(xiàn)任特斯拉AI總監(jiān)的Andrej Karpathy在自己的GitHub項目里這樣寫道。

Karpathy這樣說是有底氣的,因為他自己只用大約300行PyTorch代碼就實現(xiàn)了一個“小型GPT”——minGPT。該項目上線3天以來,已經(jīng)收獲了3.3k星。

300行代碼實現(xiàn)“迷你版GPT”,上線三天收獲3.3k星

“萬能”的NLP模型GPT-3這一個月來已經(jīng)刷爆社交網(wǎng)絡(luò),不過1750億個參數(shù)對算力的超高要求也讓人望而卻步。

但是在Karpathy看來,GPT所做的事情就是將一個索引序列放入一個transformer塊序列中,并得出下一個索引的概率分布。其余的復(fù)雜部分只是通過巧妙地進行批處理讓訓(xùn)練更高效。

300行代碼實現(xiàn)“迷你版GPT”,上線三天收獲3.3k星

談到為何要開發(fā)minGPT,Karpathy本人在項目文檔里說,他是為了讓GPT做到小巧、簡潔、可解釋且具有教育意義,因為當前大多數(shù)可用的GPT工具都有些龐大。

如果原版的GPT是一艘巨型戰(zhàn)艦,那么minGPT就是一艘快艇。小快靈是minGPT的特點,你不能指望它去“打仗”。minGPT的作用是教育目的,讓你熟悉GPT的原理。

300行代碼實現(xiàn)“迷你版GPT”,上線三天收獲3.3k星

現(xiàn)在,minGPT已經(jīng)能夠進行加法運算和字符級的語言建模,更強大的功能還在進一步開發(fā)中。

minGPT項目內(nèi)容

minGPT實現(xiàn)大約包含300行代碼,包括樣板代碼和完全不必要的自定義因果自注意力模塊。

minGPT的核心庫包含兩個重要的文件:

  • mingpt/model.py包含實際的Transformer模型定義
  • mingpt/trainer.py是獨立于GPT的訓(xùn)練模型的PyTorch樣板

為了防止初學(xué)者犯難,Karpathy在repo中還隨附3個Jupyter Notebook文件,教你如何使用這個庫來訓(xùn)練序列模型:

  • play_math.ipynb用于訓(xùn)練專注于加法的GPT(這部分是受GPT-3論文中加法部分的啟發(fā));
  • play_char.ipynb用于將GPT訓(xùn)練為任意文本上的字符級語言模型,類似于作者以前的char-rnn,但它使用的是Transformer而不是RNN;
  • play_words.ipynb是一個字節(jié)對編碼(BPE)版本,目前尚未完成。

有了這些代碼并不意味著你能立刻復(fù)現(xiàn)出OpenAI的幾個GPT預(yù)訓(xùn)練模型。

Karpathy表示,使用BPE編碼器、分布式訓(xùn)練以及fp16,才可能復(fù)現(xiàn)GPT-1/GPT-2的結(jié)果,不過他本人還沒有嘗試過。(Karpathy在這句話后面寫著$$$,可能是沒錢吧。)

至于現(xiàn)在最火的GPT-3,可能無法實現(xiàn),因為Karpathy認為是它不適合GPU顯存,而且需要更精細的模型并行處理。

minGPT的API用法示例如下:

  1. # you're on your own to define a class that returns individual examples as PyTorch LongTensors 
  2. from torch.utils.data import Dataset 
  3. train_dataset = MyDataset(...) 
  4. test_dataset = MyDataset(...) 
  5.  
  6. # construct a GPT model 
  7. from mingpt.model import GPT, GPTConfig 
  8. mconf = GPTConfig(vocab_size, block_size, n_layer=12, n_head=12, n_embd=768) # a GPT-1 
  9. model = GPT(mconf) 
  10.  
  11. # construct a trainer 
  12. from mingpt.trainer import Trainer, TrainerConfig 
  13. tconf = TrainerConfig(max_epochs=10, batch_size=256
  14. trainer = Trainer(model, train_dataset, test_dataset, tconf) 
  15. trainer.train() 
  16. # (... enjoy the show for a while... ) 
  17.  
  18. # sample from the model (the [None, ...] and [0] are to push/pop a needed dummy batch dimension) 
  19. from mingpt.utils import sample 
  20. x = torch.tensor([123], dtype=torch.long)[None, ...] # context conditioning 
  21. y = sample(model, x, steps=30, temperature=1.0, sample=True, top_k=5)[0
  22. print(y) # our model filled in the integer sequence with 30 additional likely integers 

如果你有合適的硬件和數(shù)據(jù)集,不妨去試試吧。

關(guān)于Karpathy

提供minGPT的Andrej Karpathy今天才33歲,但已經(jīng)是特斯拉的AI高級總監(jiān),負責(zé)領(lǐng)導(dǎo)自動駕駛神經(jīng)網(wǎng)絡(luò)團隊。

300行代碼實現(xiàn)“迷你版GPT”,上線三天收獲3.3k星

在跳槽到特斯拉之前,他是OpenAI的科學(xué)家,主要研究計算機視覺、生成模型和強化學(xué)習(xí)中的深度學(xué)習(xí)。

Karpathy在2011-2015年期間進入斯坦福大學(xué)攻讀博士學(xué)位,他的導(dǎo)師就是李飛飛。讀博期間,他發(fā)表的多篇論文都是CV領(lǐng)域的高引文章,還在Google、DeepMind兩家公司實習(xí)過。

300行代碼實現(xiàn)“迷你版GPT”,上線三天收獲3.3k星

而且斯坦福大學(xué)的著名計算機課程CS231n就是他和李飛飛一起設(shè)計的,Karpathy不僅是該課程的助教,也是主講人之一。

300行代碼實現(xiàn)“迷你版GPT”,上線三天收獲3.3k星

無論是當年的CS231n課程還是他的GitHub項目,都有很高的人氣。如此大牛的人物,他寫的GPT代碼你不去看看嗎?

minGPT項目地址:
https://github.com/karpathy/minGPT

Andrej Karpathy個人主頁:
https://karpathy.ai/

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2020-08-28 15:47:26

代碼機器學(xué)習(xí)波士頓

2011-12-18 12:36:59

摩托

2020-12-09 14:18:46

AI 技術(shù)馬賽克

2011-06-29 18:11:33

筆記本評測

2023-06-25 07:42:02

2011-11-08 17:28:26

美信云網(wǎng)管

2021-06-25 06:47:38

VueVue2.x迷你版響應(yīng)式原理

2012-10-19 14:26:08

無線路由器平板電腦

2024-05-21 13:06:02

2021-06-17 14:33:05

程序員開發(fā)遠程

2012-04-01 10:13:20

蘋果

2011-04-01 12:49:05

美信CreCloud云網(wǎng)管

2022-02-11 16:35:41

Redis6.0代碼命令

2025-02-26 10:24:51

2021-03-29 15:25:47

算法開源技術(shù)

2017-02-21 10:48:12

互聯(lián)網(wǎng)

2020-03-12 10:16:45

代碼Java多線程

2021-06-21 07:36:32

Virtual DOMDOMvue.js

2023-10-19 08:27:31

AI模型

2011-12-16 10:45:12

java
點贊
收藏

51CTO技術(shù)棧公眾號