データの解説 AIモデル

推定方法

原文:AI models documentation – Estimation

データベースの項目の一部は、論文などの情報源にそのまま報告されていないことが多いため、推定が必要になる。ここでは、計算量、モデルの規模、データセットの規模の推定方法と、推定の確信度に関するメタデータについて詳しく説明する。

計算量の推定

学習計算量は、Epoch AIの研究をはじめさまざまな場で使われていることからも分かるとおり、このデータセットで最も重要な情報の一つである。しかし、計算量の推定は難しいことがある。ここでは、注目すべきモデルのデータセットで計算量をどう推定しているかを概説する。

計算量は浮動小数点演算回数(FLOP)を単位として測る。古いモデルでは、該当する演算が整数演算だった場合があり、その場合は整数演算の回数を記録する。テンソルの形式や精度(例えばFP16とFP32やBF16)によって演算の価値が異なりうることを補正する係数は掛けない。情報源によっては、計算量を乗算・加算の演算回数、積和演算(FMA)の回数などで報告している。チップ性能の一般的な表記に合わせて、乗算・加算の1回(1 FMA)を2 FLOPとみなす。

データベースの各モデルの学習計算量は、事前学習を含み、部品として使った事前学習済みの基盤モデルの分も含めた合計の学習計算量である。ファインチューニングの計算量は、それ専用の列に記録する。ファインチューニングかどうかは、著者がその学習をファインチューニングと説明しているか、あるいは学習の別の段階で事前学習済みモデルを使っていることが明らかかどうかで見分ける。

最も単純なのは、論文に学習計算量が直接報告されている場合で、その数値をデータベースに入力する。計算量が報告されていない場合は、主に次の二つの方法で推定する。

  1. ハードウェアの詳細と使用量から推定する。
  2. モデルのアーキテクチャとデータをもとに演算回数を数える。

演算回数を数えるのに十分な情報があれば、このデータセットではそちらを優先する。ハードウェアにもとづく推定では、通常は利用率について仮定を置く必要があり、推定の精度が下がりうるからである。

ハードウェアの詳細と使用量

必要な詳細が分かっていれば、ハードウェアの詳細と使用量から計算量を推定するのは比較的簡単である。

  1. チップ時間で表した使用量。例えば「128基のTPUv3のクラスターで2日間学習した」なら、128チップ × 2日 = 256チップ日である。チップ数と使用時間が別々に報告されることもあれば、チップ時間で直接報告されることもある。報告がない場合は、公知の情報や一般的な学習実行との比較などから推定することがある。
  2. 使ったハードウェアの種類(例:NVIDIA H100、TPUv3)。論文に報告されているのが理想である。報告がなく、より推測に頼る推定になる場合は、機関と年をもとに仮定を置く必要があるかもしれない(例:Googleならその年の世代のTPUを使ったはずだ、など)。
  3. 使った数値表現の種類(例:FP32、FP16、BF16)。論文に報告されているのが理想である。報告がなくても、推測できることが多い。例えば、2019年より前に学習されたモデルの数値表現は、通常FP32だった。

これらの詳細が分かれば、ハードウェアと数値表現に応じたピーク性能(FLOP/s)を、ハードウェアの資料や下のツールで調べられる。最後に、実際の学習実行では、メモリのボトルネックやネットワークの遅延などのためにピーク性能を大きく下回るので、それを利用率で補正する。大規模な分散学習での典型的な利用率は30〜50%程度である。利用率が報告されていない場合は、近い時期の同等のモデルを参考に推定する。

ハードウェアの詳細から学習計算量を推定する計算例:ImageGPT

ブログ記事に、学習の詳細が一部書かれている。「[..]iGPT-Lは約2500 V100日学習した[…]」

数値表現は明記されていないが、2020年に大企業が学習させたモデルなので、数値形式はFP16だったと仮定する。

