一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

解讀大模型(LLM)的token

 DuerOS布道師 2023-10-06 發(fā)布于北京

當(dāng)人們談?wù)摯笮驼Z言模型的大小時,參數(shù)會讓我們了解神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)有多復(fù)雜,而token的大小會讓我們知道有多少數(shù)據(jù)用于訓(xùn)練參數(shù)。

正像陸奇博士所說的那樣,大型語言模型為從文本生成到問題回答的各種任務(wù)提供了令人印象深刻的能力,不僅徹底改變了自然語言處理(NLP)領(lǐng)域,而且作為基礎(chǔ)模型會改變整個軟件生態(tài)。

這些模型的一個經(jīng)常被忽視的關(guān)鍵點是“token”的作用,即模型處理的各個信息單元。大型語言模型(LLM)不能真正理解原始文本,相反,文本被轉(zhuǎn)換為稱為token的數(shù)字表示形式,然后將這些token提供給模型進行處理。

token 在區(qū)塊鏈中代表是通證或者代幣,那么token在LLM中代表的是什么呢?

1. 什么是token?

在 LLM 中,token代表模型可以理解和生成的最小意義單位,是模型的基礎(chǔ)單元。根據(jù)所使用的特定標(biāo)記化方案,token可以表示單詞、單詞的一部分,甚至只表示字符。token被賦予數(shù)值或標(biāo)識符,并按序列或向量排列,并被輸入或從模型中輸出,是模型的語言構(gòu)件。

一般地,token可以被看作是單詞的片段,不會精確地從單詞的開始或結(jié)束處分割,可以包括尾隨空格以及子單詞,甚至更大的語言單位。token作為原始文本數(shù)據(jù)和 LLM 可以使用的數(shù)字表示之間的橋梁。LLM使用token來確保文本的連貫性和一致性,有效地處理各種任務(wù),如寫作、翻譯和回答查詢。

下面是一些有用的經(jīng)驗法則,可以幫助理解token的長度:

1 token ~= 4 chars in English
1 token ~= ? words
100 tokens ~= 75 words
或者
1-2 句子 ~= 30 tokens
1 段落 ~= 100 tokens
1,500 單詞 ~= 2048 tokens

在OpenAI 的API 參數(shù)中,max _ tokens 參數(shù)指定模型應(yīng)該生成一個最大長度為60個令牌的響應(yīng)??梢酝ㄟ^https://platform./tokenizer 來觀察token 的相關(guān)信息。

2. token 的特點

我們可以先用OpenAI 的playground 來看一個例子“Dec 31,1993. Things are getting crazy.”

使用 GPT-3 tokenizaer將相同的單詞轉(zhuǎn)換為token:

2.1 token到數(shù)值表示的映射

詞匯表將token映射到唯一的數(shù)值表示。LLM 使用數(shù)字輸入,因此詞匯表中的每個標(biāo)記都被賦予一個唯一標(biāo)識符或索引。這種映射允許 LLM 將文本數(shù)據(jù)作為數(shù)字序列進行處理和操作,從而實現(xiàn)高效的計算和建模。

為了捕獲token之間的意義和語義關(guān)系,LLM 采用token編碼技術(shù)。這些技術(shù)將token轉(zhuǎn)換成稱為嵌入的密集數(shù)字表示。嵌入式編碼語義和上下文信息,使 LLM 能夠理解和生成連貫的和上下文相關(guān)的文本。像transformer這樣的體系結(jié)構(gòu)使用self-attention機制來學(xué)習(xí)token之間的依賴關(guān)系并生成高質(zhì)量的嵌入。

2.2 token級操作:精確地操作文本

token級別的操作是對文本數(shù)據(jù)啟用細(xì)粒度操作。LLM 可以生成token、替換token或掩碼token,以有意義的方式修改文本。這些token級操作在各種自然語言處理任務(wù)中都有應(yīng)用,例如機器翻譯、情感分析和文本摘要等。

2.3 token 設(shè)計的局限性

在將文本發(fā)送到 LLM 進行生成之前,會對其進行tokenization。token是模型查看輸入的方式ーー單個字符、單詞、單詞的一部分或文本或代碼的其他部分。每個模型都以不同的方式執(zhí)行這一步驟,例如,GPT 模型使用字節(jié)對編碼(BPE)。

