🍣

Foward だけで ML model 学習したいメモ

2023/05/02に公開

LLM の学習やファインチューン, つよつよ GPU でないとできない, つらい...

でも本当につよつよ GPU いるのだろうか...🤔
deepspeed で解決するにしても一定のメモリはやっぱりいるようだが, Backprop でのメモリ消費無駄じゃね...
(最近は GPU <-> CPU(NVMe)間で mmap 的(Unified memory 的)なのも出てきたけど, pytorch とかではまだサポートないっぽ?)

ファインチューンだけでも, Forward だけでなんとかならんかのう...
あと, 量子化した Forward model(network) だけでファインチューンできたらより幸せ... => とりあえずはQLoRA で幸せになれそう.

The Forward-Forward Algorithm: Some Preliminary Investigations

Forward-Forward Algorithm: Some Preliminary Investigations
https://www.cs.toronto.edu/~hinton/FFA13.pdf

あらやだ... ヒントンちゃんが何やら提案してる!

https://www.docswell.com/s/marbie/KENX71-forward-forward#p1

解説ありがたや...
現状は MNIST, CIFER での評価どまりですかね.

Signal Propagation: A Framework for Learning and Inference In a Forward Pass
https://arxiv.org/abs/2204.01723

ここにも!

https://towardsdatascience.com/learning-and-inference-in-a-forward-pass-the-new-framework-dc1356399002

ほーん, よきよきっぽそうだね...

https://twitter.com/diegofiori_/status/1605242573311709184

https://github.com/mohammadpz/pytorch_forward_forward

あらコードありがたいワ...

LLM(Transformer, RNN) には適用できるか...

たぶんできそうな気もするけど...

finetuning

Fine-Tuning Language Models with Just Forward Passes
https://arxiv.org/abs/2305.17333

https://github.com/princeton-nlp/MeZO

Zeroth-order optimization で, 2 回の Forward pass + メモリ効率のよい optimizer で, 省メモリ化して fine-tune する.

A100(80GB) x 1 で 30B まで finetune 可能.

Zeroth Order Optimization: Theory and Applications to Deep Learning
https://sites.google.com/umich.edu/cvpr-2020-zoo

Zeroth-order は昔からある手法. Hinon ちゃんの論文とも関係ありそ?
gradient 不要で, blackbox なネットワークでも最適化できる.

その他の話題

学習のさらに pre 段階で, たぶんいい感じに学習よくさせる(これができると, 最初のほうでなるべく誤差減らしておき, forward-only での収束の悪さをカバーすることができる)と思われるもの.

https://twitter.com/rasbt/status/1638538494887821313

たとえば pre 学習では, ちょっと低速だけど, メモリ積んだ CPU でフルで学習し, その後 forward-only で GPU で学習させるとか.

量子化ネットワークで finetune & 学習したい

LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale
https://arxiv.org/abs/2208.07339

bitsandbytes(LLM 向け int8 量子化)の論文では, inference のみ評価しています.

QLoRA

同じく bitsandbytes から, 4bit 量子化 + LoRA ファインチューンの手法が出てきています.

QLoRA で 4bit 量子化で LLM 33B 規模ファインチューン頑張りたいメモ
https://zenn.dev/syoyo/articles/6918defde8a807

LoRA, Transformer の入り口と出口だけ grad 取る感じなので, 実質 Forward だけに近いと言えなくもないかも...!!!

Discussion