離開OpenAI的大神卡帕西「開課了」:新項目日增千星,還是熟悉的min代碼風
大神Karpathy從OpenAI離職,原本揚言要大休一周。
圖片
但轉眼,新項目就已上線GitHub,日增上千星的那種。
圖片
還是熟悉的卡式配方:
74行Python代碼搞定大模型標記化(tokenization)中常用的BPE(Byte Pair Encoding)算法,實現該算法的最小、最干凈代碼版本。
甚至:
圖片
是不是有點快3萬標星的nanoGPT內味兒了?
這波啊,還真是讓網友們給猜著了:
Time to cook。
畢竟,Karpathy除了前特斯拉AI總監、OpenAI創始成員的title,最為網友所熟悉的,就是“AI領域大善人”、“擅長將復雜問題簡單化的卡老師”這樣的身份了(手動狗頭)。
BPE代碼最小化版本
還是具體來看一下,Karpathy老師這次又煮出了一鍋什么樣的飯。
圖片
項目名minbpe已經說明一切:BPE算法的最小、最干凈代碼版本。
BPE(字節對編碼)是隨著GPT-2而流行起來的標記化算法。現在,包括GPT系列、Llama系列和Mistral在內,一眾大模型都用到了這一算法來訓練分詞器。
BPE的主要優勢在于:
- 高效:通過合并頻繁出現的字節對來逐步構建詞匯表,可以有效地減少模型需要處理的詞匯量。
- 靈活:可以將詞匯表外的單詞分解為已知子詞來進行處理,有助于模型理解和生成未在訓練中出現的單詞。
而在minbpe這個項目中,Karpathy提供了兩個Tokenizer(分詞器),它們都可以執行分詞器的3個主要功能:
- 基于特定文本訓練詞匯表和合并操作
- 把文本編碼成token
- 把token解碼為文本
具體而言,在basic.py中,minbpe用74行Python代碼,完成了對直接在文本上運行的BPE算法的最簡單實現。
圖片
在regex.py中,minbpe實現的是一個正則表達式分詞器,該分詞器利用正則表達式進一步拆分輸入的文本。
另外,在正則表達式分詞器的基礎之上,minbpe還在gpt4.py中提供了一個GPT4Tokenizer,可以準確在線tiktoken庫中的GPT-4標記化。
注:tiktoken是一種快速BPE分詞器。
圖片
base.py則是一個基類,包含了訓練、編碼和解碼的存根(stubs),提供了保存和加載的功能,并集成了一些常見的輔助工具函數。在實際應用中,開發者應該通過繼承這個基類來實現具體的分詞器功能。
Karpathy提到,他在霉霉的維基百科文本上嘗試訓練了兩個主要的分詞器。train.py在他的M1 MacBook上運行時間大概為25秒。
如果你還有什么不清楚的地方,別擔心,卡老師已經計劃要出視頻了:
圖片
Karpathy出走OpenAI,許多猜測指向他的“下一篇章”是大語言模型系統(LLM OS):
圖片
如今正式工作還未揭示,但看樣子Karpathy已經拾起了“教學育人”的副業,小伙伴們可以蹲起來了。
參考鏈接:https://github.com/karpathy/minbpe/