0
0

More than 1 year has passed since last update.

【エラー】terminate called after throwing an instance of 'std::runtime_error' の解決

Posted at

概要

あるニューラルネットワークの学習をしようとしたところ、以下のような流れでエラーが発生。

  1. 学習しようとしたら使用GPUメモリが大きすぎてできなかった。
  2. 別のサーバ(もっとGPU積んであるやつ)で学習しようとDockerコンテナを立てて環境構築。
  3. 学習開始直後、print出力されていたログが全く表示されない(表示されても物凄く時間がかかる)。
  4. 長時間待ってようやく表示されたと思ったら以下のようなエラーが発生。
terminate called after throwing an instance of 'std::runtime_error'
what():  NCCL Error 1: unhandled cuda error
Aborted (core dumped)

解決方法

NVIDIAのDocker imageをDockerfileに記述していたものの、そのCUDAバージョンが適切でなかった。

元々のDOckerfileの記述

ARG CUDA="10"
ARG CUDNN="7"
FROM nvidia/cuda:${CUDA}-cudnn${CUDNN}-devel

解決後

ARG CUDA="11.3.0"
ARG CUDNN="8"
FROM nvidia/cuda:${CUDA}-cudnn${CUDNN}-devel-ubuntu20.04

nvidia-smiの出力できたCUDAバージョン

 NVIDIA-SMI 470.103.01   Driver Version: 470.103.01   CUDA Version: 11.4 

また学習にはpytorchを使用していたが、pytorchのバージョンも変更した。

元々のDockerfile

RUN conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch-lts

解決後

RUN conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch

まとめ

元々GPUメモリが足りず処理が終了していたサーバもCUDAバージョンが11だったので、「CUDA11のやつで一応動いているのだから、CUDAバージョンは関係ないよね」と勝手に思っていたのですが、どうやらそういうわけではなかったみたいです。きちんとバージョン確認・変更する、大事。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0