TensorFlowのトラブル、一晩か二晩寝かせれば いい感じに事態は好転する… なぁ~んてことはありませんでした ^^;
koboLog: ブログを更新しました → https://t.co/XXoNnW1KKc
『いまさらだけどTensorFlowでCIFAR-10』
CIFAR-10の画像を分類するチュートリアルをやってみたら、GPUで計算してくれなくて困った… って話です。#tensorflow #cnn #cifar10 #python
— 小久保 裕 (@kokubo164) 2018年3月14日
この日記に書いたように、CIFAR-10を使ったTensorFlowのチュートリアルは、(日本語訳された別のホームページを参照して)とりあえずは動いたものの、
- TensorFlowのAPIが変更されている
- GPUを使ってくれない
という問題があったのよね。
1.については、APIの変更点を修正して動かすことができたけど、2.は一晩寝かせても駄目でした、当たり前ですね ^^;
チュートリアルを素直に実行
それがきのうの話。で、きょうは…
そもそも、TensorFlowホームページの最新のソースコードを使わなかったから、1.のように修正しなきゃ動かなかったりしたわけで、2.についてもそうかなと。
ホームページが参照しているソースコードを使ってみたら、あっけなく動いちゃいました。ソースコードを修正する必要もなく(トレーニング時の最大ステップ数は100万回から30万回に変更)、ちゃんとGPUを使って計算してくれました。
最初から、そうすればよかったよ。英語を避けたからこんな遠回りすることになっちゃったんだよなぁ。大反省 ^^;
TrainingとEvaluatingの計算結果
Model Training(cifar10_train.py)の計算結果をTensorBoardで表示してみたら、ホームページに掲載されているのと同じようになりました。当たり前ですね ^^;
total_loss_1
learning_rate
local3_sparsity
Evaluating a Model(cifar10_eval.py)については precision @ 1 = 0.866 となり、これも同じような結果でした。やっぱ当たり前ですかね ^^;
Trainingの計算時間
おととい・きのうはGPUを使ってくれなくて すっごく遅かったんだけど、今回はちゃんとGPUを使ってくれました。計算時間がどのくらい違うか比べてみると…
トレーニング時、CPUによる計算では20~30 examples/secなのに対し、GPUによる計算では4,500 examples/sec程度でした。この例(CIFAR-10, CPU: Intel Core i5-4570, GPU: NVIDIA GeForce GTX 750Ti)に限れば、GPUはCPUより約200倍速いってことになるのかな?
これだけ違うと、やっぱりGPUは必須だなぁと実感しますね (^^)
【2018/3/17 追記】
GPUを使った場合はCPUの場合より約200倍速い?と書きましたが…
GPUを使ってくれずに計算したときは何らかのトラブルが発生していたから低速だったとも考えられますね。正常動作のCPUのみの場合はもっと高速かもしれません。私はGPU版のTensorFlowしかインストールしていないので、そのことも関係しているかもしれません m(._.)m
チュートリアルの例題をやるのに、このドタバタですよ。トンチンカン&すっとこどっこいですよ、私は ^^;
まぁでも、無事計算できて良かったよ。目的はTensorFlowでCIFAR-10の画像分類をやることじゃないからね。それに、タイトルにプログラミングってあるけど、まだ じぇんじぇんプログラミングに至ってないしさ。
とは言え、少し錆を落とせたような感じがして、本当に良かったよ (^^)
◇