Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2001.08361] Scaling Laws for Neural Language Models [paper-reading] #74

Open
yoheikikuta opened this issue Oct 11, 2024 · 6 comments
Open

Comments

@yoheikikuta
Copy link
Owner

論文リンク

https://arxiv.org/abs/2001.08361

公開日(yyyy/mm/dd)

2020/01/23

概要

TBW.

@yoheikikuta
Copy link
Owner Author

OpenAI が出した scaling law に関する論文。
時期的には GPT-2 (201902) の一年後くらいで、GPT-3 (202005) の少し前というもので、おそらくは GPT-3 の開発過程で見つかった特徴的な scaling law の部分を切り出して論文化したもの。

原論文をちゃんと読んだことがなかったので読んでみる。

ちなみに OpenAI が出している scaling law に関する論文は以下。

上二つが特に有名で、scaling law 自体の研究を熱心にやっているのは Google という印象。

@yoheikikuta
Copy link
Owner Author

yoheikikuta commented Oct 11, 2024

論文の最初の方に主要な結果のサマリが並べられている。
自己回帰の言語モデルを Transformer Decoder で学習した場合の特徴である。

  • Performance depends strongly on scale, weakly on model shape
    • モデルの性能はモデルパラメータ数 𝑁(埋め込みを除く)、データセットのサイズ 𝐷、トレーニングに使用される計算量 𝐶 という3つの要素からなるべき則に強く依存する。depth vs. width といった他のアーキテクチャ上のハイパーパラメータには非常に弱く依存する。
  • Smooth power laws
    • 他の2つによってボトルネックがない場合、性能はそれぞれのスケール要因 𝑁、𝐷、𝐶 とべき乗の関係があり、その関係性は6桁以上に渡って有効性を示しており、逸脱の傾向も観測されてない(でも損失が 0 にいく前に平坦化はするはず)。
  • Universality of overfitting
    • N と D を同時にスケールアップする限り性能は予測可能に改善するが、𝑁 または 𝐷 を固定すると収穫逓減の領域に入る(つまり改善はするが改善率は落ちていく)。性能のペナルティは比率 $\frac{N^{0.74}}{D}$ に依存し、モデルサイズを8倍に増やすたびに、ペナルティを避けるためにデータをおよそ5倍に増やせばよい。
    • これはつまり 8^{0.74} = 4.7 なのでデータは大体 5 倍ということ。9^{0.74} = 5.1 なのでこちらの方がより近いが、モデルサイズは 2 のべき乗で増大させていくことを念頭に置いてる感じかな。
  • Universality of training
    • 学習曲線は予測可能なべき則に従い、そのパラメータはモデルサイズにほぼ依存しない。学習曲線の初期部分を外挿することで、学習をさらに長く行った場合に達成される損失を大まかに予測可能である。
  • Transfer improves with test performance
    • 学習したテキストとは異なる分布のテキストでモデルを評価すると、validation data での結果と強く相関し、損失においてほぼ一定のオフセットがある。これは、異なる分布への転移は一定のペナルティを伴うがそれ以外は学習時の性能と同じように改善していくと考えてよい、ということを示している。
  • Sample efficiency
    • 大規模モデルは小規模モデルよりもサンプル効率が高く、より少ない最適化ステップとより少ないデータポイントで同じレベルの性能に到達する(詳しくは図で)。
  • Convergence is inefficient
    • 学習時の計算量 $C$ を固定して考えると、最適な性能はデータを何回も舐めて学習するのではなく、学習は収束されられなくてもめちゃくちゃ大きいモデルサイズを学習する方が性能が高まる。小さなモデルを収束まで学習させる場合はデータを十分に回す必要があるが、モデルが大規模になっていくとそれは変わり、モデルサイズを十分に大きくすることが重要になる。このべき則は $D \sim C^{0.27}$ であり、計算量を固定資源だと考えた時に、データ量は(モデルサイズと比べて)必要な量の増加は穏やかになる。
  • Optimal batch size
    • 学習の理想的なバッチサイズはおおよそ損失のべき乗のみで決まり、勾配ノイズスケール https://arxiv.org/abs/1812.06162 を測定することで決定可能である。最大のモデルにおいては収束時におおよそ 100万~200万 token が理想的なバッチサイズになる。
    • この論文の内容をかいつまんで書くと、batch size 小さすぎると個々のデータの影響を受けすぎるので noise が大きくなる、batch size が大きくなると noise の影響は小さくなるが計算量の増加に対して得られる効果は薄くなってくる、だからそのちょうどよいバランスがあるはずだと。そのバランスを見つけるのに勾配ノイズスケールとして勾配の共分散情報などに注目する量を測ればよいというものになっている。

