モデルのしくみ 中級
トークナイザー
Tokenizer
文章を、モデルが扱う最小単位であるトークンに分割し、番号に変換する部品です。モデルごとに分け方が違うため、同じ日本語でもトークン数や料金が変わることがあります。
別の呼び方トークン化、トークナイズ
例同じ日本語の文でも、モデルごとにトークナイザーが違うので、料金の見積もりはモデルごとに数え直した。
詳しく
トークナイザーとは、人間が書いた文章を、モデルが処理できる単位(トークン)に切り分け、それぞれに番号を割り当てる部品です。LLM は文字そのものを直接読むのではなく、この番号の列を受け取って計算します。逆に出力も番号の列で生成され、トークナイザーが文字に戻します。
なぜ必要なのか
コンピューターは数値しか扱えません。かといって1文字ずつ番号にすると、列が長くなり過ぎて非効率です。逆に、単語ごとに番号を振ると、辞書に載っていない新しい言葉や活用形、誤字を扱えません。そこで、頻繁に現れる文字の並びはひとまとまりに、まれなものは小さく分ける、という中間的な方法が使われます。代表的な作り方が、バイトペアエンコーディング(BPE)です。
具体例
英語の「unbelievable」は、「un」「believ」「able」のように複数のトークンに分かれることがあります。日本語では「人工知能」が1〜数トークンになることもあれば、まれな漢字が複数のトークンに分かれることもあります。どう分けるかは、モデルごとに学習された分割ルール(語彙)で決まります。
- 同じ文章でも、モデルが違えばトークン数が変わる。
- 一般に、英語は日本語よりトークン数が少なく済む傾向がある。ただしモデルの語彙の作り方で差は縮まっています。
- API の料金や文脈長は、このトークン数を基準に決まります。
使うときの注意・よくある誤解
- 文字数と一致しない:「1トークンは約何文字」と一律には言えません。正確な数え方は、各提供元が公開しているトークンカウンターなどで確かめます。
- LLM が文字の扱いを苦手とする理由のひとつ:たとえば「単語に含まれる特定の文字の数を数える」といった作業を間違えることがあります。モデルは文字ではなく、まとまったトークンで見ているためです。
- モデルとトークナイザーは対:別のモデルのトークナイザーを使うと、番号の意味が合わず正しく動きません。ローカル実行や微調整の際は、必ず対応するものを使います。
- 特殊トークン:文頭・文末や、会話の役割の切り替えを示す特別なトークンがあります。形式を誤ると、出力が崩れることがあります。
- 空白や改行も影響する:コードや表では、インデントなどがトークン数を増やすことがあります。
関連する考え方
token はトークンそのものの概念、bpe は代表的な分割方式、token-pricing は料金の基準、nlp は言葉を機械で扱う分野です。
あわせて知りたい言葉
- トークンLLM がテキストを処理するときの最小単位で、単語や文字のかけらに相当します。料金・文脈長・出力の上限は、このトークン数で数えられるため、AIを使う際の基本の単位になります。
- バイトペアエンコーディング文章を細かい断片(トークン)に区切るための代表的な方法で、よく一緒に出てくる文字の並びを順番にひとまとめにして語彙を作ります。多くの LLM のトークナイザーに使われています。
- トークン単価LLM の API で、処理したトークン数に応じて料金が決まる仕組みと、その単価のことです。入力と出力で単価が分かれ、「100万トークンあたり何ドル」と表示されるのが一般的です。
- 自然言語処理人間が日常で使う言葉をコンピューターに理解・生成させる技術の分野です。翻訳、要約、検索、チャットボットなどが含まれ、大規模言語モデルはその最新の到達点にあたります。
- 文脈長モデルが1回の処理で扱えるトークン数の上限です。入力(指示・会話履歴・資料)と出力の合計がこの範囲に収まる必要があり、長いほど多くの資料を一度にまとめて渡せます。