ホームAIモデルのコールドスタートは、なぜストレージ構成に左右されるのか?

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

ホームAIモデルのコールドスタートはストレージの配置に左右されます。推論を開始する前に、ランタイムが必要なすべての重みを見つけ、読み取り、デコードし、マッピングし、転送しなければならないためです。

同じモデルを2つ用意しても、一方がローカルNVMe上ですでにキャッシュされ、読み込みに適した形式で保存されている場合、もう一方がネットワーク共有、断片化したファイルシステム、圧縮アーカイブ、または整理状態の悪いシャードのディレクトリに置かれている場合では、起動速度が異なることがあります。コールドパスには、トークナイザーファイル、設定、ランタイムの初期化、アクセラレーターの割り当て、最初の実行も含まれます。以下のセクションでは、ストレージの実効帯域幅とチェックポイントの配置を分けて説明し、起動遅延がどの段階で発生しているのかを特定できるようにします。

コールドスタートはストレージとランタイムの各段階から成る

プロセスが最初のファイルを開いただけでは、モデルの準備は完了しません。ランタイムはチェックポイントのメタデータを検出し、モデル構造を作成し、重みのバイト列を読み取り、テンソルをデシリアライズまたはマッピングし、格納先のメモリを確保し、データを転送し、カーネルや実行グラフを初期化する必要があります。

サーバーレス推論の研究では、LLMサービスが利用可能になるまでの遅延の大部分を占める要因として、コールドスタート時の読み込みが挙げられています。最も遅い段階は、モデルサイズ、形式、ストレージ層、ホストメモリ、アクセラレーターへの転送経路によって変わります。

高速なSSDを使えば読み取り時間は短縮できますが、デシリアライズ、CPUコピー、GPU転送、カーネルのウォームアップにかかる時間は変わらない場合があります。停止時間全体を1つのディスクベンチマークとして扱うのではなく、各境界で時間を計測してください。

ローカル性によって、重みがキャッシュ、LAN、ディスクのどこから届くかが決まる

ローカルNVMeに保存された重みは、ネットワーク遅延や別サーバーのキューを介さずに読み取れます。SMB、NFS、オブジェクトストレージ、または低速な外付けディスク上のモデルでは、ローカルでの読み込みが始まる前に、転送やリモートキャッシュの処理が加わります。

ノードキャッシュされたモデルに関する近年の研究では、大容量アーティファクトをローカルに保持することで、後続レプリカの起動が繰り返し行われるリモート配信に依存しにくくなることが示されています。ホームサーバーでも同じ原理が当てはまり、初回ダウンロードと、その後のローカル起動を分けて考えられます。

ただし、ローカルだからといって常にウォーム状態とは限りません。再起動、キャッシュの追い出し、ファイルシステムの再マウント、または競合する大規模な読み取りによって、次回の起動時にモデルのページの大部分を物理ストレージから再取得しなければならないことがあります。

ZimaSpaceの記事モデルの追い出しでは、関連するメモリ境界について解説しています。モデルが常駐しなくなると、次のリクエストで高速な実行状態を再構築する必要があります。

チェックポイント形式がデシリアライズとコピー処理を左右する

チェックポイントには、読み込みに適した1つの連続ファイル、インデックス付きの複数のテンソルシャード、圧縮アーカイブ、またはPythonオブジェクトやテンソルのメタデータを再構築するフレームワーク固有のシリアライズ形式があります。

ServerlessLLMは、コールドスタートのオーバーヘッドを削減するために順次チェックポイント読み取りを使用しています。大規模な直接読み取りと予測可能なテンソル配置に対応したレイアウトなら、小さなメタデータ処理や中間的な再構築に費やす時間を減らせます。

シャーディングは、一度に1つのシャードを処理することでホストRAMのピーク使用量を抑えられます。一方で、小さすぎるファイルが多いと、ディレクトリ検索、ファイルのオープン、シーク、インデックス処理が増加します。最適なシャードサイズは、ローダーの並列性と基盤となるファイルシステムによって異なります。