V100のテンソルFP16性能は125 TFLOP/sである。利用率を0.3と仮定すると、計算量は次のように推定できる。

8.1e21 FLOP = 2500 V100日 × 125e12 FLOP/s × 利用率0.3 × 86.4e3 秒/日

表2:ハードウェアの詳細から学習計算量を推定する計算例。

演算回数を数える

演算回数を数える方法は、ハードウェアや使用量の詳細が得られないことの多い古い研究で役に立つ。上の式は、密なモデルの学習計算量を求める、広く使える経験則を示している。まず、順伝播1回に必要なFLOPを推定する。これは接続数のおよそ2倍である。Mixture-of-Expertsのようなスパース性がある場合はこれを修正し、活性化されるエキスパートでの接続数を使う。

次に、逆伝播の分を加えるため、順伝播のFLOPを3倍する。再帰のない密なモデルでは、順伝播と逆伝播の比が1:2だからである。最後に、これにデータに対して行う伝播の回数(学習事例の数 × 学習のエポック数)を掛ける。Transformerベースの言語モデルでは、この式はよく使われる経験則「計算量 = 6 × パラメータ数 × 学習事例の数 × エポック数」と同じになる。

論文に順伝播1回のFLOPが直接報告されていることもある。その場合は、2 × 接続数の代わりにその値をそのまま使える。そうでなければ、ネットワークの各層のFLOPを合計して順伝播のFLOPを求める。各層のFLOPは表3に示す。

層トークンあたりの順伝播のFLOP(概算)
N個のニューロンからM個のニューロンへの全結合層2×N×M
形状H×W×Cのテンソルに、形状K×K×CのフィルターD個を、ストライドS、パディングPで適用するCNN2×H^2×W^2×C×D/S^2
形状H×W×Cのテンソルに、形状K×K×CのフィルターD個を、ストライドS、パディングPで適用する転置CNN2×D×H×W×C^2×K^2
大きさNの入力を受け取り、大きさMの出力を生成する、バイアスベクトル付きのRNN2×(N+M)×M
大きさNの入力を受け取り、大きさMの出力を生成する、バイアスベクトル付きの完全ゲート型GRU6×(N+M)×M
大きさNの入力を受け取り、大きさMの出力を生成する、バイアスベクトル付きのLSTM8×(N+M)×M
語彙サイズV、埋め込み次元Wの単語埋め込み0
系列長L、入力の大きさW、キーの大きさD、出力の大きさNの自己注意層2×W×(2×D+N) + 2×L×(D+N)
系列長L、入力の大きさW、キーの大きさD、ヘッドの出力の大きさN、出力の大きさM、注意ヘッド数Hのマルチヘッド注意層2×H×(W×(2×D+N) + L×(D+N) + N×M)
表3:よく使われるニューラルネットワークの層と、順伝播でのトークンあたりのFLOP。
アーキテクチャから学習計算量を推定する計算例:Attention Is All You Need

入力はトークンの系列で、平均の長さは20、語彙サイズは30,000である。各トークンは埋め込まれ、大きさ1024のベクトルで表される。エンコーダー層とデコーダー層はそれぞれ6層ある。エンコーダーとデコーダーの各組には、マルチヘッド注意(MHA)の副層が計3つと、全結合(FCN)の副層が2つある。最後に、最終の線形層とソフトマックスがある。

各MHA副層のパラメータは、入力の大きさW=64、ヘッドの出力の大きさN=64、キーの大きさD=64、ヘッド数H=16、最終出力の大きさM=1024である。したがって、各MHA副層はトークンあたり2×16×(64×(2×64+64) + 20×(64+64) + 64×1024) = 2.6e6 FLOPとなる。

各FCN副層は、入力の大きさが1024、出力の大きさが1024で、4096ユニットの隠れ層を1つ持つ。したがって、各FCN副層はトークンあたり2×2×1024×4096 = 1.7e7 FLOPとなる。