@yoheikikuta
Copy link
Owner Author

計算量、データセットサイズ、モデルパラメタ数の scaling law の結果はこれ。
他の 2 つがボトルネックになっていないという状況下であれば、計算量 C と データ量 D と モデルパラメタ数 N はテストデータの損失に対して scaling law を示しており、大きくすればするほど性能が上がる。
何も制限がなければ、scaling law の fitting 的にはデータサイズを大きくするのが最も効果的。
一方で、現実的にはやはり計算量が一番厳しい制限になりやすいので、C を固定した上でどのようなデータサイズとモデルサイズにするのが最も効果的か、というのが重要になりそう。

モデルサイズを変えた時に、処理したトークン数もしくは費やした計算量でテストの損失がどのように変化するかをプロットしたものがこれ。
処理したトークンの方を見ると、モデルサイズを大きくしても性能向上に必要な数は大きくは変わってなくて、想定的にはより少ないサンプル数で効果的に学習が進んでいることが見て取れる。もちろん処理したトークン数を増やすほど最終的な性能は上がるんだけど、効果的に学習が進むところはモデルサイズにそこまで依存してない。
計算量の方はモデルサイズとともに smooth に大きくなっている。mostly-efficient training stops far short of convergence はちょっとこれだけだと解読が難しいけど、計算量的には現状そこに書いてあるくらいが実施しやすく、その場合は収束のはるか手前になっているということか。

次は計算量を横軸に取り、性能に関する寄与を縦軸に取ったときに、モデルやバッチサイズをどのような割合で増やしていけば最適になるかという結果。serial step は学習ステップをどれだけ回すか。
計算量が given の場合、その計算量が大きくなればなるほど、費やすべきはモデルパラメタサイズを大きくすることであり、その次にバッチサイズを大きくすること、学習ステップ数はほとんど無視してよい、というのがこの図が示していることである。
モデルサイズをそこそこにしてちゃんとデータをぐるぐる回したくなるところだけど、それは効果的ではなくて、データ使いきれなくてもいいから十分大きなモデルにした方がいいということ。
GPT-2 論文とかでも十分に学習データに fitting しきってなくても、大きなモデルを学習して性能が良かったぞとか報告していたね。

最後にデータサイズやモデルサイズで損失を予測する $L(D,N)$ を考えるとよく fit できるので最終的に損失がどうなりそうかが予測できること、色々なモデルサイズで横軸を(大きなミニバッチサイズは given で)学習ステップ数にとったときに損失が予測可能になること、を示している。これらの数式自体は後で出てくるが、肝は大規模に学習する前に予測可能になるということ。

@yoheikikuta
Copy link
Owner Author

詳細に入る前に、このような scaling law が 6 桁とか 7 桁異なるスケールで成立する、というのは真に驚くべきことと思う。
例えば物理においてはスケールが異なれば物理が異なる(異なるスケールをつなぐ繰り込みはあるが)というのに慣れているけど、このように少なくとも 6 桁とか 7 桁異なるスケールで同じ scaling law が成り立つというのは世の中になかなかない話だと思う(もちろん単純に比較できる話ではないし、自分が知らないだけで色々例はあるのかもしれないが)。

