前段時間,AI大神Karpathy上線的AI大課,已經收穫了全網15萬次播放量。
當時還有網友表示,這2小時課程的含金量,相當於大學4年。
就在這幾天,Karpathy又萌生了一個新的想法:
2小時13分鐘的「從頭開始建立GPT分詞器」影片內容轉化為書中的章節或部落格文章的形式,著重探討「分詞」這個主題。
具體步驟如下:
- 為影片新增字幕或解說文字。
- 將影片切割成若干有配套圖片和文字的段落。
- 利用大語言模型的提示工程技術,逐段翻譯。
- 將結果輸出為網頁形式,其中包含指向原始影片各部分的連結。
更廣泛地說,這樣的工作流程可以應用於任何視訊輸入,自動生成各種教程的「配套指南」,使其格式更加便於閱讀、瀏覽和搜尋。
這聽起來是可行的,但也頗具挑戰。
他在GitHub專案minbpe下,寫了一個例子來闡述自己的想像。
網址:https://github.com/karpathy/minbpe/blob/master/lecture.md
Karpathy表示,這是自己手動完成的任務,即觀看影片並將其翻譯成markdown格式的文章。
「我只看了大約4分鐘的影片(即完成了3%),而這已經花了大約30分鐘來寫,所以如果能自動完成這樣的工作就太好了」。
接下來,就是上課時間了!
「LLM分詞」課程文字版
大家好,今天我們將探討LLM中的「分詞」問題。
遺憾的是,「分詞」是目前最領先的大模型中,一個相對複雜且棘手的組成部分,但我們有必要對其進行詳細了解。
因為LLM的許多缺陷可能歸咎於神經網絡,或其他看似神秘的因素,而這些缺陷實際上都可以追溯到「分詞」。
字元級分詞
那麼,什麼是分詞呢?
事實上,在先前的影片《讓我們從零開始建立 GPT》中,我已經介紹過分詞,但那隻是一個非常簡單的字元級版本。
如果你去Google colab查看那個視頻,你會發現我們從訓練資料(莎士比亞)開始,它只是Python中的一個大字串:
First Citizen: Before we proceed any further, hear me speak.All: Speak, speak.First Citizen: You are all resolved rather to die than to famish?All: Resolved. resolved.First Citizen: First, you know Caius Marcius is chief enemy to the people.All: We know't, we know't.
但是,我們要如何將字串輸入LLM呢?
我們可以看到,我們首先要為整個訓練集中的所有可能字符,建立一個詞彙表:
# here are all the unique characters that occur in this textchars = sorted(list(set(text)))vocab_size = len(chars)print(''.join(chars))print(vocab_size)# !$&',-.3:;?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz# 65
然後根據上面的詞彙表,建立用於在單一字元和整數之間進行轉換的查找表。此查找表只是一個Python字典:
stoi = { ch:i for i,ch in enumerate(chars) }itos = { i:ch for i,ch in enumerate(chars) }# encoder: take a string, output a list of integersencode = lambda s: [stoi[c] for c in s]# decoder: take a list of integers, output a stringdecode = lambda l: ''.join([itos[i] for i in l])print(encode("hii there"))print(decode(encode("hii there")))# [46, 47, 47, 1, 58, 46, 43, 56, 43]# hii there
一旦我們將一個字串轉換成一個整數序列,我們就會看到每個整數,都被用作可訓練參數的二維嵌入的索引。
因為我們的字彙表大小為 vocab_size=65 ,所以該嵌入表也會有65行:
class BigramLanguageModel(nn.Module):def __init__(self, vocab_size):super().__init__()self.token_embedding_table = nn.Embedding(vocab_size, n_embd)def forward(self, idx, targets=None):tok_emb = self.token_embedding_table(idx) # (B,T,C)
在這裡,整數從嵌入表中「提取」出一行,這一行就是代表該分詞的向量。然後,該向量將作為對應時間步長的輸入輸入到Transformer。
使用BPE演算法進行「字元區塊」分詞
#對於「字元級」語言模型的天真設定來說,這一切都很好。
但在實踐中,在最先進的語言模型中,人們使用更複雜的方案來建構這些表徵詞彙。
具體地說,這些方案不是在字元層級上工作,而是在「字元區塊」層級上工作。建構這些區塊詞彙表的方式是使用位元組對編碼(BPE)等演算法,我們將在下面詳細介紹該演算法。
暫時回顧一下這種方法的歷史發展,將位元組級BPE演算法用於語言模型分詞的論文,是2019年OpenAI發表的GPT-2論文Language Models are Unsupervised Multitask Learners。
論文地址:https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
向下翻到第2.2節「輸入表示」,在那裡他們描述並激勵這個演算法。在這一節的結尾,你會看到他們說:
詞彙量擴大到50257個。我們也將上下文大小從512增加到1024個token,並使用512更大batchsize。
回想一下,在Transformer的注意力層中,每個token都與序列中先前有限的token清單相關聯。
本文指出,GPT-2模型的上下文長度從GPT-1的512個token,增加到1024個token。
換句話說,token是 LLM 輸入端的基本「原子」。
「分詞」是將Python中的原始字串,轉換為token清單的過程,反之亦然。
還有一個流行的例子可以證明這種抽象的普遍性,如果你也去Llama 2的論文中搜尋「token”,你將得到63個匹配結果。
例如,論文聲稱他們在2萬億個token上進行了訓練,等等。
論文網址:https://arxiv.org/pdf/2307.09288.pdf
淺談分詞的複雜性
在我們深入探討實現的細節之前,讓我們簡要地說明一下,需要詳細了解「分詞」過程的必要性。
分詞是LLM中許多許多怪異問題的核心,我建議你不要忽略它。
很多看似神經網路架構的問題,其實都跟分詞有關。這裡只是幾個例子:
- 為什麼LLM不會拼字? ——分詞
- 為什麼LLM不能執行超簡單的字串處理任務,例如反轉字串? ——分詞
- 為什麼LLM在非英語語言(例如日語)任務中更差? ——分詞
- 為什麼LLM不擅長簡單的算術? ——分詞
- 為什麼GPT-2在用Python編碼時遇到了更多的問題? ——分詞
- 為什麼我的LLM在看到字串時突然停止? ——分詞
- 我收到的關於「trailing whitespace」的奇怪警告是什麼? ——分詞
- 如果我問LLM關於「SolidGoldMagikarp」的問題,為什麼它會崩潰? ——分詞
- 為什麼我應該使用LLM的YAML而不是JSON? ——分詞
- 為什麼LLM不是真正的端對端語言建模? ——分詞
我們將在影片的結尾,再回到這些問題上。
分詞的視覺化預覽
#接下來,讓我們載入這個分詞WebApp。
網址:https://tiktokenizer.vercel.app/
##這個Web應用程式的優點是,分詞在網頁瀏覽器中即時運行,允許你輕鬆地在輸入端輸入一些文字字串,並在右側看到分詞結果。
在頂部,你可以看到我們目前正在使用 gpt2 分詞器,並且可以看到,這個範例中貼上的字串目前正在分詞為 300個token。
在這裡,它們用顏色明確顯示出來:
#比如,字串「Tokenization」編碼到token30642,其後是token是1634。
token“is”(注意,這是三個字符,包括前面的空格,這很重要!)是318。
注意使用空格,因為它在字串中是絕對存在的,必須與所有其他字元一起分詞。但為了清晰可見,在可視化時通常會省略。
你可以在應用程式底部開啟和關閉它的視覺化功能。同樣,token“at”是379,“the”是262,依此類推。
接下來,我們有一個簡單的算術範例。
在這裡,我們看到,分詞器對數字的分解可能不一致。例如,數字127是由3個字元組成的token,但數字677是因為有2個token:6(同樣,請注意前面的空格)和77。
我們依賴LLM來解釋這種任意性。
它必須在其參數內部和訓練過程中,了解這兩個token(6和77實際上組合成了數字677)。
同樣,我們可以看到,如果LLM想要預測這個總和的結果是數字804,它必須在兩個時間步長內輸出:
首先,它必須發出token“8”,然後是token“04”。
請注意,所有這些分割看起來都是完全任意的。在下面的例子中,我們可以看到1275是“12”,然後“75”,6773實際上是三個token“6”、“77”、“3”,而8041是“8”、“041” 。
(未完待續...)
(TODO:若想繼續文字版的內容,除非我們想出如何從視頻中自動生成)
網友在線,出謀劃策
網友表示,太好了,實際上我更喜歡閱讀這些帖子,而不是看視頻,更容易掌握自己的節奏。
也有網友為Karpathy出謀劃策:
「感覺很棘手,但使用LangChain可能是可行的。我在想是否可以使用whisper轉錄,產生有清晰章節的高級大綱,然後對這些章節塊並行處理,在整體提綱的上下文中,專注於各自章節區塊的具體內容(也為每個並行處理的章節生成配圖)。然後再透過LLM把所有產生的參考標記,彙編到文章末尾」。
有人為此還寫了一個pipeline,很快就會開源。
以上是乾貨滿滿!大神Karpathy兩小時AI大課文字版第一彈,全新工作流程自動把影片轉成文章的詳細內容。更多資訊請關注PHP中文網其他相關文章!

