LLMのモデルマージ
https://i.ytimg.com/vi/RBffEJ85_3U/maxresdefault.jpg#.png
この動画は壁Advent Calenrder 17日目の記事です。最近流行っている大規模言語モデルと拡散モデル。最近のアカデミア畑と実応用畑との間には大きな「壁」があり、実応用では当たり前に使われているテクニックがアカデミアには新鮮に映ったり・・・そんな謎テクニックのいくつかを、2人のキャラクターが解説していきます
LLMの2つのモデルをマージするテクニックが簡単に紹介されている 基本的には同じモデルかつ別の目的でファインチューニングしたものを幾つか(下記A, B, C...)用意して以下を実施する
線形補間
αB + (1-α)A みたいな感じ
A + α(B-C) もあり
ベクトルBとCの差分をベクトルAに足す
なんで素朴な線形の計算が動くの...?→わかってない
ブロックを挟み込む
2つのTransformerのブロックを持ってきて、交互にブロックを挟んだ大きいブロックを作ると、何故かこれが動作する(!?
つまり、上記の線形補間やブロックの挟み込みなどのテクニックが通用するなら、組み合わせてより複雑なモデルマージが実現できるはずである。しかしそういう試行錯誤は膨大な数をこなす必要があるので、その自動化と評価を進化的アルゴリズム(遺伝的アルゴリズム)に任せようというわけだ。 こういうヒューリスティックな手続きの最適解を探す、いわゆるメタヒューリスティクスを実装するときは、進化的アルゴリズムが好適だということがわかる