Vol.4 Meta社によるモバイルLLMに関する研究
今日紹介するのは、モバイルLLMっていう論文についてです。これはメタが行った研究で、携帯のようなところで動かすための、小さいサイズのLLMについての話です。小さい大規模言語モデルなんで、大きいのか小さいのか分からないですが大体パラメータ数が100Mから300Mくらいのモデルについてです。
◆研究の見どころ
彼らは、モバイルLLMとして小さいサイズのモデルのどういったところが重要なのかっていうのを調べたんですけれども、結構今までの知見と違う話があったので紹介します。
あと結構面白いなって思ったところとしては、どれぐらいの大きさのモデルだったらどれぐらい電気を食うのかっていう具体的な事例がありました。
◆電力消費について
電気の話から言うと、大きな電力を使うのっていうのはほとんどがメモリ転送の部分で、演算よりも支配的になっていることです。(ここに書いてあるんですけども)すごいざっくりと0.1ジュール/トークン / 10億パラメータというのが分かっています。
これ何を言ってるかっていうと、1トークンを生成するのに10億パラメータのモデルだったら0.1ジュールのエネルギーを消費するっていうのが分かっています。なので例えば、7BのパラメータのLLMを使うと1トークンを生成するごとに0.7ジュール使う。
iPhoneはフルに充電すると5万ジュール充電できるので、例えば64トークンを7Bのモデルで生成すると0.2%バッテリーを使ってしまうぐらいなので、結構デカい。別の言い方をすると、1秒に10トークンくらい生成するみたいなものを使うと、2時間で電気を使い切ってしまうというので、非常にそれは携帯としては嬉しくない。なのでモデルをとにかく小さくしようというプレッシャーがあります。
◆モバイルLLMのアーキテクチャ

小さくしたいという話の中で、彼らがやったモバイルLLMで分かったこととしては、まず1Bとか10Bとか大きいモデルで散々いろいろ実験した時は、あんまりそのネットワークのアーキテクチャって重要じゃない。どんなアーキテクチャでもちゃんと最適化すればほとんど同じ結果が出るっていうことだったんですけれども、この100Mぐらいのサイズだとアーキテクチャがかなりまだ重要で、ディープ、つまり層の数を多くして幅を狭くするっていうのがかなり精度に関係します。
それまでの普通の小さいLLMは12層を使うのが一般的だったんですけれども、今回のこの実験結果からは小さいモデルでも30から42層使うことでパラメータあたりの性能が上がるっていう話が一つ。
◆パラメータの共有と効果
もう一つが、とにかくパラメータを減らしたいので、いろいろな場所で共有するっていうところです。まずembedding(埋め込み)に必要なパラメータですね。入力のトークンから特徴ベクトルに転換する部分と、その逆に生成する部分を、大きいモデルだと別にしてたりするんですけれども、小さいモデルだとそれを共有する。
昔のモデルはむしろ共有するのが普通だったんですが、最近はもうパラメータ数がすごく大きいので気にせず共有を外してたんですけれども、小さいモデルだとembeddingの部分もかなり支配的になってくるので、そこも共有してパラメータが減った分を別に割り当てるっていうことで精度が上がる。あとはヘッドをグループ毎にキーと値をシェアするグループクエリアテンション(GQA)も入れる。

さらに、ちょっと自明だけど面白い工夫として、層間のパラメータをシェアするっていうのをやっています。パラメータをどうやってシェアするかっていうのでいろんなパターンがあるんですけれども、例えば3個ぐらいのブロックを繰り返してそれらのパラメータを共有するとかあります。
彼らがいろいろ試して見つけた良い方法っていうのは、2層ごとにパラメータをシェアするやり方で、連続する2層がパラメータをシェアすると、一度メモリ転送して層で処理した結果をもう1回同じパラメータで処理するってなるので、キャッシュが効いて転送量も減るし、実際性能もいいっていうのが分かっています。
パラメータをシェアして繰り返すっていうのは他のトランスフォーマーでも時々聞く話なんですけれども、このパラメータあたりの性能を改善したい場合は特に効いているっていうことでした。

こういういろんな工夫をしたら、そこそこ強いモデルができたよっていう結果で、これがどのくらい実用アプリケーションに意味あるベンチマークのスコアなのかっていうと、ちょっと簡単には言えないんですけれども、125Mとか350Mのパタメータで今までよりずっと良い結果が出ているというものでした。
今後は携帯やローカルのPC、組み込み機器などいろんなところで動かしたいというのが増えてくるので、こうした小さなモデルでも性能を出していくというのが重要になると思います。

