データセットのトークン数の計算
入力
| 単語数 | 100 |
|---|---|
| 1単語あたりトークン数 | 1.3 |
| エポック数 | 1 |
データセットのトークン数の計算
単語数と1単語あたりのトークン数の比から、テキストコーパスに含まれるトークン数を推定し、学習エポック数を掛けてモデルが処理する総トークン数を求める。
入力
コーパス
結果
値を入力すると計算結果が表示されます。
詳細
データセットのトークン数
言語モデルの学習と予算策定は、データセットがどれだけのトークンを含むかという一つの量から始まります。しかしコーパスは通常、トークンではなく単語数や文書数、ギガバイトで表され、モデルが読み込むのはトークンだけです。本ツールはその隔たりを埋めるもので、1単語あたりのトークン数の比によって単語数を推定トークン数に換算し、学習エポック数を掛けてモデルが処理する総数を示します。
単語ではなくトークン
トークンとは、トークナイザがテキストをサブワード片に分割するときに生成する最小単位です。頻出する単語は1トークンになることが多い一方、まれな語や長い語は複数に分割されるため、ある文章はほぼ常に単語数よりも多くのトークンを含みます。この対応関係はトークナイザが学習したものであり、トークンと単語の比は普遍的な定数ではなく、トークナイザとテキストの性質です。単語とトークンを同一視すると実際の数を過小評価し、それに伴って学習に必要な計算資源も見誤ります。
推定の仕組み
コーパスの規模は百万語単位の単語数 として入力します。これに一単語あたりトークン数 を掛けると、データを一回走査したときのトークン数が得られます。コーパスを エポック繰り返すとモデルが行う計算量が増えるため、実効的な学習トークン数は一回走査分の総数にエポック数を掛けた値になります。学習データの規模は十億トークン単位で表されることが多いため、百万単位の総数から十億単位の値も導出します。
計算式
百万語単位の 、比 、エポック数 を用いると、一回走査分の総数 (百万)と、エポックを掛けた学習総数 (百万)は次のように表されます。
TE=W⋅r=T⋅e十億単位の値は単純に です。
計算例
1億語のコーパスを1単語あたり1.3トークンでトークン化し、3エポック学習する場合を考えます。
TE=100×1.3=130 百万トークン=130×3=390 百万トークンデータの1回走査は約130百万トークン、すなわち0.13十億です。3エポック学習するということは、一意なトークンは130百万しかないにもかかわらず、モデルが390百万トークン相当の前向き計算と逆伝播を行うことを意味します。一意な総数は利用可能な情報量を表し、エポックを掛けた総数は計算作業量、ひいては計算資源を表します。
比の選び方
現代のバイトペアトークナイザでトークン化した英語の散文では、1単語あたり1.3トークン前後が妥当な既定値で、1トークンあたり約4文字という関連する近似もあります。コード、数式、ラテン文字以外の文字体系はより多くのトークンに分割される傾向があり、比が大きくなります。確実な方法は、対象のトークナイザを代表的なサンプルに適用し、出力されたトークン数をそのサンプルの単語数で割って測定した比をここで用いることです。逆方向の換算、すなわちトークン予算から読みやすい長さへの換算はトークンから単語数への変換で扱います。
限界
この結果は推定値です。正確なトークン数は使用するトークナイザ、書式や空白、文書の連結方法に依存し、単一の比ではこれらを完全には捉えられません。エポックを追加トークンとして数えるのは計算資源とスケーリングの観点では正しいものの、繰り返されたトークンは新しい情報を持たず、数回を超えると効果が逓減します。あるモデル規模に対してデータセットが十分かを確認するには、1回走査分の総数をChinchilla最適トークン数の計算最適な目標値と比較します。
よくある質問 (FAQ)
トークンと単語はどう違いますか。
トークンはモデルが実際に読み込む単位で、テキストをサブワード片に分割するトークナイザによって生成されます。頻出する単語は1トークンに対応することが多い一方、まれな語や長い語は複数に分割されるため、テキストのトークン数は通常その単語数より多くなります。
両者の比はトークナイザと言語によって決まります。このため本ツールでは両者を等しいとみなさず、明示的な1単語あたりトークン数を単語数に掛けて推定します。
妥当な1単語あたりトークン数はどれくらいですか。
現代のバイトペアまたはユニグラムのトークナイザでトークン化した英語の散文では、1単語あたり1.3トークン前後が経験則の目安で、1トークンあたり約4文字という関連する推定もあります。コード、数式、形態が豊かな言語やラテン文字以外の文字体系では、1単語あたりのトークン数が通常より多くなります。
最も信頼できる値は、対象のトークナイザを実際のコーパスの代表的なサンプルに適用し、得られたトークン数をその単語数で割って求めたものです。
繰り返すエポックはトークン数として加算すべきですか。
計算資源とスケーリングの見積りでは加算します。各エポックはデータ全体に対して前向き計算と逆伝播を改めて行うため、実効的な学習トークン数は1回走査分にエポック数を掛けた値になります。
データの一意性を問う場合は区別が重要です。繰り返されたトークンは新しい情報ではなく、数回を超えると効果は逓減するためです。本ツールは一意な1回走査分の総数と、エポックを掛けた学習総数の双方を表示し、どちらの観点でも確認できるようにしています。
免責事項
トークン数は平均的な1単語あたりトークン数に基づく推定値であり、正確な総数は使用するトークナイザとテキスト自体に依存します。計算資源の予算を確定する前に、対象のトークナイザをサンプルに適用して正確な値を確認してください。