今天小編分享的科學經驗:離開OpenAI的大神卡帕西「開課了」:新項目日增千星,還是熟悉的min代碼風,歡迎閱讀。
,原本揚言要大休一周。
但轉眼,新項目就已上線 GitHub,日增上千星的那種。
還是熟悉的卡式配方:
74 行 Python 代碼搞定大模型标記化(tokenization)中常用的 BPE(Byte Pair Encoding)算法,實現該算法的最小、最幹淨代碼版本。
甚至:
是不是有點快 3 萬标星的nanoGPT内味兒了?
這波啊,還真是讓網友們給猜着了:
Time to cook。
畢竟,Karpathy 除了前特斯拉 AI 總監、OpenAI 創始成員的 title,最為網友所熟悉的,就是 "AI 領網域大善人 "、" 擅長将復雜問題簡單化的卡老師 " 這樣的身份了(手動狗頭)。
還是具體來看一下,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/
— 完 —
點這裡關注我,記得标星哦~
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~
>