シュッとデータセットを量子化という話
ちゃっす(/・ω・)/
タイトルにそそられて論文を読んでみたのだ(/・ω・)/
Dataset Quantization
Bytedance さんが出してる感じかな(/・ω・)/
内容はまぁタイトルの通りデータセットの量子化についてであーる(/・ω・)/
詳しくは論文を直接見てもろて
自分メモとして内容を平たく書き残すのである( ・ω・)
量子化とはなんぞや?( ・ω・)
これはまぁ LLM モデルとかでよく使われてるようなものだけれど、ざっくりいうと大きなものをその精度をなるべく保ったまま小さくするっちゅーことですな(/・ω・)/
なんでそんなことするのん?( ・ω・)
理由は簡単(/・ω・)/
何事もでかすぎると扱いに困るのだ(/・ω・)/
すごーい計算資源を持ってないとデータを学習させるの大変なのよ(/・ω・)/
なので、精度が落ちないのであればなるべく小さくしたいよね~
っていう感じ(/・ω・)/
今までもデータセットを小さくする取り組みはあったのであーる(/・ω・)/
データセット蒸留
コアセット選択方法
ですな(/・ω・)/
ざっくりいうと蒸留の方は大規模なデータセットから少量の情報を持つサンプルを合成する最初の方法
コアセットの方はデータセットから最も代表的なサンプルのサブセットを選択する方法
みたいな感じ(/・ω・)/
ただまぁこれらでは
一般化能力が低い:
同じモデルアーキテクチャでのみうまく機能し、他のモデルアーキテクチャでの訓練に失敗する
拡張性が低い
データ保持比率が増加すると速やかに飽和し、元のデータセットの性能に到達することができない
大規模データセットの計算コストが高い
例えば、ImageNet全体を60%のサブセットに圧縮するのに合計で28K GPU時間が必要になる
コアセット選択の制限
低データ保持比率ではサンプルの多様性が保証されない
みたいな問題があるみたい(/・ω・)/
それを解決するのが今回提唱されている Dataset Quantization (DQ) (/・ω・)/
でまぁこの内容をかなーりざっくりというと
元のデータセットをビンに分割し、各ビンからサンプルを選ぶ
ってことですな(/・ω・)/
つまりコアセット選択に近いわけだけれども、コアセット選択はデータセット全体から直接サンプリングして重要なものを残す戦略だけれども、DQ はまずはデータをビンとよばれる群にわけて、そこからサンプリングすることでデータの偏りとかをなくすみたい(/・ω・)/
でまぁ、実際に蒸留とコアセット選択と比較してみたらいい感じだったと(/・ω・)/
なら最強じゃん( ゚д゚)
と思うが駄菓子菓子
DQ は全体のデータセットから再帰的にサンプルを選択する必要があるので計算コストが高いみたい(/・ω・)/
なので今後はさらなる改良試みるぞーってな感じみたい(/・ω・)/
コードはこちらにござる(/・ω・)/
一般家庭?では大きなデータセットを学習させるのは大変なのでこういう手法がでてくるとありがたいですな(/・ω・)/
ということでシュッと書いたのでおしまい。