単一のマシンで複数のCUDAバージョンを管理する:包括的なガイド

「包括的なガイド:複数のCUDAバージョンを管理する単一マシン」

開発環境での異なるCUDAバージョンの取り扱い方

Nikola Majksnerさんによる写真、出典:Unsplash

以前、AIコンサルタントとしての役割で、仮想環境を利用してPython環境の管理と隔離を行うツールとして利用することが求められました。このプロジェクトではGPUアクセラレーションに依存していたため、インストールされているCUDAバージョンが必要なバージョンと異なる状況に遭遇しました。これを解決するために、必要なCUDAバージョンをインストールし、自分の環境を設定してシステムのCUDAセットアップに影響を与えずに使用する必要がありました。私の知識に基づく限り、この特定のニーズに対応した包括的で完全なチュートリアルは少ないと考えられます。そのため、このチュートリアルは、自分のプロジェクト内で複数のCUDAツールキットバージョンを安全に管理する方法を理解したい人々にとって貴重なリソースとなります。

目次:

· 1.はじめに· 2.利用可能なCUDAバージョン· 3.バイナリのダウンロードと展開· 4.CUDAツールキットのインストール· 5. プロジェクトのセットアップ· 6. 結論

1. はじめに

システムに複数のCUDAツールキットバージョンをインストールすると、いくつかの効果と影響が生じる可能性があり、これらはシステムに影響を与えることがあります:

  • システムのPATHと環境変数に競合が生じる可能性があります。正しく管理されていない場合、これらの競合によってデフォルトで使用されるCUDAのバージョンに影響を与えることがあります。
  • 最適なパフォーマンスと互換性のために、特定のGPUドライバのバージョンが必要になる場合があります。新しいバージョンをインストールする場合は、GPUドライバも更新する必要があります。
  • 一部のライブラリやソフトウェアは特定のCUDAバージョンに依存する場合があります。新しいバージョンをインストールすると、これらの依存関係との互換性が損なわれる可能性があります。
  • CUDAに依存するアプリケーションは、新しいバージョンに対応するように調整する必要があります。互換性のない場合はエラーや予期しない動作が発生する可能性があります。
  • 複数のCUDAバージョンを正しく管理しないと、システムの不安定化やGPUアクセラレートされたアプリケーションのエラーが発生する可能性があります。

したがって、プロジェクト内で複数のCUDAツールキットバージョンを安全に管理するためには、以下の手順に従ってください:

  1. システムの現在のCUDAバージョンを確認します。
  2. 所望のバージョンのバイナリをダウンロードして展開します。
  3. ツールキットのみをインストールするためにインストーラを実行します。

このチュートリアルでは、これを達成するための詳細なステップバイステップの例を提供します。また、バイナリが正常にインストールされた後に仮想環境の設定を行う方法も案内します。

2. 利用可能なCUDAバージョン

まず、コマンドnvidia-smiを実行してシステムが現在使用しているCUDAバージョンを確認してみましょう:

ご覧の通り、CUDAバージョンは12.1です。

次に、自分のマシンで利用可能なCUDAを表示しましょう:

$ ls /usr/local/ | grep cudacudacuda-11.7cuda-12cuda-12.1

私のマシンには3つの異なるバージョンが利用可能です。

3. バイナリのダウンロードと展開

このプロジェクトで必要なCUDA Toolkitのバージョン11.8を示すことにします。まず、NVIDIA CUDA Toolkit Archiveのウェブサイトを訪れます:こちら 。プロジェクトで要求されるCUDA Toolkitの特定のバージョンを探します。自分のオペレーティングシステムと互換性のあるバージョンを選択することが重要です。私の場合、対象プラットフォームを選びました:

私のターゲットプラットフォーム:Linux — x86_64 — Ubuntu — 22.04

オペレーティングシステムに対応するCUDA Toolkitの「runfile(ローカル)」バージョンを選択してください。通常、この特定のファイルには.runの拡張子が付いています。 runfile(ローカル)を選択すると、ウェブサイトはインストール手順を提供します。私の場合、提供される手順は次のとおりです:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.runsudo sh cuda_11.8.0_520.61.05_linux.run

ただし、このバージョンをインストールすることが目的ではないため、新しいバージョンが既に存在するため、最初の指示に従うだけで十分です。次のコマンドを使用してファイルをダウンロードします:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

ダウンロードは、ダウンロードしたファイルのMD5チェックサムをこのリンクのチェックサムと比較することで確認できます。

「ローカルインストーラーは、完全に自己完結型のインストーラーです。それはインターネットから一度だけダウンロードして、複数のシステムにインストールできる大きなファイルです。ローカルインストーラーは、低帯域幅のインターネット接続やネットワークインストーラーの使用が不可能な場合(ファイアウォールの制限など)、推奨されるインストーラータイプです。」[1]

この段階では、ターミナルを開き、CUDA runfileを転送したディレクトリに移動し、CUDA runfileを実行可能にします:

chmod +x cuda_11.8.0_520.61.05_linux.run

4. CUDA Toolkitのインストール

さあ、--silent--toolkitフラグを使用して、CUDA Toolkitのサイレントインストールを実行しましょう:

sudo ./cuda_11.8.0_520.61.05_linux.run --silent --toolkit

次に:

  • --silent:追加のユーザー入力なしでのインストールを実行し、コマンドラインの出力を最小限にします。
  • --toolkit:CUDA Toolkitのみをインストールし、現在のドライバーを保持します。

同意を求められる場合は、同意してインストールを進めてください。

これで、CUDA Toolkitのバイナリが展開されました。次のコマンドを再度実行して確認できます:

$ ls /usr/local/ | grep cudacudacuda-11.7cuda-11.8cuda-12cuda-12.1

ご覧の通り、cuda-11.8が私のマシンに追加されましたが、システムの現在のバージョンは変更されませんでした(nvidia-smiを実行して確認できます)。

これらの手順により、CUDAバージョンバイナリをインストールできます。次のセクションでは、必要なCUDAバージョンを使用するためにプロジェクトの設定方法を説明します。

5. プロジェクトの設定

複数のプロジェクトを作業する場合は、仮想環境を使用することが推奨されます。まず、仮想環境を作成してみましょう。私の場合は、python3.8が必要でした。以下のコマンドを使用して仮想環境を作成します。仮想環境を格納するvenvというフォルダにmy_venvという名前の環境を作成しました:

python3.8 -m venv venv/my_envsource venv/my_env/bin/activate

現在使用しているCUDAバージョンは次のコマンドで確認できます:

$ nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2021 NVIDIA CorporationBuilt on Thu_Nov_18_09:45:30_PST_2021Cuda compilation tools, release 11.5, V11.5.119Build cuda_11.5.r11.5/compiler.30672275_0

環境を作成すると、必要なCUDAのバージョンが使用されていないため、activateファイルを手動で更新して以下の行を追加する必要があります。

export PATH=/usr/local/cuda-11.8/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

お好みのエディタを使用してactivateファイルを更新するか、次のコマンドを実行してファイルの末尾にテキストを追加することもできます。

echo "export PATH=/usr/local/cuda-11.8/bin:$PATH" >> venv/my_env/bin/activateecho "LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH" >> venv/my_env/bin/activate

最後に、環境を再度アクティブ化し、nvccコマンドを再実行する必要があります。

$ source venv/nerfstudio/bin/activate$ nvcc --versionnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2022 NVIDIA CorporationBuilt on Wed_Sep_21_10:33:58_PDT_2022Cuda compilation tools, release 11.8, V11.8.89Build cuda_11.8.r11.8/compiler.31833905_0

以上です!プロジェクトは必要なCUDAバージョンで設定され、競合せずに実行できるようになりました!

6. 結論

このチュートリアルの手順に従うことで、複数のCUDAバージョンを競合することなくシステム上で適切に維持することができます。この柔軟性により、各プロジェクトは固有のニーズに合わせて環境変数を構成することで、要求されるCUDAバージョンを正確に利用することができます。

お読みいただきありがとうございます。本チュートリアルをお楽しみいただければ幸いです。私のチュートリアルをご支援いただける場合は、フォローおよび購読をお願いします。これにより、新しい記事に関する通知を受け取ることができます。質問や提案がある場合は、下記のコメント欄にお気軽にお書きください。

参考文献

[1] https://developer.nvidia.com/cuda-12-2-2-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local

画像のクレジット

キャプションに出典が明記されていないこの記事のすべての画像と図は、著者によるものです。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more