MemGPT と実際の例: AI と OS の間のギャップを埋める
導入
計画、反映、先を見据えて考えることができる AI エージェントの作成に努めるにつれ、大規模な言語モデルだけでは十分ではないことが明らかになりつつあります。人間の知能を模倣し、認知能力を得るには、人間の脳に似た堅牢な記憶システムが必要です。このストレージ システムは、コンテキスト (この場合は埋め込み) を使用してメモリ トレースを記録および取得できる必要があり、AI エージェントが情報を処理し、情報に基づいて効果的に意思決定を行えるようにする必要があります。
前提条件
- AI 概念の基本的な理解: LLM (GPT など) とその動作メカニズムについての知識。
- オペレーティング システムの知識: メモリ管理、タスク スケジューリング、ファイル システムなどの OS コンポーネントの基本。
- プログラミング スキル: API と対話し、MemGPT 機能をシミュレートするための Python の知識。
- ハードウェア要件: LLM を実行し、OS レベルの統合をサポートするための適切な計算能力を備えたシステム。
MemGPTとは何ですか?
MemGPT (Memory GPT の略) は、言語モデルのコンテキスト ウィンドウの制限を取り除くことを目的としたシステムです。 MemGPT は、従来のオペレーティング システムのメモリ システムからインスピレーションを得て、仮想コンテキスト管理の概念を導入しています。このシステムは、さまざまなストレージ レベルをインテリジェントに管理し、LLM の限られたコンテキスト ウィンドウ内で拡張されたコンテキストを提供します。
- より豊かな推論
- 記憶保持力の向上
- 言語生成の改善
使用したデータセット:
- 拡張されたマルチセッション チャット (MSC) データセット (元々は Xu ら、2021 年)。
- 劉ら。 (2023a) 質問応答とキーと値の取得のタスク。
- 新しいネストされたキーと値の取得データセット。
- 2,000 万件の Wikipedia 記事の埋め込みデータセット。
論文で使用されているデータセットは、Hugging Face からダウンロードできます。
MemGPTの応用例
1.文書分析
MemGPT により包括的なドキュメント分析が可能になり、実際に容易になります
- インテリジェントな情報抽出
- 要約
- 文脈の理解
これにより、法律、学術、またはビジネスの文脈における広範な文書の詳細な分析に適しています。
2.マルチセッションのチャットインタラクション
これは、マルチセッションのチャット対話のための会話型 AI に採用でき、長い会話にわたってコンテキストと一貫性を維持できます。これは、顧客サービス ボット、仮想アシスタント、および継続的な対話を必要とするその他のアプリケーションにメリットをもたらします。
3.生成タスク
MemGPT の強化されたコンテキスト管理は、クリエイティブな執筆、コンテンツ生成、より複雑な生成 AI アプリケーションなどの生成タスクに適しています。
4.自然言語処理タスク
その機能は、コンテキストの理解と維持が重要な感情分析、言語翻訳、要約などのさまざまな NLP タスクにまで拡張されています。
5.マルチモーダル機能
ChatGPT とは異なり、MemGPT の機能は、マルチモーダルな入力と出力を統合する可能性を示唆しています。これにより、さまざまな形式のメディアとの対話が可能になります。
実際の例で MemGPT を理解する
あなたが本を読んでいると想像してみてください。あなたの記憶は、一度に数語しかキャプチャできない、スライド式のコンテキスト ウィンドウのようなものです。従来の言語モデルでは、この読み取りウィンドウが限られているため、長すぎるとストーリー全体を理解することが困難になります。
ここで、MemGPT を、独自の機能を備えたスマートな読書アシスタント (ほぼ LLM OS) として考えてみましょう。固定ウィンドウを設けるだけでなく、本のどの部分を閲覧ウィンドウに残し、しおりのように何を個別に保存するかをインテリジェントに決定できます。これにより、無制限の読書ウィンドウのような錯覚が得られ、実際に本全体を文脈に沿って保持するという計算コストを費やすことなく、ストーリーをより多く理解して記憶できるようになります。
たとえば、本の 10 ページで登場人物について言及し、50 ページでその登場人物に言及している場合、MemGPT は前のページに戻ったかのように関連情報を取得できます。これは、現在のページを記憶し、本のさまざまな部分から重要な詳細を思い出すのに役立つ、非常にスマートなブックマークを持つようなものです。
そのため、MemGPT は読み取りの「コンテキスト」を賢く管理し、多くの展開や登場人物が登場する複雑な小説を読むときと同じように、継続的な情報の流れを作成します。この柔軟性により、タスクのさまざまな段階で「読み取りウィンドウ」に保持する内容を調整することで、長い会話の理解や広範な文書の分析などのタスクを処理することができます。
本研究の貢献
1.OS からインスピレーションを得た LLM システム
この論文では、オペレーティング システムからインスピレーションを得た LLM システムとして MemGPT を紹介しています。この新しいアプローチにより、言語モデルはユーザー入力の長期記憶を管理および利用できるようになります。これは、複雑なデータ分析や会話エージェントなどのアプリケーションにとって重要です。
2.割り込みの導入
MemGPT には、それ自体とユーザー間の制御フローを管理するために割り込みシステムが導入されています。この割り込みシステムは従来の OS と同じように機能します。
3.「無限のコンテキスト」という幻想
MemGPT を使用すると、ページ フォールトを処理する OS と同様に、LLM が現在のコンテキスト内情報から欠落している可能性のある関連する履歴データを取得できます。これは、仮想メモリ管理を使用することで、長いテキストや情報のシーケンスを処理するモデルの機能が強化されたことを意味します。
4.関数呼び出し機能
MemGPT フレームワークには、メッセージの送信、メッセージの読み取り、メッセージの書き込み、割り込みの一時停止などの機能があります。関数呼び出し機能は、運用効率と柔軟性を高める上で非常に重要です。関数呼び出しでは、事前に制御を要求します。これにより、複数の機能が順番に連鎖し、複雑なタスクやワークフローを処理するシステムの能力が強化されます。
モデルのアーキテクチャ
1.メインコンテキスト
オペレーティング システムのメイン メモリまたは RAM の目的を思い出してください。「メイン コンテキスト」は RAM の概念に似ています。メイン コンテキストは命令を保存するために使用されます。
成分
説明
システム説明書
基本的な LLM 命令 (例: MemGPT 機能と LLM への制御フローを説明する情報) を保持します。
会話のコンテキスト
最近のイベント履歴の先入れ先出し (FIFO) キューを保持します。
作業コンテキスト
エージェントの作業記憶のスクラッチパッドとして機能します。
メイン コンテキストの 3 つの部分を合計すると、基礎となる LLM プロセッサの最大コンテキスト サイズを超えることはできません。
2.外部コンテキスト
これは、コンピュータ システムのディスク ストレージに似た、2 次的な大規模なメモリ ストアです。長い会話の場合、AI は以前の部分を忘れ始める可能性があります。 MemGPT は、会話の古い部分を「外部コンテキスト」に保存することでこの問題を解決します。これは、LLM プロセッサによって処理されたイベントの履歴全体を保存することによって行われます。この情報は、ページ分割された関数呼び出しを通じて外部コンテキストからコンテキスト メモリに取り込むことができます。
3.LLMプロセッサ
LLM プロセッサは、言語を処理し、それをどう扱うかを理解する MemGPT の中核部分です。メインコンテキストを入力として処理します。 LLM がデータを処理し、パーサーがこのデータを解釈します。論文はデータを理解し、次のステップを決定します。これにより、次の 2 つのことが起こる可能性があります。
- 収量: これは一時停止ボタンを押すようなものです。プロセッサは、何か新しいことが起こるまで待機します (ユーザーからのメッセージを受信するなど)。プロセッサは、譲歩中はスタンバイ モードになります。ユーザーからの新しいメッセージなど、新しい外部イベントがある場合は待機し、その後再びアクティブになります。
- 関数呼び出し: これはアクション コマンドです。プロセッサは、特定の機能、特にメモリを管理することを要求することがあります。
4.自主的な編集と検索
データはメイン コンテキストと外部コンテキストの間で移動されます。このメモリの移動を管理するには、特別な命令と関数が使用されます。
デモ/実験
jupyter ノートブックを使用してデモを起動するのは簡単です。まず、優先 GPU を使用してノートブックを開始します。リポジトリのクローンをノートブックに作成します。
次に、クローン作成のためにこのコードを実行します。
!apt-get update && apt-get install -y git-lfs festival espeak-ng mbrola
!git clone https://github.com/cpacker/MemGPT.git
MemGPT をローカルで実行する
まずはMemGPTをインストールします
!pip install -U pymemgpt
これで、MemGPT を実行し、次の方法で MemGPT エージェントとのチャットを開始できます。
memgpt run
これはターミナルで行う必要があることに注意してください。以下に、MemGPT のパフォーマンスをチェックしてみた後の、MemGPT との基本的な対話を示します。
今後の方向性
1.限られたメモリ: 研究者は効率的なメモリ管理システムの開発を試みてきましたが、MemGPT にはトークン予算の制約があります。これは、メモリの一部がシステム命令によって消費され、一度に処理できるコンテキスト データの量が制限されるためです。そのため、特定の時点でコンテンツに保持できるドキュメントの数は少なくなります。
解決:
- データベースやキャッシュなどのさまざまなメモリ層テクノロジを組み込んで、MemGPT メモリを強化します。
- メモリ割り当てシステムを最適化できます。
2.精度が低い: MemGPT は GPT 4 よりも精度が低くなります。
解決:
- 微調整することで MemGPT の精度を向上させます。
- モデルのアーキテクチャとパラメータを最適化します。これには、パフォーマンスを向上させるためにレイヤー、ニューロン、または学習率を調整することが含まれる場合があります。
- MemGPT との対話に使用されるプロンプトを改善します。
3.複雑さの増加: LLM にメモリを統合すると、システムがさらに複雑になります。これは、さまざまなアプリケーションにおけるフレームワークの適応性と使いやすさに潜在的に影響を与える可能性があります。 4.探索: MemGPT は、大規模または無制限のコンテキストを持つさまざまなアプリケーションでまだ探索されていません。大規模または無制限のコンテキストを使用して、他のドメインの MemGPT を探索します。
解決策: 大規模なデータ分析、複雑な対話型システム、より洗練された AI エージェントの探求は、有望な方向性です。
5.クローズドモデルへの依存: 研究者によると、MemGPT リファレンス実装は関数呼び出しの微調整に Open AI GPT 4 を活用していますが、OPenAI のモデルの内部動作は公開されていません。そのため、GPT 3、GPT 4、Llama 2 70B などのクローズドソース モデルに依存しています。つまり、研究者はこのモデルをあまり微調整できませんでした。
解決:
- オープンソースの大規模言語モデル (LLM) を使用すると、透明性と制御性が向上します。
- 独自のモデル (GPT-4 の OpenAI など) の開発者とのコラボレーションまたはパートナーシップを確立します。
- オープンソース モデルと独自モデルの両方の長所を組み合わせたハイブリッド システムを開発すると、バランスの取れたソリューションが提供される可能性があります。
最後に
MemGPT は、AI に会話の「メモ」(外部コンテキスト)を参照できるようにする方法を提供することで、この問題を解決しようとします。このようにして、AI が複雑な指示に重点を置いている場合でも、俳優が長い演劇の中で台本やメモを参照するのと同じように、長い会話を効果的に処理できます。