GPU ドライバーのアップグレード中の中断を最小限に抑えるためのベストプラクティス - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

GPU ドライバーのアップグレード中の中断を最小限に抑えるためのベストプラクティス

SageMaker モデルデプロイでは、リアルタイム、バッチ、非同期推論オプションの GPU ドライバーを ML インスタンスで経時的にアップグレードし、ドライバープロバイダーによる改善点へのアクセスを顧客に提供します。以下に、各推論オプションでサポートされている GPU バージョンを示します。ドライバーのバージョンが異なると、モデルが GPU とやり取りする方法が変わる可能性があります。以下は、アプリケーションがさまざまなドライバーバージョンでどのように動作するかを理解するのに役立つ戦略の一部です。

現在のバージョンとサポートされているインスタンスファミリー

Amazon Inference SageMaker では、以下のドライバーとインスタンスファミリーがサポートされています。

サービス GPU ドライバーのバージョン インスタンスのタイプ
リアルタイム NVIDIA 470.57.02 ml.p2.*、ml.p3.*、ml.p4d.*、ml.p4de.*、ml.g4dn.*、ml.g5.*
535.54.03 ml.p5.*、ml.g6.*
バッチ NVIDIA 470.57.02 ml.p2.*、ml.p3.*、ml.p4d.*、ml.p4de.*、ml.g4dn.*、ml.g5*
非同期推論 NVIDIA 470.57.02 ml.p2.*、ml.p3.*、ml.p4d.*、ml.p4de.*、ml.g4dn.*、ml.g5*
535.54.03 ml.p5.*、ml.g6.*

GPU 機能に関連するモデルコンテナのトラブルシューティング

GPU ワークロードを実行中に問題が発生した場合は、次のガイダンスを参照してください。

Docker コンテナ内から nvidia-smi (NVIDIA システム管理インターフェイス) コマンドを実行します。NVIDIA システム管理インターフェイスにより GPU 検出エラーまたは NVIDIA 初期化エラーが検出されると、次のエラーメッセージが返されます。

Failed to initialize NVML: Driver/library version mismatch

ユースケースに応じて、以下のベストプラクティスに従って障害またはエラーを解決します。

詳細については、NVIDIA Web サイトの NVIDIA システム管理インターフェイスのページを参照してください。

GPU インスタンスで使用されている NVIDIA ドライバーのバージョンが Docker コンテナの CUDA バージョンと互換性がない場合、エンドポイントのデプロイは失敗し、次のエラーメッセージが表示されます。

Failure reason CannotStartContainerError. Please ensure the model container for variant <variant_name> starts correctly when invoked with 'docker run <image> serve'

ユースケースに応じて、以下のベストプラクティスに従って障害またはエラーを解決します。

ドライバのバージョンが一致しない場合のベストプラクティス

以下に、GPU ドライバーの更新方法に関する情報を示します。

アクションは必要ありません。NVIDIA には下位互換性があります。

マイナーバージョンアップによる違いであれば、何もする必要はありません。NVIDIA はマイナーバージョンでの上位互換性を備えています。

メジャーバージョンアップによる違いであれば、CUDA Compatibility Package をインストールする必要があります。NVIDIA ドキュメントの 「CUDA Compatibility Package」を参照してください。

重要

CUDA Compatibility Package は下位互換性を備えていないため、インスタンスのドライバーバージョンが CUDA Compatibility Package バージョンよりも新しい場合は、無効にする必要があります。

ホスト上の NVIDIA ドライバーバージョンと競合する可能性のある NVIDIA ドライバーパッケージがイメージにバンドルされていないことを確認してください。

プラットフォームの Nvidia ドライバーバージョンが、モデルコンテナにインストールされている CUDA Compatibility Package バージョンをサポートしているかどうかを確認するには、CUDA のドキュメントを参照してください。プラットフォームの Nvidia ドライバーバージョンが CUDA Compatibility Package をサポートしていない場合は、CUDA Compatibility Package を無効化するか、モデルコンテナイメージから CUDA Compatibility Package 削除します。CUDA Compatibility libs のバージョンが最新の Nvidia ドライバーバージョンでサポートされている場合は、以下のコードスニペットをコンテナ起動シェルスクリプト (ENTRYPOINT スクリプト) に追加して、将来の互換性を保障するために、検出された Nvidia ドライバーバージョンに基づいて CUDA Compatibility Package を有効にすることをお勧めします。

このスクリプトは、モデルコンテナのデプロイされたホストで検出された Nvidia ドライバーバージョンに基づいて、CUDA Compatibility Package の使用を動的に切り替える方法を示しています。が新しい Nvidia ドライバーバージョンを SageMaker リリースすると、CUDA アプリケーションが新しいドライバーでネイティブにサポートされている場合、インストールされている CUDA 互換パッケージを自動的にオフにできます。

#!/bin/bash verlte() { [ "$1" = "$2" ] && return 1 || [ "$2" = "`echo -e "$1\n$2" | sort -V | head -n1`" ] } if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then cat /usr/local/cuda/version.txt CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 |cut -d'.' -f 3-) echo "CUDA compat package requires Nvidia driver ⩽${CUDA_COMPAT_MAX_DRIVER_VERSION}" NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true) echo "Current installed Nvidia driver version is ${NVIDIA_DRIVER_VERSION}" if [ $(verlte $CUDA_COMPAT_MAX_DRIVER_VERSION $NVIDIA_DRIVER_VERSION) ]; then echo "Setup CUDA compatibility libs path to LD_LIBRARY_PATH" export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH echo $LD_LIBRARY_PATH else echo "Skip CUDA compat libs setup as newer Nvidia driver is installed" fi else echo "Skip CUDA compat libs setup as package not found" fi