2024-09-02|閱讀時間 ‧ 約 23 分鐘

AI說書 - 從0開始 - 164 | Tokenizer 前言

我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。


整理目前手上有的素材:


有別於以往使用現成的 Tokenizer,這裡打算自己訓練一個專屬的 Tokenizer,Hugging Face 的 ByteLevelBPETokenizer 在使用 kant.txt(或任何其他文字)進行訓練時,會利用 Byte-Pair Encoding (BPE) Tokenizer,BPE Tokenizer 將字串或單字分解為子字單元或子字串,這種方法具有多種優點,包括:

  • Tokenizer 可以將單字分解為最小的組件,然後將這些組件合併為具有統計意義的組件,例如,「smaller」和「smallest」等字可以表示為「small」、「er」和「est」,此外,分詞器可以更進一步,產生「sm」和「all」等子詞,本質上,單字被分解為子詞標記和更小的單元,例如“sm”和“all”,而不是像“small”一樣表示為單一標記
  • 使用 Word-Piece 級別編碼來分類為未知的文本片段,通常表示為“unk_token”,可以有效地最小化或消除


我們會用以下參數來訓練 Tokenizer:

  • files=paths:用於指定文件路徑
  • vocab_size=52000:用於指定 Tokenizer 要包含多少詞彙
  • min_frequency=2:用於指定 Tokenizer 中的字的最小出現頻率
  • special_tokens=[]:用於納入特定詞彙


上述的特定詞彙,更明確來說,是以下詞彙:

  • <s>:起始 Token
  • <pad>:Padding 的 Token
  • </s>:結束的 Token
  • <unk>:未知的 Token
  • <mask>:語言模型的掩蓋 Token


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.