5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[pytorch / Colaboratory] "RuntimeError: Deterministic behavior was enabled with either ..." 発生

Last updated at Posted at 2021-12-04

Summary

ColaboratoryのGPU環境を使っている際に、pytorch(pytorch lightning)でpytorch_lightning.Trainer(.. , deterministic=True, ..)を実行したところ、次のようなRuntimeErrorが発生した。

RuntimeError: Deterministic behavior was enabled with either 
`torch.use_deterministic_algorithms(True)` or `at::Context::setDeterministicAlgorithms(true)`,
but this operation is not deterministic
because it uses CuBLAS and you have CUDA >= 10.2.

To enable deterministic behavior in this case,
you must set an environment variable before running your PyTorch application:
CUBLAS_WORKSPACE_CONFIG=:4096:8 or CUBLAS_WORKSPACE_CONFIG=:16:8.

For more information, go to https://docs.nvidia.com/cuda/cublas/index.html#cublasApi_reproducibility

これに対処する。

ちなみに、ColaboratroyのGPU環境というのは、この設定をすることで使えるよ。

2021-12-04_10h58_23.png

Resolution

0. エラーメッセージを読む

To enable deterministic behavior in this case,
you must set an environment variable before running your PyTorch application:
CUBLAS_WORKSPACE_CONFIG=:4096:8 or CUBLAS_WORKSPACE_CONFIG=:16:8.

「この場合に deterministic behavior を有効化するためには、PyTorchを実行する前に環境変数:CUBLAS_WORKSPACE_CONFIG=:4096:8 又は CUBLAS_WORKSPACE_CONFIG=:16:8を設定する必要があるよ。」

1. 環境変数の設定

というわけで、環境変数を設定してみよう。
この記事の通りにやってみる。

環境変数のパラメータ追加

%env PATH=xxxxx:yyyy:zzzz

この %env というのを使えば設定できる模様なので、実行してみる。

%env CUBLAS_WORKSPACE_CONFIG=:4096:8

# セルの下に以下のような結果が表示される
env: CUBLAS_WORKSPACE_CONFIG=:4096:8

# 本当に設定できたか確認しよう
%env

{'CLICOLOR': '1',
 'CLOUDSDK_CONFIG': '/content/.config',
 'CLOUDSDK_PYTHON': 'python3',
 'COLAB_GPU': '1',
 'CUBLAS_WORKSPACE_CONFIG': ':4096:8',  # 出来てた!(((o(*゚▽゚*)o)))
 'CUDA_DEVICE_ORDER': 'PCI_BUS_ID',
 'CUDA_VERSION': '11.1.1',
 'CUDNN_VERSION': '8.0.5.39',

ただ、このままもう一度pytorch_lightning.Trainer(.. , deterministic=True, ..)を実行してもエラーが発生してしまった。
なぜかはわからない。

ただの勘だけど、多分、色々読み込んだ後に環境変数を設定しても遅いんじゃないかな( ˘·ω·˘ ).。oஇ

2. Colaboratoryランタイム初期化

というわけで、最初からやり直してみよう。

Colaboratoryメニューの、「ランタイム」「ランタイムを再起動」をクリック。

2021-12-04_10h57_35.png

すると、この部分に「再起動中」と表示される。

2021-12-04_11h17_31.png

次のように、緑色のチェックマークが出るまで待とう。

2021-12-04_11h17_37.png

この後、先に環境変数を設定してからpythonパッケージのインポートやソースコードを実行したところ、無事エラーを回避できた( *˙︶˙*)وグッ!

関連記事

あんまり関係ないけど、deterministicに関してはこの記事が詳しそう。

ちゃんと理解したくなったら読んでみようと思う。

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?