01 Tokenizer · 準備

Tokenizer を書く前に:テキストはどう Token になるのか

プロジェクトで最初に整理すべき概念、つまり Unicode テキスト、UTF-8 バイト、BPE マージ、モデルが受け取る Token ID の関係をまとめるプレビュー記録です。

準備段階の記録 — コードではまだ検証していません

何が起きたか

言語モデルが受け取るのは整数 ID ですが、入力は人が読める Unicode テキストです。実装前に、その間の変換を一つずつ明確にします。

既存実装をそのまま写し、文字、バイト、語彙、merge rank の役割を理解できないことが最初のリスクです。

解きたい疑問

GPT-2 はなぜ Unicode 文字を基礎語彙にせず、UTF-8 バイトと byte-level BPE から始めるのか。encode と decode はどの不変条件を守るべきか。

今の考え

バイトから始めることで、有限の基礎記号だけで任意の UTF-8 入力を表現でき、未知文字のための別フォールバックが不要になるはずです。

そのバイト表現の上で、BPE が再利用できる系列を学習します。元の GPT-2 encoder や往復テストと結果が一致するまでは、あくまで仮説です。

どう確かめるか

  1. 01

    往復

    ASCII、中国語、日本語、絵文字、空白、混在入力で decode(encode(text)) === text を確認します。

  2. 02

    参照実装

    元の GPT-2 語彙とマージ規則を使い、Token ID と復号結果を比較します。

  3. 03

    失敗例

    不正バイト、連続空白、結合文字、境界条件をフォールバックで隠さず記録します。

今わかっていること

まだ結論はありません。Tokenizer を実装して上の検証を実行したら、ここを更新します。

次のステップ

元の encoder 実装を読み、encode/decode のデータフローを描き、BPE merge 実装前に最初の失敗する往復テストを書きます。

プロジェクトへ戻る