コンテンツにスキップ
Dev Classmethod Jp Articles Lambda Microvms Lifecycle Hooks Ml Inferenc 3f3098d2

Lambda MicroVMsのライフサイクルフックで、MLモデル推論の初回待ち時間を短縮できるか試してみた

  • URL: https://dev.classmethod.jp/articles/lambda-microvms-lifecycle-hooks-ml-inference-performance
  • 日付: 2026-06-24
  • Tier: Tier 2
  • 要旨: Lambda MicroVMs のライフサイクルフック(/ready・/validate)を活用し、multilingual-e5-small(118M パラメータ)の初回推論レイテンシを大幅短縮できる。フックなし:合計初回レイテンシ約 31 秒(model_load_time 18.4s+初回推論 13.0s)。/ready フック:5.5 秒(82% 改善)。/ready+/validate フック:3.4 秒(89% 改善)。/ready でモデルロード+ウォームアップ推論をスナップショット取得前に済ませ、/validate での模擬推論でアクセスメモリページを prefetch ヒントとして記録することで段階的改善。初期化コストの高いワークロード(ML モデルロード等)では有効。

詳細

Dockerfile は public.ecr.aws/lambda/microvms:al2023-minimal をベース。torch は CPU 版(CUDA ライブラリを避けるため)、モデルファイルはビルド時ダウンロード済み。gunicorn は 8080(アプリ用)と 9000(フック用)で 2 ポート bind、–preload で worker fork 前にモデル load 完了。app.py でグローバルスコープに SentenceTransformer をロード。/ready エンドポイントでウォームアップ推論 1 回実行、/validate でも模擬推論実行。検証は ap-northeast-1、デフォルト MicroVM サイズ(4vCPU/8GB)。readyTimeoutInSeconds はモデルロード 18s+ウォームアップ数 s を考慮し 300s に設定(デフォルト 60s は不足)。フックパスは公式ガイドと異なり POST /aws/lambda-microvms/runtime/v1/ready・validate。各パターン試行で model_load_time_sec 記録値は参考値(Run 後復元レイテンシではなくビルド時記録)。