モデルのしくみ 中級

トークナイザー

Tokenizer

文章を、モデルが扱う最小単位であるトークンに分割し、番号に変換する部品です。モデルごとに分け方が違うため、同じ日本語でもトークン数や料金が変わることがあります。

別の呼び方トークン化、トークナイズ

例同じ日本語の文でも、モデルごとにトークナイザーが違うので、料金の見積もりはモデルごとに数え直した。

詳しく

トークナイザーとは、人間が書いた文章を、モデルが処理できる単位(トークン)に切り分け、それぞれに番号を割り当てる部品です。LLM は文字そのものを直接読むのではなく、この番号の列を受け取って計算します。逆に出力も番号の列で生成され、トークナイザーが文字に戻します。

なぜ必要なのか

コンピューターは数値しか扱えません。かといって1文字ずつ番号にすると、列が長くなり過ぎて非効率です。逆に、単語ごとに番号を振ると、辞書に載っていない新しい言葉や活用形、誤字を扱えません。そこで、頻繁に現れる文字の並びはひとまとまりに、まれなものは小さく分ける、という中間的な方法が使われます。代表的な作り方が、バイトペアエンコーディング(BPE)です。

具体例

英語の「unbelievable」は、「un」「believ」「able」のように複数のトークンに分かれることがあります。日本語では「人工知能」が1〜数トークンになることもあれば、まれな漢字が複数のトークンに分かれることもあります。どう分けるかは、モデルごとに学習された分割ルール(語彙)で決まります。

  • 同じ文章でも、モデルが違えばトークン数が変わる。
  • 一般に、英語は日本語よりトークン数が少なく済む傾向がある。ただしモデルの語彙の作り方で差は縮まっています。
  • API の料金や文脈長は、このトークン数を基準に決まります。

使うときの注意・よくある誤解

  • 文字数と一致しない:「1トークンは約何文字」と一律には言えません。正確な数え方は、各提供元が公開しているトークンカウンターなどで確かめます。
  • LLM が文字の扱いを苦手とする理由のひとつ:たとえば「単語に含まれる特定の文字の数を数える」といった作業を間違えることがあります。モデルは文字ではなく、まとまったトークンで見ているためです。
  • モデルとトークナイザーは対:別のモデルのトークナイザーを使うと、番号の意味が合わず正しく動きません。ローカル実行や微調整の際は、必ず対応するものを使います。
  • 特殊トークン:文頭・文末や、会話の役割の切り替えを示す特別なトークンがあります。形式を誤ると、出力が崩れることがあります。
  • 空白や改行も影響する:コードや表では、インデントなどがトークン数を増やすことがあります。

関連する考え方

token はトークンそのものの概念、bpe は代表的な分割方式、token-pricing は料金の基準、nlp は言葉を機械で扱う分野です。

あわせて知りたい言葉

「モデルのしくみ」の言葉をすべて見る