Open GENZITSU opened 3 months ago
70Bなどのモデルサイズがでかいモデルを小メモリPCでも動かせるように層ごとに推論させるライブラリairllmの紹介
t4インスタンスでmeta-llama/Llama-2-70b-chat-hf1
を動かしたときに1 tokenあたり 7~8分かかったようで実用はなかなか難しそう。
ただし性能は結構良いようで、AWPなどを駆使したMLMモデルのaccが0.814だったものが0.84程度になったとのこと (厳密には評価データが異なる)
もう少し最適化されて1分くらいになれば使い道ありそう
AAAI2023にて投げかけられたAre Transformers Effective for Time Series Forecasting? という問いに対して、時系列データに対してもTransformer系のモデルは効果的であるという結果を実験的に示している記事
以下が結果
1次元の時系列データに対しての方が多次元のものよりも常によく、Transformerでも全然精度が出ることを示している。
ただし、学習データのサイズが十分にないと効力が発揮しづらいとも述べられているため、実際のデータに適用する時はよく考えないとダメそう。
評価指標的にはTransofmerはいいぞって感じになっているが、予測結果のplotを見るとほんまか...?ってなる
まぁ時系列予測自体が難しいというのが大きそう
Fine-Tuning LLMs: LoRA or Full-Parameter? An in-depth Analysis with Llama 2
Full Parameter学習とLoRA学習の性能差や学習効率などについて述べられているブログ。
LoRAの基礎的な仕組みから説明がなされているため勉強になる。
以下勉強になった点を抜粋
パフォーマンス比較
タスクにも寄るが、7B, 13B, 70BでLoRAとfull parametersはほとんど性能差が無い
LoRAのハイパラ
rank(r): 8~16くらいで十分だったとのこと、当然8の方がcheckpointのサイズは小さくなる
lora_alpha: 16で固定するのが良いとされている。 (元論文, Platypusの論文)
Target modules: 全パラメータを対象にした方が良い
base learning rate: 1e-4がよく使われているが、もっと低い方が安定する。1e-5や3e-5など
学習時に用いるプロンプト
full finetuningする際は特殊トークンを用いたプロンプトテンプレートの利用が効果的だったが、LoRAだとあまり効果が出ないとのこと(out-of-distributionすぎるから...?)
以下のようにタスク内容を詳細に説明してあげるようなプロンプトにすると学習が効率的に進んだとのこと
LoRA時の特殊トークンの扱い方
追加したトークンの分だけ追加のembedding matrixを作成し、Loraをかける。 推論時に追加したembedding matrixもcheckpointとして保存しておくことを忘れずに
学習速度について
1系列あたりのメモリ消費が効率的になった分だけバッチサイズを上げないと学習のスループット速度は上がらないことに注意。
一方で特定性能に達するまでの時間という意味だとfull parameterとLoRAであまり差はない
メモリ消費量
概ねLoRA(r=8)の場合半分程度の消費になる。
モデルの保存容量
Lora8の全レイヤー保存の場合でも1/350程度になる。モデルを複数サービングするときに効果が大きく出る
コメント
学習スループットは上がるが、学習完了までの時間は結局変わらないというのが意外だった。 パラメータ設定部分も参考になる。
出典