この scaling law に最初に気づいたのは誰か知らないけど、きっとこれに気づいた時はかなり興奮しただろうな。
一旦こういう事実が知られればさまざまな側面から調べることができるけど、経験則からこれに最初に気づくというのは知的活動の面白さだよなという感じがする。

@yoheikikuta
Copy link
Owner Author

yoheikikuta commented Oct 11, 2024

既にグラフの方にも記載があるが、数式で scaling law を表現すると以下のようになる。

  • パラメータ数 $N$ が性能の制限要因で、十分に大きなデータセットで収束まで学習した場合、損失は以下
    • $L (N) = (8.8 \times 10^{13} / N) ^{0.076}$
    • これは embedding parameter は含まない Transformer Decoder のパラメタ数である。L(N) = 1 にするパラメタ数を基準に書いてるので、これは約 $10^{14}$ で 100 兆なので現状は全然到達できてないくらい大きいもの(GPT-4 で 1 兆のオーダー)
  • データセットサイズ $D$ が性能の制限要因であり、大規模なモデルを収束前に学習を止める形で学習した場合、損失は以下
  • 限られた計算量 $C_{min}$ で、十分に大きなデータセット、最適なモデルサイズ、十分に小さなバッチサイズを用いて学習した場合、損失は以下
    • $L(C_{min}) = ( 3.1 \times 10^8 / C_{min} )^{0.050}$
    • 計算量は PF-Days 単位である。この $10^8$ も非常に大きく、GPT-3 での学習は $10^4$ 程度の計算量である [2005.14165] Language Models are Few-Shot Learners [paper-reading] #72 (comment)
    • この段階では「十分に小さなバッチサイズ」というのがどういう理屈なのかはちょっとよく分からない。読み進めれば分かるものと期待。

損失が 1 程度になる場合のパラメタ数とトークン数が同じようなオーダーなのは偶然とは思うけど、面白い偶然ではある。
これらの具体的な数字は vocab size や tokenization に依存するのでこれ自体に大きな意味はない、と論文では言っている(それはそう)。

この scaling law を $C_{min}$ については 8 桁、$N$ については 6 桁、$D$ については 2 桁の範囲で成立することを実験的に明らかにした、というのがこの論文のポイントである。

また、データパラレルな学習で速度と学習効率の trade-off を定める critical なバッチサイズに関しては損失を引数とした以下の scaling raw が大まかには成り立つことを発見したと言っている。

$$ B_{crit} (L) = \frac{B_{*}}{L^{1/0.21}} $$

ここで、$B_{*} \sim 2 \times 10^8$ token である。これはつまりデータパラレルの学習で学習効率を最大限に高めるようなバッチサイズを設定したかったら、小さい損失を求めるほどに大きなバッチサイズを設定せよということを言っている。L = 1 であればバッチサイズ 1 億なので笑ってしまう。

@yoheikikuta
Copy link
Owner Author

また、N と D を両方変数とした場合は以下のように fitting できることも発見したと述べている。

$$ L(N, D) = \left[ \left( \frac{8.8 \times 10^{13}}{N} \right)^{0.076 / 0.095} + \frac{5.4 \times 10^{13}}{D} \right]^{0.095} $$

この関数形が他の生成モデリングタスクにおける訓練された対数尤度も表現できるのではないかと推測している。
かなり強い推測な気がするが、生成モデルの scaling law がこの関数系で fitting できるということだ。推測だから言っとくだけ言っとくか!なのか画像とかでも一定知見があって少し先出しているかはこの論文の段階では明らかではないが、後に画像とかも含めて scaling law の分析をした論文を出すので、ある程度は見込みがあったのではないかと思う。

データが無限大にあるという近似のもとでパラメタのアップデートの回数 $S$ に関する scaling law は以下のようになる。

$$ L(N, S) = \left( \frac{8.8 \times 10^{13}}{N} \right)^{0.076} + \left( \frac{2.1 \times 10^{3}}{S_{min} (S)} \right)^{0.76} $$

ここで、$S_{min} (S)$minimum possible number of optimization steps とのことだが、これの詳細は後に出てくる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant