Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

はじめに

本記事は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計算の再現性を確保ができる。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?