【目次】
【サイト内の関連ページ】
先人に感謝.
このWebページに記載しているプログラムは https://github.com/tensorflow/tensorflow#download-and-setup をもとに作成
参考 Web ページ
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行.
Ubuntu のインストールは別ページで説明している
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
CUDA 対応の GPU であるかを確認のため, 端末で,次のコマンドを実行.
(表示が空になるときは,NVIDIAのグラフィックス・カードが無い可能性がある).
lspci | grep -i nvidia | grep VGA
端末で,次のコマンドを実行.
echo 'blacklist nouveau' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf echo 'options nouveau modeset=0' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf cat /etc/modprobe.d/blacklist-nouveau.conf sudo update-initramfs -u
NVIDIA グラフィックスドライバのインストール,NVIDIA CUDA ツールキットがインストールされていた場合には,アンイントールする. 端末で,次のコマンドを実行.
dpkg -l | grep cuda sudo apt --purge remove nvidia-* sudo apt --purge remove cuda-* sudo apt autoremove
端末で,次のコマンドを実行.
sudo apt -y update sudo apt -y install linux-headers-$(uname -r)
Ubuntu 20.04 で実際に試したところ「sudo ubuntu-drivers autoinstall」を用いて NVIDIA グラフィックスドライバをインストールするのが最も安定しているようである.
端末で,次のコマンドを実行.
sudo apt -y update sudo apt upgrade sudo apt dist-upgrade ubuntu-drivers devices sudo ubuntu-drivers autoinstall sudo update-initramfs -u
グラフィックスドライバが入れ変わったので,Ubuntu システムを再起動する.
端末で,次のコマンドを実行.
sudo /sbin/shutdown -r now
システムの再起動後,端末で,次のコマンドを実行し,ドライバ等を確認する
先頭の「Driver Version」のところに,ドライバのバージョンが表示される.
nvidia-smi
Ubuntu 20.04 で NVIDIA グラフィックスドライバ,NVIDIA CUDA ツールキット 11.4 のインストールを行う. (他の Ubuntu,NVIDIA CUDA ツールキットのバージョンでもおおむね同様の手順になる.) CUDA は,NVIDIA社が提供している GPU 用のプラットフォームである.
NVIDIA グラフィックス・カードがある場合に限り, インストールを行うこと.
TensorFlow 2.7 を動かしたいので,ここでは,私が動作確認できた NVIDIA CUDA ツールキット 11.5 をインストールする
端末で,次のコマンドを実行.
uname -m lsb_release -sc cat /etc/*release
次のようにUbuntu のバージョンが表示されるので確認する.
VERSION_ID の行などで確認できる.
NVIDIA CUDA パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/cuda/repos/
※ Linux の種類やバージョンごとに,ファイル名が違うので確認する.NVIDIA CUDA パッケージレポジトリでは, Ubuntu 以外の Linux についてのファイルも公開されている : https://developer.download.nvidia.com/compute/cuda/repos/
Ubuntu 20.04 の場合は,https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ で確認.
「
「cuda-ubuntu...
このとき,いま,確認したファイル名を指定すること.
端末で,次のように操作する.
Ubuntu 20.04 の場合は,次の操作により,NVIDIA CUDA のパッケージレポジトリが Ubuntu システムに追加される.
Ubuntu 18.04 の場合は,https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ で確認.
Ubuntu 18.04 の場合は cuda-repo パッケージをインストールする.
スクロールして「cuda-repo・・・」を探す
そして,NVIDIA CUDA パッケージレポジトリを,Ubuntu システムに追加
(いま確認したファイル名のファイルを追加).
Ubuntu 20.04 の場合は,次の操作により,NVIDIA グラフィックスドライバ,NVIDIA CUDA ツールキット 11.5 がインストールされる.
端末で,次のコマンドを実行.
端末で,次のコマンドを実行.
端末で,次のコマンドを実行.
NVIDIA グラフィックス・カードがある場合に限り,
インストールを行うこと.
NVIDIA 機械学習パッケージレポジトリからダウンロードして,インストールするという手順を説明する.
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
Ubuntu 20.04 の場合は,https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/ で確認.
スクロールして「nvidia-machine-learning-repo ・・・」を探す
端末で,次のように操作する.
このとき,確認したファイル名を指定すること.
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
Ubuntu 18.04 の場合は,https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/ で確認.
スクロールして「nvidia-machine-learning-repo ・・・」を探す
端末で,次のように操作する.
このとき,確認したファイル名を指定すること.
Python, pip, Python 開発環境,Python コンソールのコマンドでの起動のまとめ.
Ubuntu のシステム Python を用いるとき,
python, pip, Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, spyder は,次のコマンドで起動できる.
インストールするには,
端末で,次のコマンドを実行.
インストールするには,
端末で,次のコマンドを実行.
インストールするには,
端末で,次のコマンドを実行.
numpy の動作確認
実行結果の例
設定の要点
環境変数 TF_FORCE_GPU_ALLOW_GROWTH の設定: true
トラブルの可能性を減らすために,次の操作でアンインストールを行っておく.
端末で,次のコマンドを実行.
インストールするには,
端末で,次のコマンドを実行.
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
実行結果の中に,次のように「device_type: "GPU"」があれば,GPUが認識できている.エラーメッセージが出ていないことを確認しておくこと.
端末で,次のコマンドを実行.
10.png のようなファイル名で保存しておく
次のプログラムをコピー&ペースト
Kerasのサイトで公開されているものを少し書き換えて使用。
「'10.png'」のところは,実際に使用する画像ファイル名に書き換えること.
python3 の終了は「exit()」
次のプログラムをコピー&ペースト
Kerasのサイトで公開されているものを少し書き換えて使用。
「'10.png'」のところは,実際に使用する画像ファイル名に書き換えること.
python3 の終了は「exit()」
TensorFlow がインストールできたかを確認したい.
Python プログラムを動かす.
Python プログラムを動かすために,
Windows では「python」,
Ubuntu では「python3」などのコマンドを使う.
あるいは,
開発環境や Python コンソール(Jupyter Qt Console,Spyder,PyCharm,PyScripter など)の利用も便利である.
あるいは,オンラインで動くGoogle Colaboratory のノートブックの利用も,場合によっては便利である.
結果として
「b'Hello, TensorFlow!'」のように表示されるので確認する.
結果として
「42」のように表示されるので確認する.
「tf.add(a, b)」と「a + b」は,同じ結果になる
結果として
「[[ 12.]]」のように表示されるので確認する.
sudo wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
cd /tmp
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt -y update
sudo apt -y update
sudo apt -y install cuda-11-5
export CUDA_PATH=/usr/local/cuda-11.5
echo 'export CUDA_PATH=/usr/local/cuda-11.5' >> ${HOME}/.bashrc
export LD_LIBRARY_PATH=/usr/local/cuda-11.5/lib64:${LD_LIBRARY_PATH}
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.5/lib64:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc
export PATH=/usr/local/cuda-11.5/bin:${PATH}
echo 'export PATH=/usr/local/cuda-11.5/bin:${PATH}' >> ${HOME}/.bashrc
cat /usr/local/cuda-11.5/version.json
(NVIDIA GPU を使うとき)NVIDIA cuDNN のインストール
Ubuntu 20.04 の場合
cd /tmp
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
sudo dpkg -i nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt -y update
apt-cache search cudnn
sudo apt -y update
sudo apt -y install libcudnn8 libcudnn8-dev
dpkg -l | grep cuda
Ubuntu 18.04 の場合
cd /tmp
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo dpkg -i nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt -y update
apt-cache search cudnn
sudo apt -y update
sudo apt -y install libcudnn7 libcudnn7-dev
dpkg -l | grep cuda
Python3 開発用ファイル,pip, setuptools, venv のインストール,Python 開発環境,Python コンソール(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, spyder)のインストール(Ubuntu 上)
Python3 開発用ファイル,pip, setuptools, venv のインストール
sudo apt -y update
sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv
Python 開発環境(JupyterLab, spyder, nteract)
sudo apt -y update
sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv
sudo pip3 uninstall ptyprocess sniffio terminado tornado jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder
sudo apt -y install jupyter jupyter-qtconsole spyder3
sudo apt -y install python3-ptyprocess python3-sniffio python3-terminado python3-tornado
sudo pip3 install -U jupyterlab nteract_on_jupyter
python3 --version
numpy, scikit-learn のインストール
sudo apt -y update
sudo apt -y install python3-numpy python3-sklearn
python3
import numpy as np
print(np.sin(0))
exit()
Python の数値演算等の性能確認
import time
import numpy
import numpy.linalg
import sklearn.decomposition
import sklearn.cluster
X = numpy.random.rand(2000, 2000)
Y = numpy.random.rand(2000, 2000)
# 行列の積
a = time.time(); Z = numpy.dot(X, Y); print(time.time() - a)
# 主成分分析
pca = sklearn.decomposition.PCA(n_components = 2)
a = time.time(); pca.fit(X); X_pca = pca.transform(X); print(time.time() - a)
# SVD
a = time.time(); U, S, V = numpy.linalg.svd(X); print(time.time() - a)
# k-means
a = time.time();
kmeans_model = sklearn.cluster.KMeans(n_clusters=10, random_state=10).fit(X)
labels = kmeans_model.labels_
print(time.time() - a)
TensorFlow 2.6,Keras,MatplotLib, Python 用 opencv-python のインストール(Ubuntu 上)
sudo apt -y remove python3-keras
sudo pip3 uninstall -y tensorflow tensorflow-cpu tensorflow-gpu tensorflow-text tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer
sudo pip3 uninstall -y six wheel astunparse tensorflow-estimator numpy keras-preprocessing absl-py wrapt gast flatbuffers grpcio opt-einsum protobuf termcolor typing-extensions google-pasta h5py tensorboard-plugin-wit markdown werkzeug requests-oauthlib rsa cachetools google-auth google-auth-oauthlib tensorboard tensorflow
sudo apt -y install python3-six python3-wheel python3-numpy python3-grpcio python3-protobuf python3-termcolor python3-typing-extensions python3-h5py python3-markdown python3-werkzeug python3-requests-oauthlib python3-rsa python3-cachetools python3-google-auth
sudo apt -y update
sudo apt -y install python3-numpy python3-pil python3-pydot python3-matplotlib
sudo apt -y install libopencv-dev libopencv-core-dev python3-opencv
sudo pip3 install -U tensorflow tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner
sudo pip3 install git+https://github.com/tensorflow/docs
sudo pip3 install git+https://github.com/tensorflow/examples.git
python3 -c "import tensorflow as tf; print( tf.__version__ )"
python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
環境変数の名前
TF_FORCE_GPU_ALLOW_GROWTH
値
true
export TF_FORCE_GPU_ALLOW_GROWTH=true
echo 'export TF_FORCE_GPU_ALLOW_GROWTH=true' >> ${HOME}/.bashrc
TensorFlow, Keras, VGG 16, InceptionV3, Imagenet による画像分類を試してみる
sudo apt -y update
sudo apt -y install python3-h5py python3-pillow
cd <画像を置いたディレクトリ>
python3
import h5py
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg16 import VGG16
from tensorflow.keras.applications.vgg16 import preprocess_input
import numpy as np
m = VGG16(weights='imagenet', include_top=False)
img_path = '10.png'
img = image.load_img(img_path, target_size=(299, 299))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
features = m.predict(x)
print(features)
import h5py
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.inception_v3 import preprocess_input, decode_predictions, InceptionV3
import numpy as np
m = InceptionV3(weights='imagenet')
img_path = '10.png'
img = image.load_img(img_path, target_size=(299, 299))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = m.predict(x)
print('Predicted:')
for p in decode_predictions(preds, top=5)[0]:
print("Score {}, Label {}".format(p[2], p[1]))
TensorFlow のプログラム例
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
print(hello)
import tensorflow as tf
a = tf.constant(10)
b = tf.constant(32)
print( tf.add(a, b) )
print( a + b )
import tensorflow as tf
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
print( tf.matmul(matrix1, matrix2) )