🔧

Tokenizer作成ガイド

2024/08/07に公開

Tokenizer作成ガイド

はじめに

この記事では、トークナイザーの作成手順について、実際の作業手順に基づいたガイドを提供します。特に、コーパスの前処理からトークナイザーの学習、評価、そしてMoEモデルへの統合までの一連の流れを詳細に解説します。

私たちは以下の手順で作業を進めました:

  1. コーパス前処理
  2. トークナイザーの学習と評価
  3. MoEモデルとの統合と評価
  4. 進捗管理と作業の共有

各ステップについて、具体的な作業内容と直面した問題、その解決策を説明します。

ステップ1: コーパス前処理チームの役割分担案

コーパス前処理担当

  • 各自が割り当てられたコーパスの前処理スクリプトを使って調整
  • 適切な前処理方法の選択と、除去ルールの決定

品質評価担当

  • 前処理後のデータの品質評価
  • 前処理ルールの改善案の提示

ドキュメンテーション担当

  • 前処理手順と除去ルールのドキュメント化

進捗管理

  • 前処理作業の進捗管理と調整

前処理の進め方

  • コーパスごとに担当者を決め、各自で前処理スクリプトの削除パターン、残す特殊フレーズ等の関数追加
  • 品質評価担当者が前処理後のデータを確認し、問題点を特定
  • 除去ルールを決定し、前処理スクリプトを更新
  • 更新したスクリプトを実行し、クリーンなコーパスを作成
  • 品質評価を繰り返し、ルールを改善

上記の前処理は、時間的に数学のデータセットのみしか実行できなかったです。

ステップ2: トークナイザーの学習と評価

学習データ・評価データの準備

  • 学習データ: 全コーパスを結合した4Gバイトのデータ
    • 日本語wiki 1.2G、英語C4 1.2G、Code 0.4G、医療0.4G、法律0.4G、数学0.4G
  • 評価データ: 学習データの10%をホールドアウト
    • 0.4Gバイト

トークナイザーのアルゴリズム

  • t1: SentencePiece (Unigram)
  • t2: Mecab → SentencePiece (Unigram)
  • t3: SentencePiece (BPE)
  • t4: Mecab → SentencePiece (BPE)

評価指標

  • 未知語率 (Unk Rate)
  • 平均トークン長 (Avg Len)
  • トークン化速度 (Speed)
  • Llama 0.1B での最終損失 (Final Loss)

進め方

  • 前処理済みの学習データを用いて、4種類のトークナイザーを学習
  • 評価データで各トークナイザーの性能を評価し、指標を算出
  • Llama 0.1B で各トークナイザーを使ってモデルを学習
  • 最終損失を比較し、最適なトークナイザーを選定
  • 必要に応じて、ハイパーパラメータの調整を行う

上記のMecabとモデルの学習までは、時間が足らずに試せませんでした。

ステップ3: MoEモデルとの統合と評価

MoEモデルへの統合

  • 選定したトークナイザーを使って、SMoEモデルの入力データを前処理
  • MoEモデルをカスタムトークナイザーに対応させるよう修正
  • 変更後のSMoEモデルが正常に動作することを確認

MoEモデルの評価

  • カスタムトークナイザーを使った SMoE と、既存トークナイザーを使った SMoE の性能を比較
  • 評価指標: perplexity、生成文の質など
  • 必要に応じて、トークナイザーやSMoEモデルの調整を行う

上記は中々時間が足らず、検証ができませんでした。

ステップ4: 進捗管理と作業の共有

進捗管理

  • 進捗共有ミーティングを設ける
  • 遅れが生じた場合は適宜対処し、計画の見直しを行う

作業の共有

  • GitHubなどを使ってスクリプトやドキュメントを共有
  • READMEにスクリプトの使い方と実行結果の解釈を記載
東大松尾・岩澤研究室 | LLM開発 プロジェクト[GENIAC]

Discussion