Python 仮想環境を使う

base 仮想環境の TensorFlow 動作確認

/home/yamada/miniconda3 に tensorflow 2.11.0 とその他必要ファイルがインストールされました。
TensorFlow が動作するか確認します。
yamada@********:~$ conda activate
-c コマンド オプションを利用して起動します。
コマンド として渡された Python の文が実行されます。
コマンド の部分には改行で区切られた複数行を指定することもできます。
(base) yamada@********:~$ python3 -c
"import tensorflow as tf; hello = tf.constant('Hello World'); tf.print(hello)"

2023-05-06 11:12:18.765364:
I tensorflow/core/platform/cpu_feature_guard.cc:193]
This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)
to use the following CPU instructions in performance-critical operations:  SSE4.1 SSE4.2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-05-06 11:12:18.767899:
I tensorflow/core/common_runtime/process_util.cc:146]
Creating new thread pool with default inter op setting: 2. Tune
using inter_op_parallelism_threads for best performance.
Hello World

info 付きの実行結果が表示されました。
和訳すると
2023-05-06 11:12:18.765364:
I tensorflow/core/platform/cpu_feature_guard.cc:193]
この TensorFlow バイナリは oneAPI Deep Neural Network Library (oneDNN) で最適化され、 パフォーマンスが重要な操作で次の CPU 命令を使用します。
SSE4.1 SSE4.2
他の操作でそれらを有効にするには、適切なコンパイラフラグを使用して TensorFlow を再構築します。
2023-05-06 11:12:18.767899:
I tensorflow/core/common_runtime/process_util.cc:146]
デフォルトの相互運用設定で新しいスレッド プールを作成しています:
2. 最高のパフォーマンスを得るために inter_op_parallelism_threads を使用して調整します。

この info を見ると tensorflow の CPU 命令は AVX ではなく SSE4.1 SSE4.2 を使用していることがわかります。
inter_op_parallelism_threads が何なのかは私にはわかりません。

TensorFlow 動作確認Ⅱ

TensorFlow が動作するか確認します。
base 環境が無効の状態で確認にします。
(base) yasuhiro@yasuhiro-UB-VB:~$ conda deactivate
yamada@********:~$ python3 -c
"import tensorflow as tf; hello = tf.constant('Hello World'); tf.print(hello)"
結果
Illegal instruction (コアダンプ)
となります。
ルート領域の python3 の tensorflow が AVX 命令を使用したからです。
/home/yamada/miniconda3/bin から導入される python3 の tensorflow は AVX 命令を使用していないので、 この tensorflow を使用するよう指示します。
yamada@********:~$
miniconda3/bin/python3 -c
"import tensorflow as tf; hello = tf.constant('Hello World'); tf.print(hello)"
base 環境が無効でも有効状態と同じ結果を得ることができます。

.py ファイルで tensorflow 動作確認

base 環境が有効の状況で
(base) yamada@********:~$ which python3
として python3 がインスト-ルされているディレクトリ-を見つけておきます。
/home/yamada/miniconda3/bin/python3
に python はインスト-ルされています。
簡単な Python3 tensorflow ファイル tensorflow_test_cnd.py を作成します。
ただ単に、'Hello World'と表示するだけです。
自分の PC Windows で以下の内容の Python ファイルを作成します。
このファイル作成に当たっては
さくら VPS RNN tensorflow 動作確認
が参考になります。
INFO メッセージが出ないようにできます。
環境変数の TF_CPP_MIN_LOG_LEVEL を設定すれば出力されるメッセージを調節できます。
設定値は
0:全てのメッセージが出力される(デフォルト)
1:INFO メッセージが出ない
2:INFO と WARNING が出ない
3:INFO と WARNING と ERROR が出ない
今回は1を設定します。
最初の行に
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='1'
を追加します。

  
# !/miniconda3/bin/python3
# -*- 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
hello = tf.constant('Hello World')
tf.print(hello)
# miniconda3/bin/python3 public_html/tensorflow_test_cnd.py

作成できたらファイル名は適当に tensorflow_test_cnd.py とします。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
この tensorflow_test.py を自分の PC Windows フォルダ
c:\vb_public_html に保存します。
このファイルフォルダはユ-ザ-ディレクトリ
/home/yamada/public_html
にリンクしています。
私の場合、VirtualBox に Ubuntu を構築しているからです。
理解に苦しむ方は ユ-ザ-ごとの公開ディレクトリを用意する
を読んでください。
そして
/home/yamada/public_html/
のなかにある、tensorflow_test_cnd.py の パミッションを 実行可能 705 にします。
$ cd public_html
$ sudo chmod 705 tensorflow_test_cnd.py
端末画面で
yamada@********:~$ miniconda3/bin/python3 public_html/tensorflow_test_cnd.py
または base 環境を有効にして
(base) yamada@********:~$ python3 public_html/tensorflow_test_cnd.py
とすれば、
Hello WORLD
と表示されるはずです。
最初は 10秒ぐらい時間がかかります。

ここまでで Illegal instruction(コアダンプ)問題は回避することができました。
引き続き、Illegal instruction (コアダンプ) 問題を整理します。


  • Illegal instruction (コアダンプ) 問題の整理 に進む
  • Illegal instruction (コアダンプ)回避続編 に戻る
  • 仮想環境は必要? に戻る
  • 70VPS に戻る