質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

解決済

複数のGPUメモリを最大限使う方法

harug
harug

総合スコア22

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

2回答

0評価

1クリップ

514閲覧

投稿2022/07/01 12:42

編集2022/07/06 11:30

前提・実現したいこと

プログラム実行時にGPU:0,GPU:1,GPU2,GPU:3のすべてのGPUメモリを最大限使用できるようにしたいです.
現在こちらと同じような問題に悩まされています.

jupyter lab上でpythonのプログラムを実行しているのですが,os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3"として実行してもOOMエラーが吐かれてしまいます.

!nvidia-smiの実行結果は以下のようになりました.
ちなみにモデルはシャムネットワーク,訓練データ数は900000,データタイプはfloat32,バッチサイズは1です.

↓実行前

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 450.156.00 Driver Version: 450.156.00 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100-DGXS... On | 00000000:07:00.0 Off | 0 | | N/A 59C P0 226W / 300W | 5442MiB / 32499MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-DGXS... On | 00000000:08:00.0 Off | 0 | | N/A 59C P0 233W / 300W | 5350MiB / 32508MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 2 Tesla V100-DGXS... On | 00000000:0E:00.0 Off | 0 | | N/A 58C P0 226W / 300W | 5350MiB / 32508MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 3 Tesla V100-DGXS... On | 00000000:0F:00.0 Off | 0 | | N/A 56C P0 230W / 300W | 5350MiB / 32508MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+

↓実行後

+-----------------------------------------------------------------------------+ | NVIDIA-SMI 450.156.00 Driver Version: 450.156.00 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100-DGXS... On | 00000000:07:00.0 Off | 0 | | N/A 59C P0 240W / 300W | 31911MiB / 32499MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-DGXS... On | 00000000:08:00.0 Off | 0 | | N/A 59C P0 233W / 300W | 5789MiB / 32508MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 2 Tesla V100-DGXS... On | 00000000:0E:00.0 Off | 0 | | N/A 58C P0 226W / 300W | 5789MiB / 32508MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 3 Tesla V100-DGXS... On | 00000000:0F:00.0 Off | 0 | | N/A 56C P0 230W / 300W | 5789MiB / 32508MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+

どうやらos.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3"で優先的にGPU:0を使用し,それ以外はまんべんなく少し使用しているようですが,GPU:0が上限に達したらOOMエラーを吐いているのでしょうか.

GPU:0が上限に達したら次はGPU:1というように,複数のGPUメモリを最大限使う方法はないのでしょうか.

補足情報(FW/ツールのバージョンなど)

ubuntu 20.04
Python 3.8.10

tensorflow 1.15.5+nv22.5
tensorflow-estimator 1.15.1

Keras-Applications 1.0.8
Keras-Preprocessing 1.0.5

jupyter lab 2.3.2

PCスペックはこちらの都合上記載できません.すみません.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

fourteenlength

2022/07/01 16:22

古めのTFはGPUの管理がずさんだったと思います。TFv2系までアップグレードしてTFv1の再現モード(?)で動かした方がうまくいきそうな気もします(保証はないですので、やるのであれば要バックアップです)
fourteenlength

2022/07/02 03:45 編集

CUDAで4つGPUを認識できるようにした「だけ」で、TF側で使うGPUの個数を指定していない可能性はありませんか? > それ以外はまんべんなく少し使用しているようですが,GPU:0が上限に達したらOOMエラーを吐いているのでしょうか. 環境側であるCUDAで4台使えるようにしておいても、使う側のTFでデフォルト設定なのか標準構成なのかで1台しか使えるようになっているのかも、と思った次第です。ほかのGPUも少し使っているように見えているだけで、実際のところは使っていないのかな、という印象を受けました。 > PCスペックはこちらの都合上記載できません.すみません. GPU構成が特殊過ぎて、推定型番が出せてしまいます(私からあえてここで載せることはしません)。検索でヒットさせたくないか、本気で知られたくないかで対応が変わってくると思います。
harug

2022/07/06 02:30

アドバイスいただき,誠にありがとうございます. 現在は,ライブラリのバージョンを変更すると問題なく動作するようになりした. また途中で同様の問題が発生したら,また参考にさせていただきます. よろしくお願いします.

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。