Windows11 WSL2 Ubuntu Python

TensorFlow インストール確認Ⅱ

ここまでで TensorFlow インストール確認Ⅰが完了しました。
引き続き、他の方法でも conda 仮想環境に入れた tensorflow の動作確認をしていきます。
yamada@yama:~$ conda activate
として conda 環境を有効にします。
簡単な Python3 tensorflow ファイルを実行します。
(base) yamada@yama:~$ python3 -c "import tensorflow as tf; hello = tf.constant('Hello World'); tf.print(hello)"
結果としして、TensorFlow インストール確認Ⅰで発生したとほぼ同じコメントが発生して
Hello World
と表示されました。
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='1'
を追加してみましょう。
(base) yamada@yama:~$ python3 -c "import os; os.environ['TF_CPP_MIN_LOG_LEVEL']='1'; import tensorflow as tf; hello = tf.constant('Hello World'); tf.print(hello)"
なんのコメントもなく
Hello World
と表示されました。
うまく行きました。

TensorFlow インストール確認Ⅲ

演算デバイスの配置をログに記録して GPU が使用されているか確認します。
演算を tensor がどのデバイスに割り当てられたかを確認するには
tf.debugging.set_log_device_placement(True)
をプログラムの最初のステートメントとして置きます。
デバイス配置ログを有効にすると、テンソルの割り当てや演算が出力されます。
TensorFlow インストール確認Ⅲ ファイル
tensor_gpu_t2.py
を作成します。
Tensor 配列を作成してその積を計算します。
配列の積については
numpy.matmulで行列の積を求める方法
【TensorFlow】Tensorの行列積を計算する方法
を参照してください。
下記ファイルを windows 側で作成します。

   
# -*- coding: utf-8 -*-
#0:全てのメッセージが出力される(デフォルト)。
#1:INFOメッセージが出ない。
#2:INFOとWARNINGが出ない。
#3:INFOとWARNINGとERRORが出ない。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='1'
import tensorflow as tf
# デバイス配置ログを有効化
tf.debugging.set_log_device_placement(True)
# Create some tensors
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
print(c)

# python3 public_html/tensor_gpu_t2.py

TeraPad 等で作成したら、ファイル名を tensor_gpu_t2.py として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yama/public_html/tensor_gpu_t2.py
としました。

TensorFlow インストール確認Ⅲ 実行

yamada@yama:~$ conda activate
として conda 環境を有効にします。
tensor_gpu_t2.py ファイルを実行します。

   
(base) yamada@yama:~$ python3 public_html/tensor_gpu_t2.py  
input: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
_EagerConst: (_EagerConst): /job:localhost/replica:0/task:0/device:GPU:0
output_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
a: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
b: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
MatMul: (MatMul): /job:localhost/replica:0/task:0/device:GPU:0
product_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
tf.Tensor(
[[22. 28.]
 [49. 64.]], shape=(2, 2), dtype=float32)

各行に
/job:localhost/replica:0/task:0/device:GPU:0
が表示され /device:GPU:0 で処理が実行されているのがわかります。
私の PC には GPU は1枚しか実装されていないので GPU:0 と表示されていますが、 複数枚実装されれば状況により GPU:1 のように表示されるのかもしれません。

TensorFlow インストール確認Ⅳ

もっと演算に時間がかかるファイルを作成し、 演算デバイスの配置をログに記録して GPU が使用されているか確認します。
TensorFlow インストール確認Ⅳ ファイル
tensor_gpu_test.py
を作成します。
下記ファイルを windows 側で作成します。

# -*- coding: utf-8 -*-
#0:全てのメッセージが出力される(デフォルト)。
#1:INFOメッセージが出ない。
#2:INFOとWARNINGが出ない。
#3:INFOとWARNINGとERRORが出ない。
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='1'
import tensorflow as tf
tf.debugging.set_log_device_placement(True)

a = tf.random.normal([1000, 1000])
# 正規分布から乱数を出力する 
print(tf.math.reduce_sum(a))
# 配列内のすべての要素を足し算する
# python3 public_html/tensor_gpu_test.py

TeraPad 等で作成したら、ファイル名を tensor_gpu_test.py として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yama/public_html/tensor_gpu_test.py
としました。

TensorFlow インストール確認Ⅳ 実行

yamada@yama:~$ conda activate
として conda 環境を有効にします。
tensor_gpu_test.py ファイルを実行します。

   
(base) yamada@yama:~$ python3 public_html/tensor_gpu_test.py  
input: (_Arg): /job:localhost/replica:0/task:0/device:CPU:0
_EagerConst: (_EagerConst): /job:localhost/replica:0/task:0/device:GPU:0
output_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
input: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
_EagerConst: (_EagerConst): /job:localhost/replica:0/task:0/device:GPU:0
output_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
shape: (_DeviceArg): /job:localhost/replica:0/task:0/device:CPU:0
RandomStandardNormal: (RandomStandardNormal): /job:localhost/replica:0/task:0/device:GPU:0
output_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
x: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
y: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
Mul: (Mul): /job:localhost/replica:0/task:0/device:GPU:0
z_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
x: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
y: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
AddV2: (AddV2): /job:localhost/replica:0/task:0/device:GPU:0
z_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
input: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
reduction__indices: (_DeviceArg): /job:localhost/replica:0/task:0/device:CPU:0
Sum: (Sum): /job:localhost/replica:0/task:0/device:GPU:0
output_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
tf.Tensor(-1147.8873, shape=(), dtype=float32)

最初は device:CPU:0 から始まりましたがすぐに処理は device:GPU:0 に引き継がれました。
乱数の作成が GPU で完了するとその結果は一旦 CPU に引き渡され 配列足算は再び GPU で処理がされています。
満足できる結果を得ることができました。

Windows11 WSL2 Ubuntu-22.04 に apache2, PHP-8, Python3, Python GPU 環境を構築してきました。
かなり苦労しました。
引き続き TensorFlow-GPU, cuDNN, CUDA バージョン対応について補足します。


  • TensorFlow-GPU, cuDNN, CUDA バージョン対応 に進む
  • TensorFlow インストール確認Ⅰ に戻る
  • TensorFlow インストール版数確認 に戻る
  • cuDNN インストール確認 に戻る
  • cuDNN 概要 に戻る
  • CUDA Toolkit のインストール に戻る
  • WSL2 Ubuntu Python GPU 環境 に戻る
  • WSL2 Ubuntu Python 概要 に戻る
  • 70VPS に戻る