Help us understand the problem. What is going on with this article?

Jupyter上で使用するGPUを指定する最適解

More than 1 year has passed since last update.

皆さん、DNNしてますか?
私はお金もないので共用サーバのGPUを使ってプログラムを動かしています。
ですが共用サーバ上でJupyterを利用するとき、私はいつも不安を抱えていました。
というのも、Jupyter上でTensorflowを実行すると基本的に全GPUを食い尽くしてしまうからです。
共用サーバでこんなことをすると周りの目が怖いので、各自使用するGPUを指定するのですが、その設定は若干面倒です。

通常のプログラムを実行するときは

export CUDA_VISIBLE_DEVICES=0 #GPU一つ利用
export CUDA_VISIBLE_DEVICES=0,1,2 #GPU複数利用

でいいのですが、Jupyter上で

!export CUDA_VISIBLE_DEVICES=0

としてもGPUをすべて使ってしまいます。これは内部の環境変数をJupyter上で設定できないからかと思われます。
かといってプログラム内部で使用するGPUを指定する場合、利用するフレームワークにより記述方法が異なります。

簡単にフレームワークごとのGPU指定方法をまとめると、

  • Tensorflow
    • tf.session内にてconfigを定義する。
import keras
import tensorflow as tf
tf.Session(config=tf.ConfigProto(device_count = {'GPU': 0}))
  • Keras
    • Tensorflowと同様。ただしtensorflow_backendで上記コードをwrapする必要あり。
  • PyTorch
    • 基本的にはCPUモードでdeviceに指定したGPUがあるときはそれを使う仕様。
    • また変数の指定の際にもGPUを指定する必要あり。
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

となってしまい、フレームワークごとに覚えることも多く非常に面倒です。

Jupyter上でGPUを指定

Jupyter上でも環境変数を設定することで使用するGPUを指定できます。
やり方は非常に単純で、最初のセルにて下記のコードを実行すれば完了です。

import os
os.environ["CUDA_VISIBLE_DEVICES"]="0"

これだけ覚えていれば、今後サーバ上のGPUを食い尽くして嫌な目で見られることもなくなりますね!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした