【CUDA】マルチGPU環境でのデバイス指定エラー解決法

CUDAのマルチGPU環境のデバイス指定エラー

CUDAの使用中にマルチGPU環境のデバイス指定エラーに遭遇する場合があります。本記事ではこの問題の原因と解決方法を詳しく解説します。

エラーの症状

複数のGPUを搭載したマシンで「CUDA error: invalid device ordinal」「RuntimeError: CUDA error: all CUDA-capable devices are busy」などのエラーが発生します。

原因

1. 存在しないGPU IDの指定
2枚のGPU環境でcuda:2を指定するとエラーになります。

2. CUDA_VISIBLE_DEVICESの設定ミス
環境変数で制限したデバイスと、コード内の指定が矛盾する場合です。

3. GPU間のメモリ転送エラー
異なるGPU上のテンソル間で演算しようとした場合に発生します。

解決方法

手順1: GPU一覧の確認

nvidia-smi
python -c "import torch; print(torch.cuda.device_count()); [print(f'  GPU {i}: {torch.cuda.get_device_name(i)}') for i in range(torch.cuda.device_count())]"

手順2: CUDA_VISIBLE_DEVICESの設定

# 特定のGPUのみを使用
export CUDA_VISIBLE_DEVICES=0,1  # GPU 0と1のみ使用
export CUDA_VISIBLE_DEVICES=1    # GPU 1のみ使用

# Pythonコード内
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"

手順3: デバイス間のテンソル移動

# 明示的にデバイスを統一
device = torch.device('cuda:0')
model = model.to(device)
input_data = input_data.to(device)

まとめ

本記事で紹介した手順を試すことで、多くの場合問題を解決できます。環境固有の問題が残る場合は、公式ドキュメントやコミュニティフォーラムを参照してください。

☁️ ローカルGPUが足りない?クラウドGPUという選択肢

高性能GPUを今すぐ使いたい方には、クラウドGPUサービスがおすすめです:

  • RunPod — RTX 4090が$0.44/h〜、Serverless推論にも対応。セットアップ不要で即利用可能
  • Vast.ai — 最安値のGPUマーケットプレイス。H100/A100も格安で利用可能

💡 この問題を根本的に解決するには

ローカル環境のGPUトラブルが頻発する場合、ハードウェアの見直しも検討してみてください:

💡 この問題を根本的に解決するには

ローカル環境でGPUトラブルが頻発する場合、クラウドGPUサービスの利用も検討してみてください。環境構築の手間なく、すぐにAI開発を始められます。

  • RunPod — RTX 4090が$0.44/h〜、ワンクリックでJupyter環境が起動
  • Vast.ai — コミュニティGPUマーケットプレイス、最安値でGPUレンタル
この記事は役に立ちましたか?