token會在tokenizer發(fā)生器的詞匯表中分配一個 id,這是一個將數(shù)字與相應(yīng)的字符串綁定在一起的數(shù)字標(biāo)識符。例如,“ Matt”在 GPT 中被編碼為token編號[13448],而 “Rickard”被編碼為兩個標(biāo)記,“ Rick”,“ ard”帶有 id[8759,446],GPT-3擁有1400萬字符串組成的詞匯表。

token 的設(shè)計大概存在著以下的局限性:

  • 大小寫區(qū)分:不同大小寫的單詞被視為不同的標(biāo)記?!?hello”是token[31373] ,“ Hello”是[15496] ,而“ HELLO”有三個token[13909,3069,46]。

  • 數(shù)字分塊不一致。數(shù)值“380”在 GPT 中標(biāo)記為單個“380”token。但是“381”表示為兩個token[“38”,“1”]?!?82”同樣是兩個token,但“383”是單個token[“383”]。一些四位數(shù)字的token有: [“3000”] ,[“3”,“100”] ,[“35”,“00”] ,[“4”,“500”]。這或許就是為什么基于 GPT 的模型并不總是擅長數(shù)學(xué)計算的原因。

  • 尾隨的空格。有些token有空格,這將導(dǎo)致提示詞和單詞補全的有趣行為。例如,帶有尾部空格的“once upon a ”被編碼為[“once”、“upon”、“a”、“ ”]。然而,“once on a time”被編碼為[“once”,“ upon”,“ a”,“ time”]。因為“ time”是帶有空格的單個token,所以將空格添加到提示詞將影響“ time”成為下一個token的概率。

3. token 對LLM 的影響

關(guān)于token的數(shù)量如何影響模型的響應(yīng),常常感到困惑的是,更多的token是否使模型更加詳細(xì)而具體呢?個人認(rèn)為,token 對大模型的影響集中在兩個方面:

上下文窗口: 這是模型一次可以處理的令牌的最大數(shù)量。如果要求模型比上下文窗口生成更多的標(biāo)記,它將在塊中這樣做,這可能會失去塊之間的一致性。

訓(xùn)練數(shù)據(jù)token: 模型的培訓(xùn)數(shù)據(jù)中令牌的數(shù)量是模型已經(jīng)學(xué)習(xí)的信息量的度量。然而,模型的響是更“一般”還是“詳細(xì)”與這些象征性的措施沒有直接關(guān)系。

模型響應(yīng)的普遍性或特異性更多地取決于它的訓(xùn)練數(shù)據(jù)、微調(diào)和生成響應(yīng)應(yīng)時使用的解碼策略。大型語言模型中的令牌概念是理解這些模型如何工作以及如何有效使用它們的基礎(chǔ)。雖然模型可以處理或已經(jīng)接受過訓(xùn)練的令牌數(shù)量確實影響其性能,但其響應(yīng)的一般性或詳細(xì)程度更多地是其訓(xùn)練數(shù)據(jù)、微調(diào)和所使用的解碼策略的產(chǎn)物。

對不同數(shù)據(jù)進行訓(xùn)練的模型往往會產(chǎn)生一般性的響應(yīng),而對具體數(shù)據(jù)進行訓(xùn)練的模型往往會產(chǎn)生更詳細(xì)的、針對具體情況的響應(yīng)。例如,對醫(yī)學(xué)文本進行微調(diào)的模型可能會對醫(yī)學(xué)提示產(chǎn)生更詳細(xì)的響應(yīng)。

解碼策略也起著重要的作用。修改模型輸出層中使用的SoftMax函數(shù)的“temperature”可以使模型的輸出更加多樣化(更高的溫度)或者更加確定(更低的溫度)。在OpenAI 的API中設(shè)置temperature的值可以調(diào)整確定性和不同輸出之間的平衡。

需要記住,每一個語言模型,不管它的大小或者它被訓(xùn)練的數(shù)據(jù)量如何,只有它被訓(xùn)練的數(shù)據(jù)、它被接收的微調(diào)以及在使用過程中使用的解碼策略才可能是最有效的。

為了突破 LLM 的極限,可以嘗試不同的訓(xùn)練和微調(diào)方法,并使用不同的解碼策略。請注意這些模型的優(yōu)缺點,并始終確保用例與正在使用的模型功能保持一致。

4. Token的應(yīng)用機制——tokenization

