Byte Pair Encoding(BPE)は、テキスト圧縮アルゴリズムを応用したサブワード分割手法で、コーパス中の最頻出バイグラムを反復的にマージして語彙を構築する。GPT-4o・Llama 3・Mistralなど2026年の主要LLMで最も広く採用されているトークナイザーアルゴリズムである。
BPE(Byte Pair Encoding、バイトペア符号化)は、1994年にPhilip Gageがデータ圧縮アルゴリズムとして提案し、2016年にSennrichらがニューラル機械翻訳のサブワード分割に応用した手法である。GPT-4o(o200k_base、200,019語彙)、Llama 3(128,256語彙)、Mistral Large(32,768語彙)など、2026年現在の主要LLMのトークナイザーとして最も広く採用されている。
BPEは「最も頻出する隣接トークンペアを1つの新トークンにマージする」操作を目標語彙サイズに達するまで反復するアルゴリズムである。初期状態では各文字(またはバイト)が1つのトークンとなり、マージ操作によって徐々に長いサブワード単位が語彙に追加される。
学習の具体例として、「low lower lowest」というコーパスからBPE語彙を構築する場合:
{l, o, w, e, r, s, t, _}l + o → lo を追加(出現3回)lo + w → low を追加(出現3回)e + r → er を追加(出現1回)e + s → es を追加(出現1回)| 項目 | CharレベルBPE | バイトレベルBPE |
|---|---|---|
| 初期語彙 | Unicode文字(数万種類) | UTF-8バイト値(256種類) |
| 未知文字 | [UNK] トークンに置換 | バイト分解で必ず表現可能 |
| 代表モデル | 初期BPE研究 | GPT-2以降の全GPT系 |
| 多言語対応 | 語彙に含まれない文字は処理不可 | 任意のUnicode文字を処理可能 |
| 語彙効率 | 高い(文字単位) | やや低い(バイト単位で冗長) |
GPT-2で導入されたバイトレベルBPEは、UTF-8の全256バイト値を初期語彙とすることで、あらゆるUnicode文字列を[UNK]なしで表現可能にした。この設計はGPT-3、GPT-4、GPT-4oに引き継がれ、LLMトークナイザーの事実上の標準となっている。
BPEトークナイザーの学習は以下の手順で実行される:
学習の計算量はO(N × V)(N=コーパスサイズ、V=目標語彙サイズ)で、GPT-4oクラスの200K語彙を数TBのコーパスから学習するには数百GPU時間を要する。
学習済みBPEトークナイザーによるトークン分割は以下の手順で実行される:
例として、「tokenization」のBPEトークン分割:
t o k e n i z a t i o nto k e n i z a t i o ntok en i z at i ontoken iz ationtoken ization(2トークン)| モデル | 実装 | 語彙サイズ | 正規表現前分割 | バイトフォールバック | 学習コーパス規模 |
|---|---|---|---|---|---|
| GPT-4o | tiktoken (Rust) | 200,019 | あり | あり | 推定13兆トークン |
| Llama 3 | tiktoken互換 | 128,256 | あり | あり | 15兆トークン |
| Mistral Large | SentencePiece BPE | 32,768 | なし(▁方式) | あり | 非公開 |
| Falcon 2 | HuggingFace BPE | 65,024 | あり | あり | 5.5兆トークン |
| Phi-3 | tiktoken | 32,064 | あり | あり | 3.3兆トークン |
Q1: BPEとUnigram LMはどちらが優れていますか? A: 用途によります。BPEは決定的な分割を行い実装が高速なため、GPT-4oやLlama 3など推論速度重視の大規模LLMで主流です。Unigram LMは確率的に複数の分割候補から最尤選択するため多言語性能に優れ、Gemma 2やT5で採用されています。2026年時点ではBPEが市場シェアで圧倒的です。
Q2: BPEの語彙サイズを増やすとモデル性能は上がりますか? A: 一般的にはトークン効率が向上し、同じテキストをより短いシーケンスで表現できるため推論コストが下がります。GPT-4oはcl100k_base(100K語彙)からo200k_base(200K語彙)に拡大し、平均15%のトークン数削減を達成しました。ただし語彙拡大は埋め込み層のパラメータ増加(200K × 隠れ次元)を伴うため、モデルサイズとのバランスが重要です。
Q3: tiktokenとHuggingFaceのBPE実装の違いは何ですか? A: tiktokenはOpenAIがRustで実装した高速BPEライブラリで、正規表現による前分割とバイトレベルBPEを組み合わせています。HuggingFace Tokenizersも同様にRust実装ですが、BPE・WordPiece・Unigram LMなど複数アルゴリズムをサポートする汎用ライブラリです。速度面ではtiktokenがやや高速(約1.5倍)ですが、HuggingFaceの方がカスタマイズ性に優れます。