全層を合計すると、エンコーダー・デコーダーのスタックはトークンあたり6 × (3 × 2.6e6 + 2 × 1.7e7) ~= 2.5e8 FLOPとなる。最終の線形層はトークンあたり2 × 1024 × 3e4 = 6.1e7 FLOPである。これらを合計すると、順伝播1回はトークンあたり3.1e8 FLOPとなる。

論文によれば、25,000トークンのバッチを使い、300,000ステップ学習している。したがって、学習の総FLOPは2.5e4 × 3e5 × 3 × 3.1e8 = 6.97e18 FLOPとなる。

表4:アーキテクチャから学習計算量を推定する計算例。

ベンチマークの性能

モデルのアーキテクチャ、学習データ、ハードウェア、開発期間についての詳細が乏しい場合は、ベンチマークでのモデルの性能をほかのモデルと比べると手がかりが得られることがある。同じモデルファミリーを拡大する場合、スケーリング則によって、計算量に応じたベンチマーク性能の向上を予測できる(例えば、GPT-4の拡大に伴うコーディング性能や、Llama-3のARC Challenge)。モデル・データ・学習に違いがあると、計算量からベンチマーク性能を予測するのは難しくなるが、それでも両者は相関している。

ベンチマークの性能から学習計算量を推定するこの手順は、多くのベンチマークの性能を集約すると改善できる。学習計算量が分かっているモデルがいくつも、あるいは多数、それらのベンチマークで評価されている場合は特にそうである。

手順はおおよそ次のとおりである。

  • 学習計算量とベンチマークのスコアが分かっている、多数のベンチマーク(例:MMLU、GPQA、BigCodeBench)とモデル(例:Llama 3、Mistral Large、Nemotron 4)のデータセットを集める。
  • ベンチマークごとに、各モデルのベンチマークのスコアを学習計算量の関数として最もよく表す曲線を当てはめる。曲線の当てはめにはシグモイド関数を使う。これは私たちの研究「言語モデルのベンチマーク性能はどれほど予測可能か」にもとづく。
  • 当てはめた曲線を使い、学習計算量が分かっていないモデルについて、y値(ベンチマークのスコア)からx値(学習計算量)を求める。これは、それらのモデルが示したベンチマークのスコアを達成するのに必要な、おおよその学習計算量を表す。
    • 得られた推定値は交差検証にかけ、ベンチマークの評価のデータ点の一部を除いても当てはめた値が妥当であることを確かめる。
  • 該当する場合は、開発者が利用できた計算資源についてのほかの情報とベンチマークからの証拠を組み合わせ、モデルの学習に使われた計算量の総合的な推定値を得る。
  • アルゴリズムの効率が最も近いモデルだけに絞って当てはめると役立つことがある。例えば、この方法で2024年の主要な大規模言語モデルの情報を集めた際には、アルゴリズムの効率がLlama 3ファミリーと同程度かそれ以上のモデルに絞って当てはめた。

この手順は、公開しているColabノートブック「ベンチマークのスコアからの計算量の推定」で実演している。こうした計算量の推定値はそもそもベンチマークの性能にもとづいているので、ベンチマークと計算量の関係を分析する際には除外すべきである。こうした推定値は、Training compute estimation method(学習計算量の推定方法)の項目で絞り込める。

モデルの規模の推定

パラメータ数はモデルの開発者が報告していることが多いが、明記されていない場合でも、示されたアーキテクチャの詳細から推定できることがある。計算量の推定と同じく、パラメータ数を推定するには、アーキテクチャの記述(層の種類、数、構成)を見つけ、各層のパラメータを計算して合計する。表5に、さまざまな層のパラメータ数を挙げる。また、アーキテクチャの実装がコードで公開されていれば、そのアーキテクチャをコードで読み込んでパラメータ数を数えるほうが簡単なこともある。

