Foward だけで ML model 学習したいメモ
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
あらやだ... ヒントンちゃんが何やら提案してる!
解説ありがたや...
現状は MNIST, CIFER での評価どまりですかね.
Signal Propagation: A Framework for Learning and Inference In a Forward Pass
ここにも!
ほーん, よきよきっぽそうだね...
あらコードありがたいワ...
LLM(Transformer, RNN) には適用できるか...
たぶんできそうな気もするけど...
finetuning
Fine-Tuning Language Models with Just Forward Passes
Zeroth-order optimization で, 2 回の Forward pass + メモリ効率のよい optimizer で, 省メモリ化して fine-tune する.
A100(80GB) x 1 で 30B まで finetune 可能.
Zeroth Order Optimization: Theory and Applications to Deep Learning
Zeroth-order は昔からある手法. Hinon ちゃんの論文とも関係ありそ?
gradient 不要で, blackbox なネットワークでも最適化できる.
その他の話題
学習のさらに pre 段階で, たぶんいい感じに学習よくさせる(これができると, 最初のほうでなるべく誤差減らしておき, forward-only での収束の悪さをカバーすることができる)と思われるもの.
たとえば pre 学習では, ちょっと低速だけど, メモリ積んだ CPU でフルで学習し, その後 forward-only で GPU で学習させるとか.
量子化ネットワークで finetune & 学習したい
LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale
bitsandbytes(LLM 向け int8 量子化)の論文では, inference のみ評価しています.
QLoRA
同じく bitsandbytes から, 4bit 量子化 + LoRA ファインチューンの手法が出てきています.
QLoRA で 4bit 量子化で LLM 33B 規模ファインチューン頑張りたいメモ
LoRA, Transformer の入り口と出口だけ grad 取る感じなので, 実質 Forward だけに近いと言えなくもないかも...!!!
Discussion