AI・機械学習
上級

トークナイザアーキテクチャ(トークナイザアーキテクチャ)

トークナイザアーキテクチャとは、自然言語テキストをLLMが処理可能なトークン列に変換するシステムの設計構造である。BPE、Unigram、WordPiece等の分割アルゴリズム、語彙構築戦略、特殊トークン設計を包含し、モデルの性能・効率・多言語対応能力を根本的に規定する。

0 回閲覧
0 いいね

トークナイザアーキテクチャは、LLMパイプラインの最初と最後に位置する基盤コンポーネントである。入力テキストをトークンIDの列に変換(エンコード)し、モデル出力のトークンIDをテキストに復元(デコード)する。トークナイザの設計はモデルの語彙サイズ、推論効率、多言語性能、さらにはコスト構造(API課金はトークン数ベース)に直結する。

概要

トークナイザの役割は「人間が読めるテキスト」を「モデルが処理できる数値列」に変換することだが、この変換方法の選択がモデル全体の性能を左右する。2026年現在、主要LLMのトークナイザ設計は以下の3つの軸で分類される:

  1. 分割アルゴリズム: BPE(GPT系)、Unigram(Gemma系)、WordPiece(BERT系)
  2. 語彙サイズ: 32K(Llama 2)〜256K(Gemini 2.0)
  3. 前処理: バイトレベル(GPT-4)、文字レベル(BERT)、SentencePiece(言語非依存)

トークナイザの設計判断が影響する要素:

設計要素影響範囲トレードオフ
語彙サイズ推論速度・メモリ・圧縮率大語彙=高圧縮だがembedding層巨大化
分割アルゴリズム未知語処理・一貫性BPE=決定的、Unigram=確率的
バイトフォールバック多言語・特殊文字対応対応範囲拡大だがトークン数増加
特殊トークン機能制御・安全性多機能だが語彙を消費
正規化入力の一貫性情報損失のリスク

主要トークナイザの比較

モデルアルゴリズム語彙サイズ実装特徴
GPT-4/4oBPE100,277tiktokenバイトレベルBPE、高速Rust実装
Claude 4BPE~100K非公開多言語最適化、長文効率化
Llama 3/3.1BPE128,256SentencePiece前世代32Kから4倍拡張
Gemma 2/4Unigram256,000SentencePieceGoogle最大語彙、多言語強化
Gemini 2.0Unigram256,000非公開Gemma共通語彙
Qwen3BPE151,936tiktoken中日英最適化
Mistral 3BPE32,768SentencePiece小語彙高効率

トークナイザの内部処理フロー

テキスト「Hello, world!」の処理例(GPT-4 tiktoken):

  1. 正規化: Unicode正規化(NFC/NFKC)、空白の統一
  2. プレトークン化: 正規表現パターンでテキストを初期チャンクに分割(空白、句読点、数字で区切り)
  3. サブワード分割: BPE/Unigramアルゴリズムでチャンクをトークンに分割
  4. ID変換: トークン文字列を語彙テーブルで整数IDに変換
  5. 特殊トークン付加: <|im_start|>, <|im_end|> 等のコントロールトークンを追加

語彙サイズの設計戦略

語彙サイズはトークナイザ設計の最重要パラメータの1つである。

小語彙(32K)の利点:

  • Embedding層が小さくメモリ効率が良い
  • 訓練データが少なくても各トークンの学習が充分
  • モデルサイズが小さい

大語彙(128K-256K)の利点:

  • テキストの圧縮率が高い(同じ文が少ないトークンで表現可能)
  • 多言語対応が容易(各言語のトークンを十分に収録可能)
  • 推論時の生成ステップ数が減少し、レイテンシが改善

Llama 2(32K)→Llama 3(128K)の語彙拡張では、英語テキストで15%、非英語テキストで最大50%のトークン圧縮改善が報告された。

よくある質問(FAQ)

Q1: トークナイザの語彙サイズがAPI料金に影響しますか? A: 間接的に大きく影響します。語彙が大きいトークナイザほどテキストを少ないトークンで表現できるため、同じ文章でもAPI呼び出しのトークン数(=課金対象)が減少します。例えばLlama 3(128K語彙)はLlama 2(32K語彙)と比較して日本語テキストで約40%少ないトークンで表現可能です。

Q2: なぜモデルごとにトークナイザが異なるのですか? A: トークナイザは訓練データの言語分布やモデルの用途に最適化されるためです。英語中心のモデルは英語の圧縮率を優先し、多言語モデルは各言語に均等なトークン割り当てを目指します。また、コード特化モデルではプログラミング言語のキーワードや構文を効率的にトークン化する設計が採用されます。

Q3: トークナイザを後から変更できますか? A: 原則として不可能です。トークナイザはモデルのEmbedding層と密結合しており、語彙を変更すると全パラメータの再学習が必要です。ただし、既存語彙にトークンを追加する「語彙拡張」は限定的に可能で、新言語対応やドメイン特化に利用されます(追加トークンのEmbeddingのみ再学習)。

Q4: 日本語はなぜトークン数が多くなりがちですか? A: 英語中心の訓練データで構築された語彙では、日本語の漢字・ひらがな・カタカナの組み合わせが十分にカバーされず、1文字ずつまたはバイト単位に分割されるためです。Llama 2では「東京」が4-6トークンに分割されていましたが、語彙拡張されたLlama 3では1-2トークンで表現可能になりました。

まとめ

  • トークナイザはLLMの入出力を規定する基盤アーキテクチャ
  • BPE(GPT/Llama系)とUnigram(Gemma/Gemini系)が2大主流
  • 語彙サイズは32K-256Kの範囲で、大語彙ほど圧縮率・多言語性能が向上
  • 語彙設計はAPI料金・推論速度・多言語性能に直結する重要な設計判断
  • トークナイザの後からの変更は事実上不可能、初期設計が極めて重要