本番環境におけるPyTorchの無停止アップグレード:アプローチ、落とし穴、そして教訓
Pinterestは、新しい機能を利用し、パフォーマンスを向上させるために、機械学習スタックをPyTorch 2.1から2.6にアップグレードしました。このアップグレードには、古い依存関係、APIの破壊的変更、TorchScriptの互換性といった課題への対応が含まれていました。PyTorch 2.6の要件を満たすために、Ubuntu DLAMIとCUDAのバージョンを更新しました。TorchScriptの初期化の問題に遭遇し、JITプロファイリングを無効にし、TorchScriptのfuserを無効にすることで解決しました。APIの破壊的変更については、バージョン間のブリッジとなるコンパイル時マクロを導入することで軽減しました。ダウンタイムを最小限に抑え、本番環境への影響を制御するために、時間枠を設定したマルチステージロールアウトを採用しました。アップグレード後、リソースの競合に対処することで、DCGMメトリクスの損失問題を修正しました。また、断続的なモデルデプロイメントの失敗も解決しました。これらのアップデートには、新しいDLAMIへの移行、競合の解決、変更への適応が含まれていました。最終的な目標は、スムーズで信頼性の高い本番環境への移行を確保することでした。