ai合并图层的快捷键是“Ctrl+Shift+E”,它的作用是把目前所有处在显示状态的图层合并,在隐藏状态的图层则不作变动。也可以选中要合并的图层,在菜单栏中依次点击“窗口”-“路径查找器”,点击“合并”按钮。

ai橡皮擦擦不掉东西是因为AI是矢量图软件,用橡皮擦不能擦位图的,其解决办法就是用蒙板工具以及钢笔勾好路径再建立蒙板即可实现擦掉东西。

虽然谷歌早在2020年,就在自家的数据中心上部署了当时最强的AI芯片——TPU v4。但直到今年的4月4日,谷歌才首次公布了这台AI超算的技术细节。论文地址:https://arxiv.org/abs/2304.01433相比于TPU v3,TPU v4的性能要高出2.1倍,而在整合4096个芯片之后,超算的性能更是提升了10倍。另外,谷歌还声称,自家芯片要比英伟达A100更快、更节能。与A100对打,速度快1.7倍论文中,谷歌表示,对于规模相当的系统,TPU v4可以提供比英伟达A100强1.

ai可以转成psd格式。转换方法:1、打开Adobe Illustrator软件,依次点击顶部菜单栏的“文件”-“打开”,选择所需的ai文件;2、点击右侧功能面板中的“图层”,点击三杠图标,在弹出的选项中选择“释放到图层(顺序)”;3、依次点击顶部菜单栏的“文件”-“导出”-“导出为”;4、在弹出的“导出”对话框中,将“保存类型”设置为“PSD格式”,点击“导出”即可;

