Ubuntu 22.04 Tensorflow GPU Install.

Ubuntu 22.04 Tensorflow GPU Install.

Tensoflow 2.16 から、Keras 3.0 が標準になると言う記事をみたので、試してみた。

PC環境:
Ubuntu Mate 22.04
GPU: GeForce GTX 1070
Python 3.10
virtualenv

Pip インストールが、簡単なので、それを試す。
pip を使用して TensorFlow をインストールする

2.GPUのセットアップ
NVIDIA GPU ドライバー をインストール。

GeForce GTX 1070 - > 550.78
が指定されるが、
おんちゃんは、525(cuda) を入れてみた。
$ sudo apt install nvidia-driver-525
注) 当初、530 を試したが、Keras3 のサンプルで実行できなかったので、525 にしました。

3. TensorFlow をインストールする
シンプルに、下記でOK。
$ activate ~/kivy_env/bin/activate
(kivy_env) $ python -m pip install tensorflow[and-cuda]

tensorflow 2.16.1
みたい。
注) 最終的に、ステム上にやはり、CUDA Toolkit(CUDA) と、cuDNN を別途インストールする事になるので、
(kivy_env) $ python -m pip install tensorflow
で良いかも。

$ python -m pip list
cuda 関連をチェックする。

cuda バージョンのチェック
(kivy_env) $ python
>>> import tensorflow as tf
2024-05-27 13:39:31.071696: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-05-27 13:39:31.800811: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
>>> tf.sysconfig.get_build_info()
OrderedDict([('cpu_compiler', '/usr/lib/llvm-17/bin/clang'), ('cuda_compute_capabilities', ['sm_50', 'sm_60', 'sm_70', 'sm_80', 'compute_90']), ('cuda_version', '12.3'), ('cudnn_version', '8'), ('is_cuda_build', True), ('is_rocm_build', False), ('is_tensorrt_build', True)])

'cuda_version', '12.3' が、TensorRT と一致しないみたい。

tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38 は、tensorrt の ヘッダーを見に行っているきがする。
python -c "import tensorflow.compiler as tf_cc;print(tf_cc.tf2tensorrt._pywrap_py_utils.get_linked_tensorrt_version())"

(8, 6, 1) --> tensorrt-dev version?

tensorrt の pip 版は、
$ python -m pip install tensorrt==8.6.1
で入るが、これには、Header が入っていないとのこと。
これを解決するには、tensorrt-dev パッケージ版をシステムにいれる必要があるが、
Tensor RT 8.6 GA のローカルインストール版をダウンロードして、インストールする。
TensorRT
NVIDIA TensorRT 8.x Download ページ へ入って
TensorRT 8.6 GA for x86_64 Architecture を選んで、
TensorRT 8.6 GA for Ubuntu 22.04 向け
TensorRT 8.6 GA for Ubuntu 22.04 and CUDA 12.0 and 12.1 DEB local repo Package
は、 CUDA 12.3 向けが無い、 12.0 , 12.1 向けのみか?

このジレンマは、どうすべきか?

4. TensorRT 8.6.1のソースビルドはあるのか?。
nvidia-tensorrt-8x-download
tar ファイルを使うみたい。
TensorRT 8.6 GA for Linux x86_64 and CUDA 12.0 and 12.1 TAR Package

TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz ファイルを、~/usr/local/share で展開。
$ cd ~/usr/local/share
$ tar -zxvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-12.0.tar.gz

~/.bashrc に記述。
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/home/nishi/usr/local/share/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH

2) CUDA Toolkit 12.3 のインストール。
google で、
CUDA Toolkit 12.3 download で検索すると出てくる。

注) Driver Installer も必要か?

3) cuDNN v8.9.6 for CUDA 12.x のインストール
こちらも、google で検索する。
cudnn-archive
Download cuDNN v8.9.6 for CUDA 12.x を選ぶ。

cudnn-local-repo-ubuntu2204-8.9.6.50 を localインストールしたら、
$ sudo apt update
$ sudo apt install libcudnn8 libcudnn8-dev
libcudnn8、libcudnn8-dev がインストールできる。


注) 当初、cuDNN v8.8.1 for CUDA 12.x を試したが、こちらは、NG。
Tensorflow 2.16.1 が、cuDNN v8.9.6 でビルドされているみたい。


4) CUDA Compiuler のインストール? --> これは、不要。
$ sudo apt install nvidia-cuda-toolkit --> 不要。

再度チェック。
$ source kivy_env/bin/activate
(kivy_env) $ python


OK みたい。

5. テスト。
(kivy_env) $ python
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
.....
>>> print(tf.reduce_sum(tf.random.normal([1000, 1000])))


ちょっと問題ありなのか?

下記件のようだが?
https://github.com/torvalds/linux/blob/v6.0/Documentation/ABI/testing/sysfs-bus-pci#L344-L355

This file contains the NUMA node to which the PCI device is
attached, or -1 if the node is unknown. The initial value
comes from an ACPI _PXM method or a similar firmware
source. If that is missing or incorrect, this file can be
written to override the node. In that case, please report
a firmware bug to the system vendor. Writing to this file
taints the kernel with TAINT_FIRMWARE_WORKAROUND, which
reduces the supportability of your system.

@zrruziev zrruziev/NUMA node problem.md
に解決方法がありました。

とりあえず、設定 shell script を書く。
~/usr/local/bin/numa_node_set.sh


$ chmod 755 ~/usr/local/bin/numa_node_set.sh

再起動させて、テストする。
$ sudo ~/usr/local/bin/numa_node_set.sh


OKぞね。やれやれ。

後日、自動起動にしないといかんぞね。
下記ページが参考になるか?
Ubuntuで起動時に自動でShellScriptを実行する方法

以前、自分でも作ったので、試しに作ってみる。
~/usr/local/share/numa_node_set/numa_node_set.service

上記ファイルを、
/lib/systemd/system/ へコピーする。
$ sudo cp numa_node_set.service /lib/systemd/system/
$ sudo systemctl enable numa_node_set
$ sudo systemctl start numa_node_set

止めるのは、
$ sudo systemctl disable numa_node_set

Keras.io のサンプルで試したが、OK だったので、とりあえずは、現状で様子見ぞね。

keras.io/examples/audio/transformer_asr

ソースサンプルは、
transformer_asr.py

先頭に下記、追加を入れれば、動きます。


参照。
virtualenv のインストール
virtualenvの使い方

このブログ記事について

このページは、おんちゃんが2024年5月27日 13:19に書いたブログ記事です。

ひとつ前のブログ記事は「OAK-D-Lite を ROS2 Humble で、再度試してみた。」です。

次のブログ記事は「Keras V3 Automatic Speech Recognition with Transformer を試す。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