モデル常駐とは何か、ローカルAIサービスはいつ重みをロードしたままにすべきか?

エヴァ・ウォン は テクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

モデル常駐とは、リクエスト間でモデルの重みをホストまたはアクセラレーターのメモリに保持し、次回の推論で読み込み処理の一部または全部を省略できるようにすることです。

数分おきに使うホームアシスタントは、8ギガバイトのモデルがGPUメモリに残っている場合と、毎回ストレージから読み込む場合とでは、使用感が大きく異なります。常駐には、ファイルシステムキャッシュ、マッピングされたホストページ、固定RAM、カーネルですぐ使えるVRAMなど、複数のレベルがあります。重みをウォームな状態に保つと起動遅延を短縮できますが、限られたメモリを確保するため、ほかのモデルやワークロードを実行できなくなる可能性があります。

常駐とは、再利用可能なモデル状態がどこに残るかを示すもの

コールド状態のモデルはストレージ上にしか存在せず、推論前に読み込み、割り当て、変換、コピーを行う必要があります。ホストに常駐する重みはストレージの読み込みを省き、アクセラレーターに常駐する重みは、ホストからデバイスへの転送やランタイムの初期化処理も省きます。この違いは、後の家庭内テストでも確認できます。

NVIDIAのモデルストリーミング分析では、モデル読み込み経路と転送・初期化処理を分けて説明しており、多くのコールドスタートで重みの配置が重要になる理由を示しています。ウォームなプロセスでも、トークナイザー、グラフ、アダプター、キャッシュの初期化が必要になる場合があります。自動化を進める前に、中間結果を検証可能な状態にしておく必要があります。

常駐は、アクティブなリクエストと同じではありません。モデルはKVキャッシュやユーザーデータを持たずにロードされたままになり、メモリと一部のバックグラウンドリソースを消費しながら、すぐに応答できる状態を保てます。この境界は、現実的な運用条件のもとで個別に測定する必要があります。

ウォーム状態はメモリ階層全体に存在する

オペレーティングシステムは、プロセス終了後もモデルページをページキャッシュに保持することがあります。メモリマッピングではページフォールトが遅延発生する場合があり、推論サーバーはテンソルをRAMまたはVRAMに保持できます。一般に、よりウォームなレベルほどレイテンシーは下がりますが、より制約の大きいリソースを消費します。

ServerlessLLMは、ストレージ、ホストメモリ、GPUメモリにまたがる階層型モデル読み込みを検証し、コールドスタートのコストを抑えるために読み込みをスケジューリングします。この階層により、一見するとアンロードされたモデルでも、キャッシュの圧力によってページが追い出されるまでは素早く再起動できる理由が分かります。

量子化によって常駐に必要なバイト数を減らせるため、複数の特化モデルを共存させやすくなります。ただし、実行カーネルや品質も変わる可能性があるため、メモリ削減をそのまま無料の容量増加と見なすべきではありません。複数のソースが限られたコンテキストを奪い合うとき、この実際の影響が現れます。

追い出しポリシーは、メモリ圧力を起動遅延に変換する

サービスは、使用頻度の高いモデルを常駐させ、使用頻度の低いモデルを、最近の使用状況、予測需要、優先度、読み込みコストなどに基づいて追い出せます。複数モデルのルーティングでは、バックグラウンド処理によって、直ちに応答する必要がある音声モデルが追い出されないよう、受け入れルールが必要です。

FlexGenは、制約のある推論において、GPU、CPU、ストレージ間での重みのオフロードを実証しています。スループットを主眼とした仕組みですが、核心となるトレードオフを明確に示しています。重みを階層間で移動すると、限られたメモリを節約できる一方、転送とスケジューリングのコストが増加します。

障害の境界となるのは、スワップ、OOMによる再起動、または追い出しのスラッシングを引き起こすメモリ圧力です。多くの重みをロードしたままにすると、意図的に小さな作業セットをウォームに保つ場合よりも、すべてのモデルが遅くなり、信頼性も低下する可能性があります。この依存関係は、最終的なインターフェースに明示的に残す必要があります。

再利用距離とメモリ余裕から常駐を設定する

すべてのモデルについて、コールド、ホストウォーム、アクセラレーターウォームの起動時間を測定し、リクエスト間隔、読み込みバイト数、VRAMとRAMの使用量、アイドル時の消費電力、追い出し回数、競合するワークロードの需要を記録します。そのため、結果は元の根拠と照合する必要があります。

起動の仕組みをメモリマッピングによる起動と比較します。候補となるキープアライブ期間と優先度のもとで、突発的な集中、長いアイドル期間、同時発生するモデルリクエストを含む1週間分の到着パターンを再現します。この違いは、後の家庭内テストでも確認できます。

ロード遅延の回避効果と再利用頻度が、保護されたメモリの確保を正当化する場合は、モデルを常駐させます。確保した容量によってキューイングやスラッシングが発生する場合は追い出し、KVキャッシュと一時的な割り当てのための緊急用の余裕を確保します。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.