ai顶部属性栏不见了的解决办法:1、开启Ai新建画布,进入绘图页面;2、在Ai顶部菜单栏中点击“窗口”;3、在系统弹出的窗口菜单页面中点击“控制”,然后开启“控制”窗口即可显示出属性栏。

Yann LeCun 这个观点的确有些大胆。 「从现在起 5 年内,没有哪个头脑正常的人会使用自回归模型。」最近,图灵奖得主 Yann LeCun 给一场辩论做了个特别的开场。而他口中的自回归,正是当前爆红的 GPT 家族模型所依赖的学习范式。当然,被 Yann LeCun 指出问题的不只是自回归模型。在他看来,当前整个的机器学习领域都面临巨大挑战。这场辩论的主题为「Do large language models need sensory grounding for meaning and u

ai移动不了东西的解决办法:1、打开ai软件,打开空白文档;2、选择矩形工具,在文档中绘制矩形;3、点击选择工具,移动文档中的矩形;4、点击图层按钮,弹出图层面板对话框,解锁图层;5、点击选择工具,移动矩形即可。

自从ChatGPT掀起浪潮,不少人都在担心AI快要抢人类饭碗了。然鹅,现实可能更残酷QAQ......据就业服务平台Resume Builder调查统计,在1000多家受访美国企业中,用ChatGPT取代部分员工的,比例已达到惊人的48%。在这些企业中,有49%已经启用ChatGPT,还有30%正在赶来的路上。就连央视财经也为此专门发过一个报道:相关话题还曾一度冲上了知乎热榜,众网友表示,不得不承认,现在ChatGPT等AIGC工具已势不可挡——浪潮既来,不进则退。有程序员还指出:用过Copil


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器