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

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

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

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

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

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

サービス 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 ワークロードの実行中に問題が発生した場合は、次のガイダンスを参照してください。

( nvidia-smi System Management Interface) コマンドをNVIDIA Docker コンテナ内から実行します。NVIDIA System Management Interface がGPU検出エラーまたはNVIDIA初期化エラーを検出すると、次のエラーメッセージが返されます。

Failed to initialize NVML: Driver/library version mismatch

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

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

GPU インスタンスが Docker コンテナ内のバージョンと互換性のないNVIDIAドライバー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互換性パッケージをインストールする必要があります。NVIDIA ドキュメントのCUDA「互換性パッケージ」を参照してください。

重要

CUDA 互換性パッケージは下位互換性がないため、インスタンスのドライバーバージョンがCUDA互換性パッケージバージョンより大きい場合は無効にする必要があります。

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

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

このスクリプトは、モデルコンテナのデプロイされたホストで検出された Nvidia ドライバーのバージョンに基づいてCUDA、互換性パッケージの使用を動的に切り替える方法を示しています。が新しい 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