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

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

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

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

1217閲覧

【ChainrRL】GPU使用率が上がらない

junko_kobayashi

総合スコア11

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2022/03/01 10:10

編集2022/03/01 11:49

chainerRLライブラリを使って強化学習をしていますが、GPU使用率が1%程度しか出ません。

バージョン
python 3.9
windows 10
visual studio 2019
CUDA 11.4
cuDNN 8.2.4
Chainer 7.8.1
cupy-cuda114

abc.py

1import chainer 2import chainer.functions as F 3import chainer.links as L 4import chainerrl 5import gym 6import numpy as np 7import cupy as cp 8import time 9from environment import MyEnv 10 11env = MyEnv() 12print(env.step(2)) 13 14obs = env.reset() #初期化 15 16action = env.action_space.sample() 17obs, r, done, info = env.step(action) 18 19obs_size = env.observation_space.shape[0] 20n_actions = env.action_space.n 21 22obs_size = env.observation_space.shape[0] 23n_actions = env.action_space.n 24 25q_func = chainerrl.q_functions.FCStateQFunctionWithDiscreteAction( 26 obs_size, n_actions, 27 n_hidden_layers=13, n_hidden_channels=256) 28 29 30q_func.to_gpu(0) ## GPU有効 31 32optimizer = chainer.optimizers.Adam(eps=1e-2) 33optimizer.setup(q_func) #設計したq関数の最適化にAdamを使う 34gamma = 0.95 35explorer = chainerrl.explorers.ConstantEpsilonGreedy( 36 epsilon=0.3, random_action_func=env.action_space.sample) 37replay_buffer = chainerrl.replay_buffer.ReplayBuffer(capacity = 10**6) 38phi = lambda x:x.astype(np.float32, copy=False)##型の変換(chainerはfloat32型。float64は駄目) 39 40agent = chainerrl.agents.DoubleDQN( 41 q_func, optimizer, replay_buffer, gamma, explorer, 42 replay_start_size=500, update_interval=1, 43 target_update_interval=100, phi=phi) 44 45#学習--------------------------------------------------------------------- 46 47n_episodes = 1000 48max_episode_len = 2024 49start = time.time() 50for i in range(1, n_episodes + 1): 51 obs = env.reset() 52 reward = 0 53 done = False 54 R = 0 # return (sum of rewards) 55 t = 0 # time step 56 while not done and t < max_episode_len: 57 env.render()# 動きを見たければここのコメントを外す 58 action = agent.act_and_train(obs, reward) 59 obs, reward, done, _ = env.step(action) 60 R += reward 61 t += 1 62 if i % 10 == 0: 63 print('episode:', i, 64 'R:', R, 65 'statistics:', agent.get_statistics()) 66 agent.stop_episode_and_train(obs, reward, done) 67print('Finished, elapsed time : {}'.format(time.time()-start)) 68 69 70agent.save("hoge") 71 72

これを実行すると、ゆっくりではありますが、学習します。しかし、GPU効率は変わらず1%です。

commandprompt

1nvidia-smi

で使用率を見ても、元々の5%から変わっていません。
イメージ説明

test.py

1import chainer 2chainer.print_runtime_info()

を実行すると、

Platform: Windows-10-10.0.19043-SP0
Chainer: 7.8.1
ChainerX: Not Available
NumPy: 1.19.5
CuPy:
OS : Windows-10-10.0.19043-SP0
Python Version : 3.9.5
CuPy Version : 10.2.0
CuPy Platform : NVIDIA CUDA
NumPy Version : 1.19.5
SciPy Version : 1.6.3
Cython Build Version : 0.29.28
Cython Runtime Version : None
CUDA Root : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4
nvcc PATH : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\bin\nvcc.EXE
CUDA Build Version : 11040
CUDA Driver Version : 11060
CUDA Runtime Version : 11040
cuBLAS Version : 11502
cuFFT Version : 10500
cuRAND Version : 10205
cuSOLVER Version : (11, 2, 0)
cuSPARSE Version : 11600
NVRTC Version : (11, 4)
Thrust Version : 101201
CUB Build Version : 101201
Jitify Build Version : 4a37de0
cuDNN Build Version : 8302
cuDNN Version : 8204
NCCL Build Version : None
NCCL Runtime Version : None
cuTENSOR Version : None
cuSPARSELt Build Version : None
Device 0 Name : NVIDIA GeForce RTX 3090
Device 0 Compute Capability : 86
Device 0 PCI Bus ID : 0000:01:00.0
iDeep: Not Available

と表示され、一応はcudaなどは認識しているようです。
かれこれ2日くらい、いろいろ試しましたが自分では解決できませんでした。考えられる原因を教えてください。

#ちなみに、関係あるかどうかはわかりませんが、一応補足させていただきます。
tensorflowではGPUを認識していますが、pyTorchではGPUの認識さえされていませんでした。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2022/03/01 20:18 編集

> Chainer 7.8.1 > CuPy Version : 10.2.0 https://docs.chainer.org/en/stable/install.html#hardware-acceleration-support の「Hardware Acceleration Support」の「Note」に  CuPy v7.8.0 is the recommended version for Chainer v7 series. と書かれてるので、cupy 10との組み合わせだとchainerでGPU使えないのではないですかね > cupy-cuda114 > CUDA 11.4 https://docs.cupy.dev/en/v7.8.0/install.html#install-cupy の「Install CuPy」を見ると、cupy 7.8.0がサポートしてるのはCUDA 11.0までのようです CUDA 11.1用のcupy-cuda111には、7.8.0はありませんし https://pypi.org/project/cupy-cuda111/#history > python 3.9 cupy-cuda110 7.8.0がサポートしてるのはpython 3.8までですね https://pypi.org/project/cupy-cuda110/7.8.0/#files のファイル名の「cp数字」の数字が、対応してるpythonのバージョンです
guest

回答1

0

自己解決

バージョンの問題でした。
pyhton 3.8にしたところ、GPU使用率が上がりました。

解決のきっかけとなった回答をくださった方、ありがとうございました。

投稿2022/03/10 22:14

junko_kobayashi

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問