將文本劃分為不同token的正式過程稱為 tokenization。tokenization捕獲文本的含義和語法結(jié)構(gòu),從而需要將文本分割成重要的組成部分。

tokenization是將輸入和輸出文本分割成更小的單元,由 LLM AI 模型處理的過程。tokenization可以幫助模型處理不同的語言、詞匯表和格式,并降低計算和內(nèi)存成本,還可以通過影響token的意義和語境來影響所生成文本的質(zhì)量和多樣性。根據(jù)文本的復(fù)雜性和可變性,可以使用不同的方法進行tokenization,比如基于規(guī)則的方法、統(tǒng)計方法或神經(jīng)方法。

OpenAI 以及 Azure OpenAI 為其基于 GPT 的模型使用了一種稱為“字節(jié)對編碼(Byte-Pair Encoding,BPE)”的子詞tokenization方法。BPE 是一種將最頻繁出現(xiàn)的字符對或字節(jié)合并到單個標(biāo)記中的方法,直到達(dá)到一定數(shù)量的標(biāo)記或詞匯表大小為止。BPE 可以幫助模型處理罕見或不可見的單詞,并創(chuàng)建更緊湊和一致的文本表示。BPE 還允許模型通過組合現(xiàn)有單詞或標(biāo)記來生成新單詞或標(biāo)記。詞匯表越大,模型生成的文本就越多樣化并富有表現(xiàn)力。但是,詞匯越大,模型所需的內(nèi)存和計算資源就越多。因此,詞匯的選擇取決于模型的質(zhì)量和效率之間的權(quán)衡。

基于用于與模型交互的token數(shù)量以及不同模型的不同速率,大模型的使用成本可能大不相同。例如,截至2023年2月,使用 Davinci 的費率為每1000個令牌0.06美元,而使用 Ada 的費率為每1000個令牌0.0008美元。這個比率也根據(jù)使用的類型而變化,比如playground和搜索等。因此,tokenization是影響運行大模型的成本和性能的一個重要因素。

4.1 tokenization 的七種類型

tokenization涉及到將文本分割成有意義的單元,以捕捉其語義和句法結(jié)構(gòu),可以采用各種tokenization技術(shù),如字級、子字級(例如,使用字節(jié)對編碼或 WordPiece)或字符級。根據(jù)特定語言和特定任務(wù)的需求,每種技術(shù)都有自己的優(yōu)勢和權(quán)衡。

  • 字節(jié)對編碼(BPE):為AI模型構(gòu)建子詞詞匯,用于合并出現(xiàn)頻繁的字符/子字對。

  • 子詞級tokenization:為復(fù)雜語言和詞匯劃分單詞。將單詞拆分成更小的單元,這對于復(fù)雜的語言很重要。

  • 單詞級tokenization:用于語言處理的基本文本tokenization。每個單詞都被用作一個不同的token,它很簡單,但受到限制。

  • 句子片段:用習(xí)得的子詞片段分割文本,基于所學(xué)子單詞片段的分段。

  • 分詞tokenization:采用不同合并方法的子詞單元。

  • 字節(jié)級tokenization:使用字節(jié)級token處理文本多樣性,將每個字節(jié)視為令牌,這對于多語言任務(wù)非常重要。

  • 混合tokenization:平衡精細(xì)細(xì)節(jié)和可解釋性,結(jié)合詞級和子詞級tokenization。

LLM 已經(jīng)擴展了處理多語言和多模式輸入的能力。為了適應(yīng)這些數(shù)據(jù)的多樣性,已經(jīng)開發(fā)了專門的tokenization方法。通過利用特定語言的token或子詞技術(shù),多語言標(biāo)記在一個模型中處理多種語言。多模態(tài)標(biāo)記將文本與其他模式(如圖像或音頻)結(jié)合起來,使用融合或連接等技術(shù)來有效地表示不同的數(shù)據(jù)源。

4.2 tokenization 的重要性

tokenization在 LLM 的效率、靈活性和泛化能力中起著至關(guān)重要的作用。通過將文本分解成更小的、可管理的單元,LLM 可以更有效地處理和生成文本,降低計算復(fù)雜度和內(nèi)存需求。此外,tokenization通過適應(yīng)不同的語言、特定領(lǐng)域的術(shù)語,甚至是新興的文本形式(如互聯(lián)網(wǎng)俚語或表情符號)提供了靈活性。這種靈活性允許 LLM 處理范圍廣泛的文本輸入,增強了它們在不同領(lǐng)域和用戶上下文中的適用性。

