大模型 Token 究竟是啥:圖解大模型Token
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
前幾天,一個(gè)朋友問我:“大模型中的 Token 究竟是什么?” 這確實(shí)是一個(gè)很有代表性的問題。許多人聽說過 Token 這個(gè)概念,但未必真正理解它的作用和意義。思考之后,我決定寫篇文章,詳細(xì)解釋這個(gè)話題。 我說:像 DeepSeek 和 ChatGPT 這樣的超大語言模型,都有一個(gè)“刀法精湛”的小弟——分詞器(Tokenizer)。 當(dāng)大模型接收到一段文字。 會(huì)讓分詞器把它切成很多個(gè)小塊。 這切出來的每一個(gè)小塊就叫做一個(gè) Token。 比如這段話(我喜歡唱、跳、Rap和籃球),在大模型里可能會(huì)被切成這個(gè)樣子。 像單個(gè)漢字,可能是一個(gè) Token。 兩個(gè)漢字構(gòu)成的詞語,也可能是一個(gè) Token。 三個(gè)字構(gòu)成的常見短語,也可能是一個(gè) Token。 一個(gè)標(biāo)點(diǎn)符號(hào),也可能是一個(gè) Token。 一個(gè)單詞,或者是幾個(gè)字母組成的一個(gè)詞綴,也可能是一個(gè) Token。 大模型在輸出文字的時(shí)候,也是一個(gè) Token 一個(gè) Token 的往外蹦,所以看起來可能有點(diǎn)像在打字一樣。 朋友聽完以后,好像更疑惑了: 于是,我決定換一個(gè)方式,給他通俗解釋一下。 大模型的Token究竟是啥,以及為什么會(huì)是這樣。 首先,請(qǐng)大家快速讀一下這幾個(gè)字: 是不是有點(diǎn)沒有認(rèn)出來,或者是需要愣兩秒才可以認(rèn)出來? 但是如果這些字出現(xiàn)在詞語或者成語里,你瞬間就可以念出來。 那之所以會(huì)這樣,是因?yàn)槲覀兊?strong>大腦在日常生活中,喜歡把這些有含義的詞語或者短語,優(yōu)先作為一個(gè)整體來對(duì)待。 不到萬不得已,不會(huì)去一個(gè)字一個(gè)字的摳。 這就導(dǎo)致我們對(duì)這些詞語還挺熟悉,單看這些字(旯妁圳侈邯)的時(shí)候,反而會(huì)覺得有點(diǎn)陌生。 而大腦??之所以要這么做,是因?yàn)檫@樣可以節(jié)省腦力,咱們的大腦還是非常懂得偷懶的。 比如 “今天天氣不錯(cuò)” 這句話,如果一個(gè)字一個(gè)字的去處理,一共需要有6個(gè)部分。 但是如果劃分成3個(gè)、常見且有意義的詞。 就只需要處理3個(gè)部分之間的關(guān)系,從而提高效率,節(jié)省腦力。 既然人腦可以這么做,那人工智能也可以這么做。 所以就有了分詞器,專門幫大模型把大段的文字,拆解成大小合適的一個(gè)個(gè) Token。 不同的分詞器,它的分詞方法和結(jié)果不一樣。 分得越合理,大模型就越輕松。這就好比餐廳里負(fù)責(zé)切菜的切配工,它的刀功越好,主廚做起菜來當(dāng)然就越省事。 分詞器究竟是怎么分的詞呢? 其中一種方法大概是這樣,分詞器統(tǒng)計(jì)了大量文字以后,發(fā)現(xiàn) “蘋果” 這兩個(gè)字,經(jīng)常一起出現(xiàn)。 就把它們打包成一個(gè) Token,給它一個(gè)數(shù)字編號(hào),比如 19416。 然后丟到一個(gè)大的詞匯表里。 這樣下次再看到 “蘋果” 這兩個(gè)字的時(shí)候,就可以直接認(rèn)出這個(gè)組合就可以了。 然后它可能又發(fā)現(xiàn) “雞” 這個(gè)字經(jīng)常出現(xiàn),并且可以搭配不同的其他字。 于是它就把 “雞” 這個(gè)字,打包成一個(gè) Token,給它配一個(gè)數(shù)字編號(hào),比如 76074。 并且丟到詞匯表里。 它又發(fā)現(xiàn) “ing” 這三個(gè)字母經(jīng)常一起出現(xiàn)。 于是又把 “ing” 這三個(gè)字母打包成一個(gè) Token,給它配一個(gè)數(shù)字編號(hào),比如 288。 并且收錄到詞匯表里。 它又發(fā)現(xiàn) “逗號(hào)” 經(jīng)常出現(xiàn)。 于是又把 “逗號(hào)” 也打包作為一個(gè) Token,給它配一個(gè)數(shù)字編號(hào),比如 14。 收錄到詞匯表里。 經(jīng)過大量統(tǒng)計(jì)和收集,分詞器就可以得到一個(gè)龐大的Token表。 可能有5萬個(gè)、10萬個(gè),甚至更多Token,可以囊括我們?nèi)粘R姷降母鞣N字、詞、符號(hào)等等。 這樣一來,大模型在輸入和輸出的時(shí)候,都只需要面對(duì)一堆數(shù)字編號(hào)就可以了。 再由分詞器按照Token表,轉(zhuǎn)換成人類可以看懂的文字和符號(hào)。 這樣一分工,工作效率就非常高。 有這么一個(gè)網(wǎng)站 Tiktokenizer:https://tiktokenizer.vercel.app 輸入一段話,它就可以告訴你,這段話是由幾個(gè)Token構(gòu)成的,分別是什么,以及這幾個(gè)Token的編號(hào)分別是多少。 我來演示一下,這個(gè)網(wǎng)站有很多模型可以選擇,像 GPT-4o、DeepSeek、LLaMA 等等。 我選的是 DeepSeek,我輸入 “哈哈”,顯示是一個(gè) Token,編號(hào)是 11433: “哈哈哈”,也是一個(gè) Token,編號(hào)是 40886: 4個(gè) “哈”,還是一個(gè) Token,編號(hào)是 59327: 但是5個(gè) “哈”,就變成了兩個(gè)Token,編號(hào)分別是 11433, 40886: 說明大家平常用兩個(gè) “哈” 或者三個(gè)的更多。 再來,“一心一意” 是三個(gè) Token。 “雞蛋” 是一個(gè) Token。 但是 “鴨蛋” 是兩個(gè) Token。 “關(guān)羽” 是一個(gè) Token。 “張飛” 是兩個(gè) Token。 “孫悟空” 是一個(gè) Token。 “沙悟凈” 是三個(gè) Token。 另外,正如前面提到的,不同模型的分詞器可能會(huì)有不同的切分結(jié)果。比如,“蘋果” 中的 “蘋” 字,在 DeepSeek 中被拆分成兩個(gè) Token。 但是在 所以回過頭來看,Token 到底是什么? 它就是構(gòu)建大模型世界的一塊塊積木。 大模型之所以能理解和生成文本,就是通過計(jì)算這些 Token 之間的關(guān)系,來預(yù)測(cè)下一個(gè)最可能出現(xiàn)的 Token。 這就是為什么幾乎所有大模型公司都按照 Token 數(shù)量計(jì)費(fèi),因?yàn)?Token 數(shù)量直接對(duì)應(yīng)背后的計(jì)算成本。 “Token” 這個(gè)詞不僅用于人工智能領(lǐng)域,在其他領(lǐng)域也經(jīng)常出現(xiàn)。其實(shí),它們只是恰好都叫這個(gè)名字而已。 就像同樣都是 “車模”,汽車模型和車展模特,雖然用詞相同,但含義卻截然不同。 FAQ1. 蘋為啥會(huì)是2個(gè)?因?yàn)椤疤O” 字單獨(dú)出現(xiàn)的概率太低,無法獨(dú)立成為一個(gè) Token。 2. 為什么張飛算兩個(gè) Token?“張” 和 “飛” 一起出現(xiàn)的頻率不夠高,或者“ 張” 字和 “飛” 字的搭配不夠穩(wěn)定,經(jīng)常與其他字組合,因此被拆分為兩個(gè) Token。 Token 在大模型方面最好的翻譯是 '詞元' 非常的信雅達(dá)。 轉(zhuǎn)自https://www.cnblogs.com/BNTang/p/18803486 ?該文章在 2025/4/7 8:54:46 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |