十分に大きなモデルを十分な計算量で学習するなら、品質が低くても新しいデータがあるほうがいい?
十分に大きなモデルを十分な計算量で学習するなら、品質が低くても新しいデータがあるほうがいい?
@hillbig:LLMの学習では、データをさまざまな形でフィルタリングし、絞り込んだ高品質データで学習することが一般的である。 一方、論文 “A Bitter Lesson for Data Filtering” では、十分に大きなモデルを十分な計算量で学習するなら、最適な戦略はフィルタリングしないことかもしれない、と示されている。
この論文では、Common Crawl のデータプールと、それにさまざまな条件のフィルタを適用したデータセットを比較している。モデルサイズが小さいうちは、高品質データが優位であり、計算量を増やしてもその差は埋まりにくい。しかし、モデルサイズが大きくなると、フィルタなしのデータが最も高い性能を達成するようになる。
これは、フィルタによって捨てられていたデータにも、モデルが利用できる信号が含まれていることを示唆している。人工的にジャンクデータを追加した実験でも、単語順をシャッフルしたデータですら、モデルがそこから恩恵を受ける可能性が示されている。
とはいえ、これは今すぐ「フィルタリングを使うべきではない」という意味ではない。現状では、まだ高品質データをすべて使い切っていないか、あるいはそれを何度も繰り返し使う段階には達していない。しかし、データ枯渇として高品質データを何十 epoch も繰り返すような段階になると、たとえ品質が低くても、新しいデータを追加した方がよい可能性が高くなってくる。 今回の実験では、DCLM-Pool の 240T トークン規模のデータ全体において、フィルタなしの Common Crawl が RefinedWeb を上回るには、10^30 FLOPs 規模の計算量が必要だと推定されている。これは数千万 GPU を学習に使うような規模であり、現状の多くの学習ではまだ必要ない。
一方で、低品質に見えるデータや、一見関係なさそうに見えるデータであっても、十分な容量を持つモデルであれば、悪影響を受けずにむしろ使いこなせる可能性があることを示している。
@hillbig: LLM学習において、有害データは取り除いて学習するのではなく、むしろ一定量の有害データを見せて学習した方が内部表現として分離しやすくなり、後からアライメントの際に除去・制御しやすくなると報告されている。 LLM学習において、有害データは取り除いて学習するのではなく、むしろ一定量の有害データを見せて学習した方が内部表現として分離しやすくなり、後からアライメントの際に除去・制御しやすくなると報告されている。
実験ではクリーンデータ量を固定し、有害データを追加する形で行っており、全く含めない場合は見分けることが困難である一方、一定数、加えることで抽出が容易になり、線形に取り出しやすくなる。また有害データを加えたとしてももとの性能劣化は抑えられる。
事前学習や途中の学習段階でも、様々なデータに晒しておくことで、モデルが悪さを明確に識別に識別できるようにしておく必要があり、人間の学習にも通じる。
(別に紹介するデータフィルタリングの苦い教訓とも通じる)