tokenization技術(shù)的選擇涉及到粒度和語義理解之間的權(quán)衡。單詞級標(biāo)記捕獲單個單詞的意義,但可能會遇到詞匯表外(OOV)術(shù)語或形態(tài)學(xué)上豐富的語言。子詞級tokenization提供了更大的靈活性,并通過將單詞分解為子詞單元來處理 OOV 術(shù)語。然而,在整個句子的語境中正確理解子詞標(biāo)記的意義是一個挑戰(zhàn)。tokenization技術(shù)的選擇取決于特定的任務(wù)、語言特征和可用的計算資源。

4.3 tokenization面臨的挑戰(zhàn): 處理噪聲或不規(guī)則文本數(shù)據(jù)

真實世界的文本數(shù)據(jù)通常包含噪音、不規(guī)則性或不一致性。tokenization在處理拼寫錯誤、縮寫、俚語或語法錯誤的句子時面臨挑戰(zhàn)。處理這些噪音數(shù)據(jù)需要健壯的預(yù)處理技術(shù)和特定領(lǐng)域的tokenization規(guī)則調(diào)整。此外,在處理具有復(fù)雜編寫系統(tǒng)的語言時,tokenization可能會遇到困難,例如標(biāo)志腳本或沒有明確詞邊界的語言。解決這些挑戰(zhàn)通常涉及專門的tokenization方法或?qū)ΜF(xiàn)有tokenizer的適應(yīng)。

tokenization是特定于模型的。根據(jù)模型的詞匯表和tokenization方案,標(biāo)記可能具有不同的大小和含義。例如,像“ running”和“ ran”這樣的單詞可以用不同的標(biāo)記來表示,這會影響模型對時態(tài)或動詞形式的理解。不同模型訓(xùn)練各自的tokenizer,而且盡管 LLaMa 也使用 BPE,但token也與ChatGPT不同,這使得預(yù)處理和多模態(tài)建模變得更加復(fù)雜。

5. LLM應(yīng)用中token 的使用

我們需要知道當(dāng)前任務(wù)的token 使用狀況,然后,面對大模型的token長度限制,可以嘗試一些解決方案

5.1 token 的使用狀態(tài)

這里采用OpenAI 的API , 使用langchain 應(yīng)用框架來構(gòu)建簡單應(yīng)用,進而描述當(dāng)前文本輸入的token 使用狀態(tài)。

from langchain.llms import OpenAI
from langchain.callbacks import get_openai_callback
llm = OpenAI(model_name="text-davinci-002", n=2, best_of=2)

with get_openai_callback() as cb:
result = llm("給我講個笑話吧")
print(cb)

對于Agent 類型的應(yīng)用而言,可以用類似的方法得到各自token的統(tǒng)計數(shù)據(jù)。

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(
tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)
with get_openai_callback() as cb:
response = agent.run(
"Who is Olivia Wilde's boyfriend? What is his current age raised to the 2023?"
)
print(f"Total Tokens: {cb.total_tokens}")
print(f"Prompt Tokens: {cb.prompt_tokens}")
print(f"Completion Tokens: {cb.completion_tokens}")
print(f"Total Cost (USD): ${cb.total_cost}")

5.2 LLM中 token 的長度限制與應(yīng)對

像 GPT-3/4,LLaMA等這樣的大模型有一個最大token 數(shù)量限制,超過這個限制,它們就不能接受輸入或生成輸出。

一般地, 我們可以嘗試以下方法來解決token長度限制的問題:

截斷

截斷涉及刪除輸入文本的一部分以適應(yīng)令牌限制。這可以通過刪除文本的開頭或結(jié)尾,或兩者的組合來完成。然而,截斷可能導(dǎo)致重要信息的丟失,并可能影響所產(chǎn)生的產(chǎn)出的質(zhì)量和一致性。

抽樣

抽樣是一種從輸入文本中隨機選擇標(biāo)記子集的技術(shù)。這允許您在輸入中保留一些多樣性,并且可以幫助生成不同的輸出。然而,這種方法(類似于截斷)可能會導(dǎo)致上下文信息的丟失,并降低生成輸出的質(zhì)量。

