LoginSignup
5
3

More than 3 years have passed since last update.

tensorflow(tf-keras)でGPU計算の再現性を確保する方法のメモ

Last updated at Posted at 2020-04-08

はじめに

本記事はtensorflow(tensorflow-keras)でGPUを使用した計算をする際に再現性を確保する方法のメモ。
※ ここに記載するGPUの計算順の固定方法はtensorflow-gpuが1.14, 1.15, 2.0の場合のみで使用可能
※ その他のバージョンの場合は参考のリンク先でやり方を見る

実行環境

  • Ubuntu18.04LTS
  • CUDA 10.0
  • cudnn 7.6.5
  • anaconda3-2019.10
  • tensorflow-gpu 1.15.2 / 2.0.0

再現性の確保に必要なこと

  • 乱数を使用する場合は、乱数の固定
  • GPUを使用する場合は、計算順の固定

やったこと

  • randomのseed値の固定
  • np.random.seedのseed値を固定
  • tf.random.set_seedのseed値を固定
  • tensorflow-determinismを使用してGPUの計算順を固定(※) ※ 冒頭にも書いたがtensorflow-gpuが1.14, 1.15, 2.0の場合は次の手順で固定可能

手順

① tensorflow-determinismのインストール

terminal
pip install tensorflow-determinism

② ソースコード上でGPUの計算順序の固定を記述

main.py
import tensorflow as tf
from tfdeterminism import patch
patch()

③ 乱数のseed値の固定

main.py
import random
import numpy as np

random_seed = 0 #任意のseed値を設定

random.seed(random_seed)
np.random.seed(random_seed)
tf.random.set_seed(random_seed)

以上の手順で、GPU計算の再現性を確保ができる。

参考

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