Preferred Networks

Vol.61 DeepSeek発の新技術「Engram」

今日の話は、Engram(エングラム)というDeepSeekの研究なんですが、これは何かと言うと、LLMに条件付きメモリという形で、今のTransformerに新しいモジュールをくっつけて、性能も上がるし、何より高価なHBMを使わずに済む方向性が高まっているという話です。

◆Transformerの2つの処理とEngramの提案

まず、LLMは何をやってるかと言うと、中でTransformerを使ってるんですが、そのTransformerの役割というのは、1つ目は合成的推論をしていることと、2つ目は知識探索(何か情報を参照して読み込む)というような、2つの処理をしていると言えます。

例えば「日本で2番目に高い山は何でしょう」という文章に続く単語を出す時には、最初に下の方の層において知識探索をして、1位から10位ぐらいまでの過去の知識を持ってきて、上の方の層で得られた情報の中で、2番目に高い日本の山という条件に合うものを合成的推論をして絞り込んで「北岳」を出すように処理しています。

一方で、実はこの知識探索は、「Transformerのような高価なモジュールを使わなくて、もっと安い方法で実現できるんじゃないか」というのが今回の提案です。

もしその記憶する部分に簡単なものを使えれば、その分、深い合成的推論にもっと計算を使えるということになります。

◆Engramの仕組み

Engramはどうやったかと言うと、まず古典的なN-gram埋め込みを利用します。

これは何かと言うと、まず入力にトークン列があって、さっきの例だと「日本の2番目に高い山」みたいな文章があった時に、それらのトークンのN個の組み合わせ、「日本の」「の2」「2番目」といった値からハッシュ値(何か数値をランダムな関数かけてハッシュ値計算して)、そこに割り当てられている領域のところに書いてある情報を取ってきます。

重要なのは、参照する時に、「途中層の結果ではなくて、トークンの値からそのまま計算できるもの、つまり字面をそのまま使って参照する」ということです。

ただこれだけだと、全く関係ない情報とかいらない情報も入ってきちゃったりするので、層ごとにゲートが設定されていて、とりあえず取ってくるけれども、その取ってきた値を本当に入れるか使うかどうかはゲートでコントロールして、本当に使うねってなったらその情報を入れます。

◆システム観点でのメリット

こうすることによって、(この場合元々のモデル自体はMoEなんですけども)MoEのエキスパート数を減らせます。

実質的に大抵MoEが記憶に対応してるって言われてるので、そのエキスパート数を減らし、その分をEngramにメモリとして割り当てたモデルを使うと、同じパラメーター数で元のMoEよりも知識、推論、数学、コードの能力は改善する。

加えて、さらにシステム観点だと、最初にトークン列が決まった後に、裏側で「じゃあこの割り当てられる値取ってきて」というのを、遅いメモリ、例えばメインホスト側のメモリとか、将来的にはフラッシュメモリとか、そういったところに投げておいて、Transformerはそのまま処理をスタートして、処理している間に値取ってきて、取ってきた値を途中の層に入れるっていうようなPrefetch(プリフェッチ)が可能になります。

そうすると、HBMのような高価なメモリを使わずに、遅いメモリを使ってもよいということで、劇的に提供コストや提供状況も変わることになります。

◆記憶と推論の分離、そして階層化へ

このような現在のLLMの画一的なモデルを、記憶を担当する部分と推論能力を担当する部分に明確に分けて、記憶は外付けにする。で、記憶部分と、記憶能力は何も持っていないけれど推論能力、とにかく情報を扱う能力に長けてるような部分に分離させるという流れに、みんなそっち方向に進んでいます。

あと、もう一つこういう流れで、「GPUは高い、で、GPUの何が高いかと言うとHBMが高い」という問題があるんですが、今回はまだ半分ぐらいしか減ってないので、もっとアグレッシブに減らしていく方向もあり得ます。

そうすると、メインのホストメモリは、究極的には推論、認知コアの部分だけ持っていて、すごいちっちゃい。大部分はホストメモリとか、フラッシュメモリとか、下手したらインターネットの先とか、記憶を階層化して処理するっていう可能性もあると思います。

PFNは新しい仲間を
募集しています

未掲載事例、プロダクト・ソリューション、研究開発についてお気軽にお問い合わせください