閒不下來的 Andrej Karpathy 又有新專案了! 過去幾天,OpenAI 非常熱鬧,先有AI 大牛Andrej Karpathy 官宣離職,後有視頻生成模型 Sora 撼動AI 圈。 在宣布離開OpenAI 之後,Karpathy 發推表示「這周可以歇一歇了。」
圖來源:https://twitter.com/karpathy/status/1757986972512386972623398697262323> 🎜>這種無事可做的狀態讓馬斯克都羨慕(I am envious)了。
但是,如果你真的認為 Karpathy 會閒下來,那就有點「too young, too navie」了。
這不,有眼尖的網友發現了Karpathy 的新項目——minbpe,致力於為LLM 分詞中常用的BPE(Byte Pair Encoding, 字節對編碼)演算法創建最少、乾淨以及教育性的代碼
僅僅一天的時間,該專案的 GitHub 標星已經達到了 1.2 k。 有人P 了一張圖,表示Karpathy 為大家「烹調了一頓大餐」。
圖源:https://twitter.com/fouriergalois/status/1758775281391677477專案介紹
GitHub 位址:https://github.com/karpathy/minbpe我們知道,BPE 演算法是「位元組級」的,在UTF-8 編碼的字串上運行。該演算法透過 GPT-2 論文和 GPT-2 相關的程式碼在大語言模型(LLM)中推廣。 現如今,所有現代的 LLM(例如 GPT、Llama、Mistral)都使用 BPE 演算法來訓練它們的分詞器(tokenizer)。 Karpathy 的minbpe 專案儲存庫中提供了兩個Tokenizer,它們都可以執行分詞器的3 個主要功能:1)訓練tokenizer 詞彙並合併給指定文本,2)從文字編碼到token,3)從token 解碼到文字。
- minbpe/basepy.實作Tokenizer 類,是基類。它包含了訓練、編碼和解碼存根、保存 / 載入功能,還有一些常見的實用功能。不過,該類別不應直接使用,而是要繼承。
- minbpe/basic.py:實作 BasicTokenizer,這是直接在文字上運行的 BPE 演算法的最簡單實現。
- minbpe/regex.py:實作 RegexTokenizer,它透過正規表示式模式進一步分割輸入文字。作為一個預處理階段,它在分詞之前按類別(例如字母、數字、標點符號)拆分輸入文字。這確保不會發生跨類別邊界的合併。它是在 GPT-2 論文中引入的,並繼續在 GPT-4 中使用。
- minbpe/gpt4.py:實作 GPT4Tokenizer。這類是 RegexTokenizer 的輕量級封裝,它精確地復現了 tiktoken(OpenAI 開源分詞神器)庫中 GPT-4 的分詞。封裝處理有關恢復 tokenizer 中精確合併的一些細節,並處理一些 1 位元組的 token 排列。需要注意,奇偶校驗尚未完全完成,沒有處理特殊的 token。
腳本train.py 在輸入文字tests/taylorswift.txt 上訓練兩個主要的tokenizer,並將詞彙儲存到磁碟以進行視覺化。 Karpathy 稱,該腳本在他的 MacBook (M1) 上運行大約需要 25 秒。 Karpathy 也表示,所有文件都非常短且註釋詳盡,並包含使用範例。如下為 BPE 維基百科文章的複現範例。 from minbpe import BasicTokenizertokenizer = BasicTokenizer()text = "aaabdaaabac"tokenizer.train(text, 256 + 3) # 256 are the byte tokens, then do 3 mergesprint(tokenizer.encode(text))# [258, 100, 258, 97, 99]print(tokenizer.decode([258, 100, 258, 97, 99]))# aaabdaaabactokenizer.save("toy")# writes two files: toy.model (for loading) and toy.vocab (for viewing)
登入後複製
此外還提供瞭如何實現 GPT4Tokenizer,以及它與 tiktoken 的比較。 text = "hello123!!!? (안녕하세요!) ?"# tiktokenimport tiktokenenc = tiktoken.get_encoding("cl100k_base")print(enc.encode(text))# [15339, 4513, 12340, 30, 320, 31495, 230, 75265, 243, 92245, 16715, 57037]# oursfrom minbpe import GPT4Tokenizertokenizer = GPT4Tokenizer()print(tokenizer.encode(text))# [15339, 4513, 12340, 30, 320, 31495, 230, 75265, 243, 92245, 16715, 57037]
登入後複製
當然,Karpathy 不滿足只推出 GitHub 項目,他表示影片很快就會發布。
《特斯拉前AI總監教你手搓GPT大模型,教學影片已出》
《OpenAI聯創Karpathy愛上羊駝:純C代碼實現嬰兒Llama2,MacBook可運行,已攬1.6 k星》
《OpenAI內鬥時,Karpathy在錄影:《大型語言模型入門》上線》
以上是離開OpenAI待業的Karpathy做了個大模型新項目,Star量一日破千的詳細內容。更多資訊請關注PHP中文網其他相關文章!