層パラメータ数(概算)
N個のニューロンからM個のニューロンへの全結合層N×M
形状H×W×Cのテンソルに、形状K×K×CのフィルターD個を、ストライドS、パディングPで適用するCNND×K^2×C
形状H×W×Cのテンソルに、形状K×K×CのフィルターD個を、ストライドS、パディングPで適用する転置CNND×K^2×C
大きさNの入力を受け取り、大きさMの出力を生成する、バイアスベクトル付きのRNN(N+M)×M
大きさNの入力を受け取り、大きさMの出力を生成する、バイアスベクトル付きの完全ゲート型GRU3×(N+M)×M
大きさNの入力を受け取り、大きさMの出力を生成する、バイアスベクトル付きのLSTM4×(N+M)×M
語彙サイズV、埋め込み次元Wの単語埋め込みW×V
系列長L、入力の大きさW、キーの大きさD、出力の大きさNの自己注意層W×(2×D+N)
系列長L、入力の大きさW、キーの大きさD、ヘッドの出力の大きさN、出力の大きさM、注意ヘッド数Hのマルチヘッド注意層H×(W×(2×D + N) + N×M)
表5:よく使われるニューラルネットワークの層とパラメータ数。
Attention Is All You Need

入力はトークンの系列で、平均の長さは20、語彙サイズは30,000である。各トークンは埋め込まれ、大きさ1024のベクトルで表される。エンコーダー層とデコーダー層はそれぞれ6層ある。エンコーダーとデコーダーの各組には、マルチヘッド注意(MHA)の副層が計3つと、全結合(FCN)の副層が2つある。最後に、最終の線形層とソフトマックスがある。

各MHA副層のパラメータは、入力の大きさW=64、ヘッドの出力の大きさN=64、キーの大きさD=64、ヘッド数H=16、最終出力の大きさM=1024である。したがって、各MHA副層のパラメータ数は16×(64×(2×64 + 64) + 64×1024) = 1.2e6となる。

各FCN層は、入力の大きさが1024、出力の大きさが1024で、4096ユニットの隠れ層を1つ持つ。したがって、各FCN層のパラメータ数は2×1024×4096 = 8.4e6となる。

全層を合計すると、エンコーダー・デコーダーのスタックのパラメータ数は6 × (3 × 1.2e6 + 2 × 8.4e6) ~= 1.2e8となる。最終の線形層のパラメータ数は1024 × 3e4 = 3.1e7である。二つの埋め込み層はそれぞれ30e3 × 1024のパラメータを持ち、合計6.2e7となる。これらを合計すると、モデルのパラメータ数は2.1e8となり、論文で報告されている2億1300万パラメータと一致する。

表6:アーキテクチャからモデルの規模を推定する計算例。

消費電力の推定

「Training power draw (W)」(学習時の消費電力)の項目には、モデルの学習に使ったハードウェアの消費電力をワット単位で記録している。この項目は、学習に使ったハードウェアの種類と数が分かっている場合に記入し、次のように計算する。

学習時の消費電力 = PUE × サーバーのオーバーヘッド × GPUあたりの電力 × ハードウェアの数

ここで、

PUE = 1950〜2008年は1.23、2025年は1.08

2009年以降、PUEは年ln(1.08/1.23)/16 ≈ 0.8%の割合で指数関数的に低下する。値はモデルの公開日にもとづく。

サーバーのオーバーヘッド = ハードウェアの数が1なら1、ハードウェアの数が1より大きければ1.82

この式では、チップあたりの電力にチップ数を掛けて計算用ハードウェアのピーク消費電力を求め、そのうえで、プロセッサーをつなぐのに必要なサーバーのハードウェアと、ハードウェアを収める施設の電力使用効率で補正する。

サーバーのオーバーヘッドの係数は、複数のGPUやTPUをつないで同じ計算タスクに使うのに必要な、サーバーのハードウェアの消費電力を表す。

