“300行代码实现”迷你版“GPT”;,上线三日收获3.3k星-量子位-

“GPT不是复杂的模型”

原OpenAI科学家,现为特斯拉AI总监Andrej Karpathy在自己的GitHub项目中这样写道。

Karpathy这样说是因为他自己用大约300行PyTorch代码实现了“小[GPT]”min[GPT]。项目启动3天,获得3.3k星级。

“万能”的NLP模型GPT-3这一个月sns爆炸性地增加了,不过,1750亿个参数要求的计算力的高度畏缩了。

但是在Karpathy的观点中,GPT所做的是在transformer块的列中加入索引列,导出下一个索引的概率分布。后面的复杂部分只是通过很好地进行批处理来提高训练的效率。

min关于开发GPT的理由,Karpathy先生在项目的文献中,叙述着现在能利用的GPT工具的多数是稍微大型,为了使GPT变得小,简洁,能解释,教育性的东西。

如果原创的GPT是巨大战舰的话,minGPT是帆船。小快灵是minGPT的特征,不能期待去“战争”。minGPT的作用是为了理解GPT原理的教育目的。

现在,minGPT可以进行加法和文字级的语言建模,开发了更强大的功能。

minGPT项目内容。

min[GPT]实现包含大约300行代码,包括模型案例代码和完全不必要的自定义因果自注意模块。

minGPT的核心库包含两个重要文件。

min[GPT]/modeler.py包含实际的Transformer模型定义min[GPT]/trainer.py是独立于[GPT]的训练模型的PyTorch模式

为了防止初学者,Karpathy在repo中添加了三个Jupyter Notebook文件,教他们如何使用这个库来训练序列模型。

play_math.ipynb用于训练专门用于加法的GPT(这部分从GPT-3论文的加法部分得到了提示);play_char.ipynb用于将[GPT]训练为任何文本上的字符级语言模型。与以前笔者的char-rnn相似,但使用的是Transformer而不是rnn。play_words.ipynb在字节对编码(BPE)版中尚未完成。

即使有代码,也不能马上再现OpenAI的几种预训练模型。

Karpathy说,BPE编码器,分布式培训,使用fp16,可以重现GPT-1/GPT-2的结果,但他自己还没有尝试过。(Karpathy在这句话后面写着$$$,大概是没钱了吧。)

对于目前最受欢迎的GPT-3,Karpathy可能无法实现,因为Karpathy认为它不适合GPU内存,需要更精细的模型并行处理。

min[GPT]的API利用例如下。

# you ' reonyourowntodefineaclassthatreturnsindividualexamplesaspytorchlongtensorsfromtorch . utils . dataimportdatasettrain_dataset=MyDataset(…)test_dataset=MyDataset(…)#constructa[GPT]modelfrommin[GPT]。modelimport[GPT],[GPT]Configmconf=[GPT]Config(voca_size,block_size,n_layer=12,n_head=12,n_embd=768、[GPT]#a1间活动=GPT(mconf)#constructarainerfromminGPT。trainerimporttrainer,trainerconfigtconf=TrainerConfig(max_epochs=10,batch_size=256、trainer=trainer(model,train_dataset,test_dataset,tconf)trainer.train()#(…enjoytheshowforawhile…)#samplefromthemodel GPT、utilsimportsamplex = torch . tensor(第1[3],dtype=torch.long)[none,…]x#contextconditioningy=sample(model,steps=30,temperature=1.0,sample=true,top_k=5、[1]print(y#ourmodelfilledintheinteger)sequencewith30additionallikelyintegers

如果您有合适的硬件和数据集,不妨试一试。

关于Karpathy

minGPT提供了的Andrej Karpathy还33岁,不过,是领导自动驾驶神经网络队的特斯拉的AI高级监督。

转到[特斯拉]之前是OpenAI的科学家,主要研究计算机视觉、模型生成和强化学习中的深度学习。

卡尔帕西2011年至2015年在斯坦福大学攻读博士学位。在校期间发表的很多论文都是CV领域的优秀论文,还经历了在谷歌、DeepMind两家公司的实习。

斯坦福大学著名的计算机程序CS231n,是他和李飞飞设计的,Karpathy不仅是副教授,还是演讲人之一。

一年的CS231n路线和他的“GitHub”项目都很受欢迎。这样的大牛人物,你不看看他写的代码GPT吗

minGPT项目:https://GitHub。com/karpathy/minGPT

Andrej Karpathy主页:https://karpathy.ai/

返回列表
上一篇:
下一篇:

文章评论