質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

0回答

439閲覧

【機械学習】TensorFlow+GPU(Docker使用)の動きが同じコードでも実行する度に異なるのですが、理由がわかりません……

AnonymousMan

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2023/03/17 23:48

編集2023/03/18 09:32

実現したいこと

  • 実行時に毎回同じ動きをするようにしたい

前提

機械学習を勉強中の者です。
Docker上でTensorFlow(Ver2.11.0)+GPU+JupyterNotebook(言語はPython 3.8)を使って画像識別のプログラムを動かしており、それに関する質問です。
(大元のOSはWindows11です)
.
.

発生している問題・エラーメッセージ

発生している問題はタイトルに記載の通りなのですが、全く同じコードなのになぜか動かす度に挙動が異なります。

具体的には

・CPUより早いスピードで計算が終わる
・CPUと同じくらいのスピードしか出ない(途中で止めてしまっているので最後まで計算できるかどうかの確認はしてません)
・CPUより早いスピードで計算していたのだが、なぜか途中で止まってしまっている

という感じです。

こういう事象はよくあることなのでしょうか?
また、もし考えられる理由があれば、教えていただければ幸いです。

よろしくお願いいたします。
.
.

補足

  • プログラムの実行時、他にゲームなど、重いプログラムを走らせてはいません
  • 毎回、Jupyterのカーネルを立ち上げ直し、最初からプログラムを実行し直しています(⇒それでもなぜか同じ動きをしてくれない……)
  • Docker上でTensorFlow+GPUを動かすための環境構築については、こちらの記事を参考にしました⇒https://qiita.com/kekekekenta/items/d0d64688c889b860beba

(ただTensorFlow+Jupyterの環境を一発で作る方法がわからなかったため、公式のTensorFlowのイメージからコンテナを作り、そこにJupyterNotebookをインストールしました)
.
.

マシンのスペック等

・Windows(R) 11 Home 64bit版 [正規版]
・CPU:インテル Core i5-12400F プロセッサー (2.50GHz[P-core][最大4.40GHz] / 6コア / 12スレッド / 18MBキャッシュ)
・GPU:NVIDIA GeForce RTX 3060 LHR【HDMI x1 / DisplayPort x3】
・メモリ:32GB(16GB×2) PC4-25600(DDR4-3200) DDR4 SDRAM
・インテル B660 チップセット搭載マザーボード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2023/03/18 00:38

・プログラム実行中のCPU、メモリ等の状況を監視してみてはどうでしょうか? ・OSやマシンスペックについて質問に追記されると回答がつきやすくなるかと思います。
AnonymousMan

2023/03/18 03:10

ありがとうございます。 マシンのスペック等を追記しました。 タスクマネージャーを見ても、GPUが使われているように見えるときでもGPUの使用率は30%とか40%くらいで、特に問題はなさそうなんですよね。 今日もトライしてみまして、最初はGPUを使って動いている感じでしたが、途中で止まってしまってました(進捗率は40%くらい)。 そのためPCを再起動してもう一度やってみたら、今度はGPUが使われていない感じです……。 (GPUの使用率が1桁台で推移中)
meg_

2023/03/18 03:35

質問の状況はtensorflowを使ったどんなプログラムでも起きるのでしょうか?それとも特定のタスクにて起きるのでしょうか?
AnonymousMan

2023/03/18 04:13

他のプログラムは試していませんでしたが、 試してみようと思います。 なお、先ほど 「そのためPCを再起動してもう一度やってみたら、今度はGPUが使われていない感じです……。 (GPUの使用率が1桁台で推移中)」 と書きましたが、 今見てみたら、GPUを使い始めたのか、実行速度が上がり、GPUの使用率も10%~30%くらいになっていました……(原因不明) なお、プログラム自体はUdemyの講座で使われていたものなので(※)、 プログラム自体に大きな問題があるということはないと思います。 (※犬と猫の画像を識別するというお題ですが、勉強用のサンプルプログラム的なものです。 一部コードが古く、新しいTensorFlowに対応していないところがあり、そこは自分で調べて直しましたが、それ以上に手を加えてはおりません。)
meg_

2023/03/18 04:35

> 他のプログラムは試していませんでしたが、試してみようと思います。 オープンになっているサンプルコードですと他の人も試すことができるかと思います。 ちなみにお使いのtensorflowのバージョンは何でしょうか?
jbpb0

2023/03/18 06:00 編集

> Docker上でTensorFlow+GPU(Ver2.11.0)+JupyterNotebook(言語はPython 3.8) cudaとcudnnのバージョンは、 https://www.tensorflow.org/install/source?hl=ja#linux の「テスト済みのビルド構成」の「Linux」の「GPU」の表の、「テンソルフロー-2.11.0」の行のと合ってますでしょうか? また、上記表によると「テンソルフロー-2.5.0」以降はcudaとcudnnのバージョンが「テンソルフロー-2.11.0」と同じなので、2.5〜2.10のどれかに入れ替えて試してみるといいかもしれません あとは、win 11に入れてるnvidiaのドライバーが、 > ・GPU:NVIDIA GeForce RTX 3060 LHR【HDMI x1 / DisplayPort x3】 に対応してる新しいのが出てないか調べて、もし出てたら入れてみるとか
AnonymousMan