この値はNVIDIA DGX H100サーバーから求めたもので、GPUを含むサーバーの消費電力をGPUだけの消費電力と比べている。サーバーの消費電力10.2 kW /(8 × H100のTDP 700 W)≈ 1.82である。

このサーバーを選んだのは、最も典型的なハードウェアであり、現代の注目すべき機械学習モデルの学習に使われるハードウェアを代表しているからである。2025年5月時点で、EpochのAIモデルのデータセットにあるモデルの学習に使われたハードウェアのサーバー電力オーバーヘッドの幾何平均(各種類のハードウェアで学習された注目すべきモデルの数で重み付け)は1.79で、DGX H100サーバーのオーバーヘッドにきわめて近かった。また、H100は、EpochのAIモデルのデータセットにある注目すべきモデルの学習計算量の合計の大半を占め、EpochのAIスーパーコンピューターのデータセットにあるAIクラスターの導入済み計算能力の大半も占めている。H100を含むHopperチップは、2024年末時点でNVIDIAのAIチップの計算能力の総量の大半を占めている。

電力使用効率の係数は、データセンター施設が消費するエネルギーと、計算機器に供給される電力との比である。冷却などの計算以外の電力消費によって、プロセッサーやサーバーを動かすのに余分に必要になるエネルギーを表す。Googleが開示しているデータセンターの効率にもとづき、2008年以前は1.23、2025年は1.08とし、2009年以降は年ln(1.08/1.23)/16 ≈ 0.8%の割合で指数関数的に低下する値を選んだ。Metaなどほかのハイパースケーラーのデータセンターの効率も同程度である。AI向けでないデータセンターは効率が低い傾向にあるが、業界平均も同様の傾向をたどっている。

数値形式の推定

データ収集を効率化するため、大規模言語モデルによる分類パイプラインを使っている。192のモデルからなる検証用データでは、誤り率は4%だった。方法の詳細はこちらを参照してほしい。

確信度の推定

項目の定義で述べたとおり、確信度の区分は、90%信頼区間として次の幅を表す。

  • Confident(確度が高い):±3倍(約0.5桁)。
  • Likely(おそらく正しい):±10倍(1桁)。
  • Speculative(推測的):±31倍(約1.5桁)。

確信度は、Training compute(学習計算量)、Parameters(パラメータ数)、Training dataset size(学習データセットの規模)の記録値に適用する。値が記入されているもののうち、最も不確かな値の確信度を表す。

確信度の区分を推定するにあたっては、推定のどの部分が不確かで、その不確かさがどれくらい大きいかを考える。

  • 詳細(計算量、モデルの規模、データセットの規模)がすべて直接報告されていれば、値はConfidentである。誤りの余地はほとんどない。
  • 仮定をまったく置かずに詳細を推定できる場合も、値はConfidentである。例えば、ハードウェアの種類、数、学習時間、数値形式、利用率がすべて報告されていれば、そこから得られる計算量の推定は一意に定まる。
  • 詳細があいまいで仮定を置く必要がある場合は、その仮定の不確かさを考慮する。
  • 例えば、ハードウェアの詳細から学習計算量を推定する際には、利用率を推定する必要があることが多い。言語モデルの典型的な範囲は0.3〜0.5なので、この推定はConfidentの区分に収まるはずである。
  • あいまいさがさらに大きいと、推定はLikelyの区分に移ることがある。例えば、MedBERTは1基のV100 GPUで1週間学習したが、著者は学習中の演算精度やテンソルコアの使用を報告していない。これらによって計算量は4倍変わりうる。
  • 最後に、学習時間やハードウェアなど(報告されていない)主要なパラメータについて、もっともらしい範囲にほぼ全面的に頼る推定もある。こうした推定は通常Speculativeの区分に入る。例としてGPT-4がある。その計算量の推定は、学習期間とハードウェアを大まかに推定できる間接的な報道にもとづいている。

← データの解説一覧へ

非公式の日本語訳公式ページ(英語):epoch.ai/data/ai-models-documentation/estimation