谷歌VideoPoet負責人蔣路跳槽TikTok!對標Sora,AI視頻模型大戰(zhàn)在即
離職OpenAI的技術大神karpathy,終于上線了2小時的AI大課。
——「讓我們構建GPT Tokenizer(分詞器)」。
圖片
其實,早在新課推出兩天前,karpathy在更新的GitHub項目中,就預告了這件事。
圖片
這個項目是minbpe——專為LLM分詞中常用的BPE(字節(jié)對編碼)算法創(chuàng)建最少、干凈以及教育性的代碼。
目前,GitHub已經狂攬6.1k星,442個fork。
圖片
項目地址:https://github.com/karpathy/minbpe
網友:2小時課程含金量,相當于大學4年
不得不說,karpathy新課發(fā)布依然吸引了業(yè)內一大波學者的關注。
他總是可以把相當復雜的LLM概念,用非常好理解的方式講出來。
圖片
有網友直接取消了晚上的約會,去上課了。
圖片
與karpathy的約會之夜。
圖片
AI機器學習研究員Sebastian Raschka表示,「我喜歡從頭開始的實現(xiàn),我真的很期待看到這個視頻」!
圖片
英偉達高級科學家Jim Fan表示,「Andrej的大腦是一個大模型,它能將復雜的事物標記化為簡單的token,讓我們小型思維語言模型可以理解。
圖片
還有UCSC的助理教授Xin Eric Wang表示,「就個人而言,我非常欣賞他多年前發(fā)表的關于RL的文章:http://karpathy.github.io/2016/05/31/rl/,這篇文章幫助我進入了RL領域」。
圖片
還有人直言這兩個小時課程的含金量,堪比4年制大學學位。
圖片
「Andrej是最好的AI老師」。
圖片
為什么是分詞器?
為什么要講分詞器?以及分詞器為什么這么重要?
正如karpathy所言,分詞器(Tokenizer)是大模型pipeline中一個完全獨立的階段。
它們有自己的訓練集、算法(字節(jié)對編碼BPE),并在訓練后實現(xiàn)兩個功能:從字符串編碼到token,以及從token解碼回字符串。
圖片
另外,大模型中許多怪異行為和問題,其實都可以追溯到分詞器。
就比如:
- 為什么LLM拼不出單詞?
- 為什么LLM無法完成超級簡單的字符串處理任務,比如反轉字符串?
- 為什么LLM不擅長非英語語言方面的任務?
- 為什么LLM不擅長簡單算術?
- 為什么GPT-2在用Python編碼時遇到了超出必要的麻煩?
- 為什么LLM在看到字符串<lendoftextl>時突然停止?
- 為什么大模型實際上并不是端到端的語言建模
......
圖片
視頻中,他將討論許多這樣的問題。討論為什么分詞器是錯誤的,以及為什么有人理想地找到一種方法來完全刪除這個階段。
兩小時大課走起
在本講座中,他將從頭開始構建OpenAI GPT系列中使用的Tokenizer。
根據YouTube課程章節(jié)介紹,一共有20多個part。
其中包括引言介紹、字節(jié)對編碼 (BPE) 算法演練、分詞器/LLM 圖:這是一個完全獨立的階段、minbpe練習時間!編寫自己的GPT-4分詞器等等。
從講解到習題演練貫穿了全部課程。
圖片
以下是從演講內容中總結的部分要點。
在視頻結尾,Karpathy重新回顧了LLM分詞器帶來的怪異問題。
首先,為什么LLM又時拼不正確詞,或者做不了其他與拼寫相關的任務?
從根本上說,這是因為我們看到這些字符被分割成了一個個token,其中有些token實際上相當長。
圖片
因此,我懷疑這個單個token中塞進了太多的字符,而且我懷疑該模型在與拼寫這個單個token相關的任務方面應該不是很擅長。
當然,我的提示是故意這樣做的,你可以看到默認風格將是一個單一的token,所以這就是模型所看到的。
事實上,分詞器不知道有多少個字母。
圖片
那么,為什么大模型在非英語任務中的表現(xiàn)更差?
這不僅是因為LLM在訓練模型參數(shù)時,看到的非英語數(shù)據較少,還因為分詞器沒有在非英語數(shù)據上得到充分的訓練。
就比如,這里「hello how are you」是5個token,而它的翻譯是15個token,相當與原始的3倍大。
圖片
「?????」在韓語中代表著「你好」,但最終只有3個token。
事實上,我對此感到有點驚訝,因為這是一個非常常見的短語,只是典型的問候語,如你好,最終是三個token。
而英語中的「你好」是一個單一的token。這是我認為LLM在非英語任務中表現(xiàn)差的原因之一便是分詞器。
另外,為什么LLM會在簡單的算術上栽跟頭,也是與數(shù)字的token有關。
比如一個類似于字符級別的算法來進行加法,我們先會把一加起來,然后把十加起來,再把百加起來。
圖片
你必須參考這些數(shù)字的特定部分,但這些數(shù)字的表示完全是任意的,主要是基于在分詞過程中發(fā)生的合并或不合并。
你可以看看,它是一個單一的token,還是2個token,即1-3、2-2、3-1的組合。
因此,所有不同的數(shù)字,都是不同的組合。
圖片
不幸的是,有時我們會看到所有四位數(shù)字的四個token,有時是三個,有時是兩個,有時是一個,而且是以任意的方式。
但這也并不理想。
所以這就是為什么我們會看到,比如說,當訓練Llama 2算法時,作者使用句子片段時,他們會確保把所有的數(shù)字都分割開來,作為Llama 2的一個例子,這部分是為了提高簡單算術的性能。
最后,為什么GPT-2在Python中的表現(xiàn)不佳,一部分是關于架構、數(shù)據集和模型強度方面的建模問題。
但也有部分原因是分詞器的問題,可以在Python的簡單示例中看到,分詞器處理空格的編碼效率非常糟糕。
每個空格都是一個單獨的token,這大大降低了模型可以處理交叉的上下文長度,所以這幾乎是GPT-2分詞的錯誤,后來在GPT-4中得到了修復。
圖片
課后習題
在課程下方,karpathy還給在線的網友們布置了課后習題。
圖片
快來打卡吧。
參考資料:
https://twitter.com/karpathy/status/1759996549109776702?t=lnj52VquAiuW4oG8yflJbA&s=19