2023/03/18 09:32 編集

jbpb0様 ご返信ありがとうございます。 画像識別のプログラムですが、今度(※)は最後まで回りました。 (※最初はCPUのスピードだったのに、途中から高速になったパターン) また別のプログラムとしてRNNのサンプルプログラム(同じくUdemyの講座のもの/株価予想なので犬猫判別に比べれば大分軽め)を回してみたところ、1回目は途中で止まってしまいましたが、2回目は最後まで回りました。 (GPUの使用率もちょっと見たところ80%とかになっていたので、GPUも使われている様子) 全く動かないというより、動作が不安定という感じですね。 (残ったキャッシュの影響とか?) またご指摘いただいた点を確認したところ、Pythonのバージョンもcudaのバージョンも表のものより、私が使っているものの方が新しいですね。 不慣れなもので、最新もものなら大丈夫だろう、と思い、バージョンのことは気にしていませんでした。 幸いDockerなので、新しくコンテナを作り直して試してみようと思います。 ところで、かなり初歩的なことで恐縮ですが、この場合の「cudaのバージョン」は、Windowsマシンに入れたもののバージョンのことでよいでしょうか? Windows11に直接cudaを入れて(※)、それでDocker上のPython+TensorFlowでGPUが使えるようになったのでよいと思っていましたが、よく考えたらDocker自体はLinuxベースなので、Docker上のコンテナにcudaを入れるべきなのか???と頭が混乱してきた次第です。 【補足】 ・cudnnは特に個別にインストールしていませんでした。個別にインストールが必要なものなのでしょうか ・GPUのドライバは昨日入れ直したばかりなので、最新のものが入っております ・Docker上でTensorFlow+GPUを動かすために参考にした記事を補足のところに貼付しました
AnonymousMan

2023/03/18 09:35

meg_様 度々、ありがとうございます。 TensorFlowのバージョンは2.11.0です。 (間違えてGPUのところに括弧書きしていました…) TensorFlowとPythonやCuda等のバージョンが合っていないので、バージョンをそろえてコンテナを作り直し、もう一度試してみようと思います。
jbpb0

2023/03/18 11:08

> この場合の「cudaのバージョン」は、Windowsマシンに入れたもののバージョンのこと 違います この場合は、windowsに必要なのは、nvidiaのドライバーだけです windowsにcudaを入れても、使われません > Docker自体はLinuxベースなので、Docker上のコンテナにcudaを入れるべきなのか? そうです cudaとcudnnは、tensorflowを動かすOS(この場合はdocker側のlinux)に入れます > ・cudnnは特に個別にインストールしていませんでした。個別にインストールが必要なものなのでしょうか 参考にしてる https://qiita.com/kekekekenta/items/d0d64688c889b860beba に 「使いたいバージョンのCUDAをコンテナのタグで指定するだけで使うことができます。CUDAとcuDNNの再インストールが不要になりました。」 と書かれてるので、cudnnもインストールされてるのではありませんかね
jbpb0

2023/03/18 11:41

> Pythonのバージョンもcudaのバージョンも表のものより、私が使っているものの方が新しいですね。 > 最新もものなら大丈夫だろう、と思い、バージョンのことは気にしていませんでした。 pythonのバージョンは、 https://www.tensorflow.org/install/source?hl=ja#linux の「テスト済みのビルド構成」の「Linux」の「GPU」の表の、「テンソルフロー-2.11.0」の行のpythonのバージョンは3.7-3.10なので、 > (言語はPython 3.8) は大丈夫です cudaのバージョンは、 https://teratail.com/questions/49p34699duai23 の「質問へのコメント」を見てください TensorFlow 2.9.1 CUDA 11.7 cuDNN 8.4.1 の組み合わせでは問題が有った(学習が途中で止まる)のが、 https://www.tensorflow.org/install/source_windows?hl=en#gpu の「Tested build configurations」の「GPU」の表のバージョンの組み合わせを入れ直したら直ってます 上記はwindowsでのケースですが、linuxでも同様なことが起きるかもしれないので、公式webページに書かれてる組み合わせで環境を作る方が無難だと思います
AnonymousMan

2023/03/18 12:05

jbpb0様 詳しいご説明、ありがとうございます。 > cudaとcudnnは、tensorflowを動かすOS(この場合はdocker側のlinux)に入れます そうでしたか。 Windows11のcudaは入れたように記憶していますが、Linux側には入れていなかったような……。 (それとも一応は動いている様子なので入れたのか……?) いずれにしてもバージョンを合わせて再チャレンジしてみます。 また、この辺りのことがよくわかっていなかったので、大変参考になりました。 ありがとうございます。 数日後になるかもしれませんが、やり直した結果はご報告させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問