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

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

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

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

強化学習

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

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

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

解決済

強化学習でRuntimeError: CUDA error: out of memoryが出る

onosan
onosan

総合スコア56

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

強化学習

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

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

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

1回答

0評価

0クリップ

8117閲覧

投稿2021/12/10 02:40

以下のプログラムは途中までのものですが、google colabだと動いたのですが、会社のGPUを積んだマシンだとエラーがでました。エラーが出た原因が知りたいです。
動かしたプログラム

import gym from creversi.gym_reversi.envs import ReversiVecEnv from creversi import * import os import datetime import math import random import numpy as np from collections import namedtuple from itertools import count from tqdm import tqdm_notebook as tqdm import matplotlib.pyplot as plt import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F BATCH_SIZE = 256 vecenv = ReversiVecEnv(BATCH_SIZE) # if gpu is to be used device = torch.device("cuda" if torch.cuda.is_available() else "cpu") ###################################################################### # Replay Memory Transition = namedtuple('Transition', ('state', 'action', 'next_state', 'next_actions', 'reward')) class ReplayMemory(object): def __init__(self, capacity): self.capacity = capacity self.memory = [] self.position = 0 def push(self, *args): """Saves a transition.""" if len(self.memory) < self.capacity: self.memory.append(None) self.memory[self.position] = Transition(*args) self.position = (self.position + 1) % self.capacity def sample(self, batch_size): return random.sample(self.memory, batch_size) def __len__(self): return len(self.memory) ###################################################################### # DQN k = 192 fcl_units = 256 class DQN(nn.Module): def __init__(self): super(DQN, self).__init__() self.conv1 = nn.Conv2d(2, k, kernel_size=3, padding=1) self.bn1 = nn.BatchNorm2d(k) self.conv2 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn2 = nn.BatchNorm2d(k) self.conv3 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn3 = nn.BatchNorm2d(k) self.conv4 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn4 = nn.BatchNorm2d(k) self.conv5 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn5 = nn.BatchNorm2d(k) self.conv6 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn6 = nn.BatchNorm2d(k) self.conv7 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn7 = nn.BatchNorm2d(k) self.conv8 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn8 = nn.BatchNorm2d(k) self.conv9 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn9 = nn.BatchNorm2d(k) self.conv10 = nn.Conv2d(k, k, kernel_size=3, padding=1) self.bn10 = nn.BatchNorm2d(k) self.fcl1 = nn.Linear(k * 64, fcl_units) self.fcl2 = nn.Linear(fcl_units, 65) def forward(self, x): x = F.relu(self.bn1(self.conv1(x))) x = F.relu(self.bn2(self.conv2(x))) x = F.relu(self.bn3(self.conv3(x))) x = F.relu(self.bn4(self.conv4(x))) x = F.relu(self.bn5(self.conv5(x))) x = F.relu(self.bn6(self.conv6(x))) x = F.relu(self.bn7(self.conv7(x))) x = F.relu(self.bn8(self.conv8(x))) x = F.relu(self.bn9(self.conv9(x))) x = F.relu(self.bn10(self.conv10(x))) x = F.relu(self.fcl1(x.view(-1, k * 64))) x = self.fcl2(x) return x.tanh() def get_states(envs): features_vec = np.zeros((BATCH_SIZE, 2, 8, 8), dtype=np.float32) for i, env in enumerate(envs): env.board.piece_planes(features_vec[i]) return torch.from_numpy(features_vec).to(device)

この最後のreturn torch.from_numpy(features_vec).to(device)のところで、、google colabでは
エラーが出ないのですが、会社のGPUを積んだLinuxだと
RuntimeError: CUDA error: out of memory
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
というエラーがでます。ググったりして調べたのですが、原因が分かりませんでした。
会社のGPUの環境は、下記の通りです。
-bash-4.2$ lspci | grep -i nvidia
3b:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1)
3b:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1)
3b:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Host Controller (rev a1)
3b:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 USB Type-C UCSI Controller (rev a1)
af:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
af:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)

ご教示いただけますと幸いです。
何卒、よろしくお願い申し上げます。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

episteme

2021/12/10 02:46

単にデバイス(グラボ)上のメモリーが足りんのじゃないですか?
onosan

2021/12/10 02:56

ありがとうございます。 nvidia-smiをためすと以下のようになりますが、足りていないでしょうか。 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.82 Driver Version: 440.82 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce RTX 208... Off | 00000000:3B:00.0 Off | N/A | | 28% 36C P2 61W / 250W | 11013MiB / 11019MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 GeForce GTX 108... Off | 00000000:AF:00.0 Off | N/A | | 20% 24C P8 8W / 250W | 10MiB / 11178MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 101628 C .../local/anaconda3/envs/37prod/bin/python 6897MiB | | 0 169129 C .../local/anaconda3/envs/37prod/bin/python 833MiB | | 0 181127 C /home/s80141/.conda/envs/s80141/bin/python 959MiB | | 0 188149 C .../local/anaconda3/envs/37prod/bin/python 2313MiB | +-----------------------------------------------------------------------------+
episteme

2021/12/10 02:58

いやそんなの知らんよgoogle colabでどんだけメモリ使ったんかわからんのだから。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

強化学習

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

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

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