日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

當人們談論大型語言模型的大小時,參數會讓我們了解神經網絡的結構有多復雜,而token的大小會讓我們知道有多少數據用于訓練參數。

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

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

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

1. 什么是token?

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

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

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

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

在AI target=_blank class=infotextkey>OpenAI 的API 參數中,max _ tokens 參數指定模型應該生成一個最大長度為60個令牌的響應。可以通過https://platform.openai.com/tokenizer 來觀察token 的相關信息。

2. token 的特點

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

解讀大模型(LLM)的token圖片

使用 GPT-3 tokenizaer將相同的單詞轉換為token:

解讀大模型(LLM)的token圖片

2.1 token到數值表示的映射

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

為了捕獲token之間的意義和語義關系,LLM 采用token編碼技術。這些技術將token轉換成稱為嵌入的密集數字表示。嵌入式編碼語義和上下文信息,使 LLM 能夠理解和生成連貫的和上下文相關的文本。像transformer這樣的體系結構使用self-attention機制來學習token之間的依賴關系并生成高質量的嵌入。

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

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

2.3 token 設計的局限性

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

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

token 的設計大概存在著以下的局限性:

  • 大小寫區分:不同大小寫的單詞被視為不同的標記。“ hello”是token[31373] ,“ Hello”是[15496] ,而“ HELLO”有三個token[13909,3069,46]。
  • 數字分塊不一致。數值“380”在 GPT 中標記為單個“380”token。但是“381”表示為兩個token[“38”,“1”]。“382”同樣是兩個token,但“383”是單個token[“383”]。一些四位數字的token有: [“3000”] ,[“3”,“100”] ,[“35”,“00”] ,[“4”,“500”]。這或許就是為什么基于 GPT 的模型并不總是擅長數學計算的原因。
  • 尾隨的空格。有些token有空格,這將導致提示詞和單詞補全的有趣行為。例如,帶有尾部空格的“once upon a ”被編碼為[“once”、“upon”、“a”、“ ”]。然而,“once on a time”被編碼為[“once”,“ upon”,“ a”,“ time”]。因為“ time”是帶有空格的單個token,所以將空格添加到提示詞將影響“ time”成為下一個token的概率。

解讀大模型(LLM)的token圖片

3. token 對LLM 的影響

關于token的數量如何影響模型的響應,常常感到困惑的是,更多的token是否使模型更加詳細而具體呢?個人認為,token 對大模型的影響集中在兩個方面:

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

訓練數據token: 模型的培訓數據中令牌的數量是模型已經學習的信息量的度量。然而,模型的響是更“一般”還是“詳細”與這些象征性的措施沒有直接關系。

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

對不同數據進行訓練的模型往往會產生一般性的響應,而對具體數據進行訓練的模型往往會產生更詳細的、針對具體情況的響應。例如,對醫學文本進行微調的模型可能會對醫學提示產生更詳細的響應。

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

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

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

解讀大模型(LLM)的token圖片

4. Token的應用機制——tokenization

將文本劃分為不同token的正式過程稱為 tokenization。tokenization捕獲文本的含義和語法結構,從而需要將文本分割成重要的組成部分。tokenization是將輸入和輸出文本分割成更小的單元,由 LLM AI 模型處理的過程。tokenization可以幫助模型處理不同的語言、詞匯表和格式,并降低計算和內存成本,還可以通過影響token的意義和語境來影響所生成文本的質量和多樣性。根據文本的復雜性和可變性,可以使用不同的方法進行tokenization,比如基于規則的方法、統計方法或神經方法。

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

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

4.1 tokenization 的七種類型

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

  • 字節對編碼(BPE):為AI模型構建子詞詞匯,用于合并出現頻繁的字符/子字對。
  • 子詞級tokenization:為復雜語言和詞匯劃分單詞。將單詞拆分成更小的單元,這對于復雜的語言很重要。
  • 單詞級tokenization:用于語言處理的基本文本tokenization。每個單詞都被用作一個不同的token,它很簡單,但受到限制。
  • 句子片段:用習得的子詞片段分割文本,基于所學子單詞片段的分段。
  • 分詞tokenization:采用不同合并方法的子詞單元。
  • 字節級tokenization:使用字節級token處理文本多樣性,將每個字節視為令牌,這對于多語言任務非常重要。
  • 混合tokenization:平衡精細細節和可解釋性,結合詞級和子詞級tokenization。

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

4.2 tokenization 的重要性

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

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

4.3 tokenization面臨的挑戰: 處理噪聲或不規則文本數據

真實世界的文本數據通常包含噪音、不規則性或不一致性。tokenization在處理拼寫錯誤、縮寫、俚語或語法錯誤的句子時面臨挑戰。處理這些噪音數據需要健壯的預處理技術和特定領域的tokenization規則調整。此外,在處理具有復雜編寫系統的語言時,tokenization可能會遇到困難,例如標志腳本或沒有明確詞邊界的語言。解決這些挑戰通常涉及專門的tokenization方法或對現有tokenizer的適應。

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

5. LLM應用中token 的使用

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

5.1 token 的使用狀態

這里采用OpenAI 的API , 使用langchain 應用框架來構建簡單應用,進而描述當前文本輸入的token 使用狀態。

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 類型的應用而言,可以用類似的方法得到各自token的統計數據。

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 的長度限制與應對

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

解讀大模型(LLM)的token圖片

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

截斷

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

抽樣

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

重組

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

編解碼

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

微調

微調允許使用較少的特定任務數據來調整預先訓練好的語言模型以適應特定任務或領域。可以利用微調來解決語言模型中的標記限制,方法是訓練模型預測一系列文本中的下一個標記,這些文本被分塊或分成更小的部分,每個部分都在模型的標記限制范圍內。

6. token 相關技術的展望

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

解讀大模型(LLM)的token圖片

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

7.小結

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

PS. One more thing, 我們在開發大模型應用時應該了解的一些數字如下:

解讀大模型(LLM)的token圖片

【參考資料】

  • https://Python/ target=_blank class=infotextkey>Python.langchain.com/docs
  • https://blog.langchain.dev/
  • OpenAI: What are tokens and how to count them?, https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them
  • Predicting Million-byte Sequences with Multiscale Transformers ,https://arxiv.org/pdf/2305.07185.pdf
  • https://learn.microsoft.com/en-us/semantic-kernel/prompt-engineering/tokens
  • https://www.anyscale.com/blog/num-every-llm-developer-should-know

分享到:
標簽:模型
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定