重組

另一種方法是將輸入文本分割成符號限制內(nèi)的較小塊或段,并按順序處理它們。通過這種方式,可以獨立處理每個塊,并且可以連接輸出以獲得最終結(jié)果。

編解碼

編碼和解碼是常見的自然語言處理技術(shù),它們將文本數(shù)據(jù)轉(zhuǎn)換為數(shù)字表示,反之亦然。這些技術(shù)可用于壓縮、解壓縮、截斷或展開文本以適應(yīng)語言模型的標(biāo)記限制。這種方法需要額外的預(yù)處理步驟,可能會影響生成輸出的可讀性。

微調(diào)

微調(diào)允許使用較少的特定任務(wù)數(shù)據(jù)來調(diào)整預(yù)先訓(xùn)練好的語言模型以適應(yīng)特定任務(wù)或領(lǐng)域??梢岳梦⒄{(diào)來解決語言模型中的標(biāo)記限制,方法是訓(xùn)練模型預(yù)測一系列文本中的下一個標(biāo)記,這些文本被分塊或分成更小的部分,每個部分都在模型的標(biāo)記限制范圍內(nèi)。

6. token 相關(guān)技術(shù)的展望

雖然token傳統(tǒng)上代表文本單位,但是token的概念正在超越語言要素的范疇。最近的進展探索了其他模式(如圖像、音頻或視頻)的標(biāo)記,允許 LLM 與這些模式一起處理和生成文本。這種多模式方法為在豐富多樣的數(shù)據(jù)源背景下理解和生成文本提供了新的機會。它使 LLM 能夠分析圖像標(biāo)題,生成文本描述,甚至提供詳細(xì)的音頻轉(zhuǎn)錄。

tokenization領(lǐng)域是一個動態(tài)和不斷發(fā)展的研究領(lǐng)域。未來的進步可能集中于解決tokenization的局限性,改進 OOV 處理,并適應(yīng)新興語言和文本格式的需要。而且,將繼續(xù)完善tokenization技術(shù),納入特定領(lǐng)域的知識,并利用上下文信息來增強語義理解。tokenization的不斷發(fā)展將進一步賦予 LLM 以更高的準(zhǔn)確性、效率和適應(yīng)性來處理和生成文本。

7.小結(jié)

Token是支持 LLM 語言處理能力的基本構(gòu)件。理解token在 LLM 中的作用,以及tokenization方面的挑戰(zhàn)和進步,使我們能夠充分發(fā)揮這些模型的潛力。隨著繼續(xù)探索token的世界,我們將徹底改變機器理解和生成文本的方式,推動自然語言處理的邊界,促進各個領(lǐng)域的創(chuàng)新應(yīng)用。

PS. One more thing, 我們在開發(fā)大模型應(yīng)用時應(yīng)該了解的一些數(shù)字如下:

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩精品综合福利在线观看| 日韩中文字幕视频在线高清版| 国产av熟女一区二区三区四区 | 国产高清三级视频在线观看| 欧美激情区一区二区三区| 中文文精品字幕一区二区| 欧美人与动牲交a精品| 亚洲黄片在线免费小视频| 欧美同性视频免费观看| 亚洲欧美日韩熟女第一页| 国产欧美日韩精品一区二区| 好吊色免费在线观看视频| 欧美一本在线免费观看| 欧美三级大黄片免费看| 青青久久亚洲婷婷中文网 | 99视频精品免费视频| 亚洲熟女熟妇乱色一区| 欧美激情一区=区三区| 日韩成人动作片在线观看| 中文字幕欧美精品人妻一区| 特黄大片性高水多欧美一级| 东京干男人都知道的天堂| 丰满人妻一二区二区三区av| 亚洲国产av精品一区二区| 麻豆91成人国产在线观看| 免费观看一级欧美大片| 精品一区二区三区人妻视频| 国产精品欧美一区两区| 熟女高潮一区二区三区| 一区二区福利在线视频| 国产韩国日本精品视频| 91精品国产综合久久不卡| 精品综合欧美一区二区三区| 国产免费一区二区三区av大片| 视频一区二区黄色线观看| 情一色一区二区三区四| 精品人妻一区二区三区四在线| 91人妻人人精品人人爽| 亚洲熟妇中文字幕五十路| 欧美精品在线播放一区二区| 国产日韩精品欧美综合区|