メモリマップされたモデルファイルは、プロセスがオペレーティングシステムのページキャッシュを通じて同じクリーンなファイルバックドページを参照できるため、重複するRAM使用量を削減できます。
ローカルモデルワーカーを2つ読み込んでも、物理メモリ上に重みファイルの完全なコピーを2つ用意する必要があるとは限りません。メモリマッピングでは、各プロセスにファイルオフセットに対応する仮想アドレスが割り当てられ、ページは必要に応じて読み込まれます。オペレーティングシステムは、同一のクリーンなページについて、キャッシュされた1つの物理コピーを各プロセスに割り当てながら、プロセスごとのプライベートなランタイム状態を分離できます。
メモリマッピングは仮想アドレスをファイルオフセットに結び付ける
マッピングされたファイルは、アプリケーションがファイル全体を別個のヒープバッファに読み込まなくても、プロセスのアドレス空間内に現れます。存在しないページにアクセスするとページフォールトが発生し、カーネルは対応するファイルバックドページを読み込むか見つけて、プロセスのページテーブルを更新します。
Linuxのメモリマッピングマニュアルでは、MAP_SHAREDおよびMAP_PRIVATEマッピングと、マッピングの更新と基になるオブジェクトとの関係について説明しています。読み取り専用のモデル重みは通常、クリーンなファイルバックドデータとして維持されるため、ページキャッシュの再利用対象になります。この違いは、現実的な家庭内の運用条件でも重要です。
デマンドページングは、モデルの一部だけが使用される場合に、起動時間を短縮し、常駐メモリを抑えられます。一方で、コストを初回アクセス時に移す可能性があるため、コールドページフォールトやストレージ遅延が、明示的な読み込みフェーズではなく推論中に発生することがあります。
ページキャッシュは複数のプロセスに同時にサービスを提供できる
2つのプロセスは、同じモデルのinodeとオフセットを、それぞれ異なる仮想アドレス空間にマッピングできます。両方が同じクリーンなページを読み取ると、カーネルは同じキャッシュ済み物理ページを両方のページテーブルにマッピングできます。仮想マッピングは別々ですが、基になる常駐データは共有できます。
ページマッピングデータに関するLinuxのドキュメントでは、アクセス制限の対象となるものの、ユーザー空間からページマッピングやページフレーム情報を調べる方法を説明しています。これらのインターフェースを使うと、一見別々に見える仮想領域が共有物理ページを参照しているかどうかを確認できます。後の診断やレビューでも、中間状態を確認できるようにしておく必要があります。
このため、プロセスごとのRSSを加算すると、物理メモリの総使用量を過大評価する場合があります。共有ページは各プロセスで常駐しているように表示されるためです。共有ページを各マッピングに比例配分するPSSは、モデルワーカー全体のフットプリントを見積もる際に、通常より役立ちます。
プライベート状態とダーティページは依然として増加する
KVキャッシュ、アクティベーション、アロケーターアリーナ、トークナイザーバッファ、リクエスト状態は、ワーカーまたはセッションごとに作成されます。プライベートマッピングへの書き込みはコピーオンライトを引き起こし、クリーンなファイルバックドコピーを共有できない匿名ページを作成します。異なるファイルバージョンも再利用を妨げます。
Linuxのsmapsマニュアルは、各マッピングについてプライベート、共有、クリーン、ダーティの状態を分類します。これらの分類から、2つのワーカーが重みを共有していても、同時実行数やコンテキスト長の増加に伴って、メモリ使用量が大幅に増えることを説明できます。
重要なのは、マッピングによって重複するクリーンな重みは削減できても、推論に必要なメモリ全体は削減できないという点です。ネットワークマウントされたモデルファイルではページフォールトの遅延が不安定になることもあり、圧縮または変換を行うローダーが2つ目の展開済み表現を確保すると、想定した共有が機能しなくなる場合があります。
1つのワーカーと2つのマッピング済みワーカーを比較する
コールドキャッシュの状態から始め、モデルワーカーを1つ起動して固定プロンプトを実行し、起動時間、ページフォールト、RSS、PSS、プライベートダーティメモリを記録します。次に、モデルファイルやローダーフラグを変更せず、同一のワーカーを2つ目として起動して繰り返します。
結果を圧縮のトレードオフと関連付けます。ファイルが小さいほどストレージには有利ですが、マッピングの効果は実際に使用されるメモリ内表現に左右されます。1つのプロセスの合計値だけに頼らず、smapsで各モデルマッピングを調べてください。
2つ目のワーカーによる重みメモリの増加が1つ目より大幅に少なく、同じ出力と許容範囲内のコールド遅延が得られれば合格です。PSSがほぼ2倍になる場合は、mmapが効果を発揮していないと判断する前に、ファイルの同一性、書き込み可能なマッピング、展開処理、隠れたコピーを確認してください。
テック&AIハブ
もっと読む

プライベート検索スコアのキャリブレーション:生の類似度を実用的な信頼度シグナルに変換する方法
コサイン類似度が信頼度ではない理由、ラベル付きクエリでスコアをキャリブレーションする方法、そしてプライベートコーパスが変化した際のしきい値の監視方法を学びます。

ローカルAIのNUMA局所性:メモリ配置がアクセラレーターへのデータ供給速度を変える理由
CPU、RAM、PCIeトポロジーがアクセラレーターへのデータ供給に与える影響、自動配置が変動する理由、安全にNUMAバインディングをベンチマークする方法を学びます。

プライベートAIの監査証跡:イベントログでエージェントの意思決定を再構成する方法
エージェントの監査証跡に記録すべき内容、通常のログでは不十分な理由、そして生データを公開せずに非公開ワークフローを再現する方法を学びます。