圧縮は、ストレージ容量と起動時のCPU処理を引き換えます。ストレージが非常に遅い場合には有効ですが、高速なSSDが展開処理やメモリコピーを待つ状態では、かえって遅くなることがあります。

メモリマッピングによって、ページがRAMに入るタイミングが変わる

イーガーローダーは、大きなホストバッファーを確保し、チェックポイントの大部分または全体を読み込んでからテンソルを次の格納先へコピーすることがあります。メモリマップ方式のローダーは仮想マッピングを作成し、テンソルが参照された時点でOSがファイルページをRAMに読み込みます。

研究や最新の読み込みシステムでは、匿名メモリ上でアーティファクト全体を重複させないためにメモリマップ方式の読み込みが使われています。これによりRAMのピーク使用量を削減でき、ファイルシステムキャッシュを通じて、複数のプロセスがページを再利用できる場合があります。

メモリマッピングによってストレージ遅延がなくなるわけではありません。読み取りのタイミングがページフォールト発生時に移るため、必要なページが読み込み済みでない、またはプリフェッチされていない場合、最初の推論で停止することがあります。

ほとんどの重みを順番に参照するモデルでは、順次プリフェッチが有効な場合があります。一方、専門家モデルやマルチモーダルコンポーネントへのランダムアクセスでは、ページフォールトのパターンが予測しにくくなります。

並列読み込みは、ストレージ経路に余裕がある場合にのみ効果を発揮する

複数のローダースレッドやGPUコピー用ストリームを使うと、読み取り、デコード、転送を重ね合わせられます。しかし、整然とした1本の読み取りが、性能の低いSSD、USBブリッジ、ネットワーク共有、またはファイルシステムのメタデータ処理経路を圧迫する複数の競合ストリームに変わることもあります。

NVIDIAの重みの並行ストリーミングに関する技術検証では、読み込み方式とストレージの選択が、改善効果を共同で決めることが示されています。並列化は、読み込み元と転送先がキューの増大を招かずに処理を維持できる場合に有効です。

ホームサーバーでは、同じストレージプール上でメディアを配信し、バックアップを書き込み、ファイルをスキャンし、データベースを実行していることもあります。モデルディレクトリ自体が変わっていなくても、これらのワークロードによってコールドスタートの遅延は変化します。

ウォームキャッシュと重みの再利用が、繰り返し起動の速度を大きく左右する

起動直後の最初の実行ではモデルの全バイトをストレージから読み取る必要がありますが、2回目の実行では、ファイルシステムのページキャッシュ、保持されたGPUメモリ、または重みを再利用できる状態に保つランタイムの恩恵を受けられます。

Tangramは、GPUメモリ上の重みの再利用によって起動を高速化します。ホームサーバーで得られる一般的な教訓は、「コールドスタート」を定義する際に、どのキャッシュとプロセスをテスト前にクリアしたのかを明確にする必要があるということです。

直前にウォーム状態で実行したモデルと、再起動直後の別のモデルを比較してはいけません。コールド状態、ファイルシステムがウォームな状態、ランタイムがウォームな状態、アクセラレーターがウォームな状態をそれぞれ分けて定義してください。

再現可能なコールド状態テストでレイアウトをベンチマークする

モデルサイズ、ファイル数、シャードサイズ、ファイルシステム、マウントオプション、ストレージデバイス、ネットワーク経路、ローダーモード、ホストRAM、アクセラレーターのメモリ、競合するI/Oを記録します。そのうえで、メタデータの検出、ホストからの読み取り、デシリアライズ、デバイス転送、ランタイム初期化、最初のトークンまでの時間を計測します。

FlowLoaderは、チェックポイントの配置とパイプラインの重ね合わせによって起動時間を数秒または数分から短縮できるため、ローカルモデルキャッシュを研究しています。実際の改善幅は、ボトルネックがストレージ、コピー処理、初期化のどこにあるかによって異なります。

ファイルシステムキャッシュを破棄した後、通常のウォーム実行の後、代表的なNASトラフィックが発生している状態で再測定してください。その差から、レイアウトの変更、高速なローカル層、シャード数の削減、メモリマッピング、またはキープアライブポリシーのどれが有効かを判断できます。

テック&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.