Engram — 条件付きメモリによるスケーラブルなルックアップ
概要
Engramは「Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models」というテーマでまとめられたリポジトリです。大規模言語モデルの内部に組み込む外部メモリあるいはメモリ補助モジュールとして、全トークンに対する密な注意(dense attention)とは別に「条件付きでスパースにアクセスされる」新しいスパース軸を提案します。本リポジトリには論文(Engram_paper.pdf)、可視化や設計図(drawio)、および簡易デモ(engram_demo_v1.py)が含まれ、LLMの長期記憶・効率的スケーラビリティを実装・検証するための出発点を提供します。
リポジトリの統計情報
- スター数: 72
- フォーク数: 2
- ウォッチャー数: 72
- コミット数: 2
- ファイル数: 6
- メインの言語: Python
主な特徴
- 論文PDF(Engram_paper.pdf)で提案手法の概念と設計を解説。
- 条件付きスパースルックアップという「新たなスパース軸」を示し、従来の注意機構と分離して拡張可能。
- 軽量なデモスクリプト(engram_demo_v1.py)で基本動作を確認可能。
- 図版や設計図(drawio)でアーキテクチャ理解を支援。
技術的なポイント
Engramの中核は「必要なときだけメモリにアクセスする」条件付きメモリ概念です。従来のTransformerでは全トークン間の注意行列や位置埋め込みで文脈を扱いますが、スケールが大きくなると計算量とメモリが急増します。本提案は、全トークンに対する密な相互作用とは別に、固定または可変容量の外部メモリを用意し、クエリ(あるいは条件)に応じてメモリの一部だけをスパースに読み書きする方式を取ります。これにより「アクセス頻度の低い古い情報」を格納しつつ、必要時にだけ高速に引き出せるため計算効率と記憶効率の両立が期待されます。
実装面では、メモリはキー・バリューのペアで管理され、クエリからトップkやハッシュベースの近似探索で関連するスロットを選択して読み出す流れが一般的です。読み出した情報は元のトークン表現と結合(例えば加算やアテンションによる重み付け)され、下流のモデルに供給されます。書き込みポリシー(上書き、マージ、エビクション)は用途によって異なり、寿命管理や競合解決が課題になります。
利点としては、長期文脈や巨大な知識ベースをモデル内部に組み込む際の計算コストの抑制、モデル本体を大きく改変せずに記憶容量を拡張できる点が挙げられます。一方で、メモリの一貫性・整合性保持、学習時の勾配信号(外部メモリへの差分更新)の扱い、低頻度情報の劣化、レイテンシー管理など実運用での課題も存在します。論文・デモはこれらの設計選択肢やトレードオフを議論し、実験や図解を通して概念を示しています。
(技術的な詳細はEngram_paper.pdfおよびREADMEの図版を参照してください。)
プロジェクトの構成
主要なファイルとディレクトリ:
- Engram_paper.pdf: file
- LICENSE: file
- README.md: file
- drawio: dir
- engram_demo_v1.py: file
…他 1 ファイル
まとめ
LLMに外部でスケーラブルな条件付きメモリ軸を付与する、実装と論文を含む実用的なリポジトリです(50字程度)。
リポジトリ情報:
- 名前: Engram
- 説明: Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models
- スター数: 72
- 言語: Python
- URL: https://github.com/deepseek-ai/Engram
- オーナー: deepseek-ai
- アバター: https://avatars.githubusercontent.com/u/148330874?v=4
READMEの抜粋: