【目次】
【サイト内の主な Ubuntu 関連ページ】
先人に感謝.
このWebページに記載しているプログラムは https://github.com/tensorflow/tensorflow#download-and-setup をもとに作成
【関連する外部ページ】
UbuntuUbuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
GPU は,グラフィックス・プロセッシング・ユニット(Graphics Processing Unit)の略である.現在は,3次元のビデオゲーム,さまざまな計算,ディープラーニングの高速な並列処理などに用いられている.
NVIDIA ドライバは,NVIDIA 社製の GPU を動作させるのに必要なドライバである.次の NVIDIA の公式サイトからダウンロードできる.ダウンロードのときは,使用しているオペレーティングシステムとGPUに適したものを選ぶこと.
【関連する外部ページ】
NVIDIA ドライバのダウンロードの公式ページ: https://www.nvidia.co.jp/Download/index.aspx?lang=jp
【インストール手順の詳細説明】
NVIDIA CUDA ツールキット は,NVIDIA社が提供する GPU 用のツールキットである.GPU を用いた演算のプログラム作成や動作のための各種機能を備えている.ディープラーニングでも利用されている.
【サイト内の関連ページ】
【関連する外部ページ】
【NVIDIA CUDA ツールキットの動作に必要なもの】
Windows で,NVIDIA グラフィックス・カードの種類を調べたいときは, hwinfo (URL: https://www.hwinfo.com/index.html) を使って調べることができる.
【Windows でインストールするときの注意点】
Windows のユーザ名が日本語のとき,nvcc がうまく動作しないエラーを回避するためである.
ユーザ環境変数 TEMP に「C:\TEMP」を設定するために, コマンドプロンプトで,次のコマンドを実行する.
mkdir C:\TEMP powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")"
NVIDIA cuDNN は, NVIDIA CUDA ツールキット上で動作するディープラーニング・ライブラリである. 畳み込みニューラルネットワークや リカレントニューラルネットワークなど,さまざまなディープラーニングで利用されている.
Windows で,NVIDIA cuDNN の利用時に 「Could not locate zlibwapi.dll. Please make sure it is in your library path!」と表示されるときは, ZLIB DLL をインストールすること.
【関連する外部ページ】
【NVIDIA cuDNN の動作に必要なもの】
最新のNVIDIA CUDA ツールキットでは動かないということもあるので注意.
NVIDIA Developer Program の公式ページ: https://developer.nvidia.com/developer-program
そのことについて,より詳しい説明は: 別ページ »で説明している.
NVIDIA CUDA ツールキットのアーカイブの公式ページ: https://developer.nvidia.com/cuda-toolkit-archive
NVIDIA cuDNN のページ: https://developer.nvidia.com/cudnn
必ず,使用する NVIDIA CUDA ツールキットにあう NVIDIA cuDNN を使うこと.
NVIDIA グラフィックス・カードがある場合に限り, あとで,NVIDIA CUDA ツールキット,NVIDIA cuDNN のインストールを行う.
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 cd /tmp sudo apt --purge remove -y nvidia-* sudo apt --purge remove -y cuda-* sudo apt autoremove -y
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install linux-headers-$(uname -r)
「sudo ubuntu-drivers autoinstall」を用いて NVIDIA ドライバをインストールする.
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y 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 で NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8 のインストールを行う.
NVIDIA CUDA ツールキット は,NVIDIA社が提供する GPU 用のツールキットである.GPU を用いた演算のプログラム作成や動作のための各種機能を備えている.ディープラーニングでも利用されている. NVIDIA 社のグラフィックス・カードが持つ GPU の機能を使うとき,NVIDIA CUDA ツールキット を利用することができる.
【関連する外部ページ】
端末で,次のコマンドを実行する.
uname -m lsb_release -sc cat /etc/*release
Ubuntu のバージョンが表示されるので確認する.
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/
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ で確認.
「
複数あるときは,新しい方を確認.
「cuda-ubuntu...
使用したいバージョンのものを確認.
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ で確認.
「
複数あるときは,新しい方を確認.
「cuda-ubuntu...
https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ で確認.
Ubuntu 18.04 の場合は cuda-repo パッケージをインストールする.
スクロールして「cuda-repo・・・」を探す
このとき,いま,確認したファイル名を指定すること.
端末で,次のように操作する.
次の操作により,NVIDIA CUDA のパッケージレポジトリが Ubuntu システムに追加される.
sudo wget -O /etc/apt/preferences.d/cuda-repository-pin-600 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
次の操作により,NVIDIA CUDA のパッケージレポジトリが Ubuntu システムに追加される.
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/ /"
NVIDIA CUDA パッケージレポジトリを,Ubuntu システムに追加 (いま確認したファイル名のファイルを追加).
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
apt-cache search cuda-11
次の操作により,NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8 がインストールされる.
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install cuda-11-8 sudo update-initramfs -u sudo /sbin/shutdown -r now
端末で,次のコマンドを実行する.
export CUDA_PATH=/usr/local/cuda-11.8 echo 'export CUDA_PATH=/usr/local/cuda-11.8' >> ${HOME}/.bashrc export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:${LD_LIBRARY_PATH} echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:${LD_LIBRARY_PATH}' >> ${HOME}/.bashrc export PATH=/usr/local/cuda-11.8/bin:${PATH} echo 'export PATH=/usr/local/cuda-11.8/bin:${PATH}' >> ${HOME}/.bashrc
端末で,次のコマンドを実行する.
cat /usr/local/cuda-11.8/version.json
apt-cache search cudnn
sudo apt -y update sudo apt -y install libcudnn8 libcudnn8-dev
dpkg -l | grep cudnn
NVIDIA 機械学習パッケージレポジトリからダウンロードして,インストールするという手順を説明する.
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
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 ・・・」を探す
端末で,次のように操作する. このとき,確認したファイル名を指定すること.
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 libcudnn8 libcudnn8-dev
dpkg -l | grep cuda
nvccの動作確認のため, https://devblogs.nvidia.com/easy-introduction-cuda-c-and-c/に記載のソースコードを使用.
nano hello.cu
ファイル hello.cu ができる.
「nvcc hello.cu」で a.out というファイルができる. 「Max error: 0.000000」と表示されればOK.
del a.exe nvcc hello.cu
./a.out
Python のインストールは行わない(Ubuntu のシステム Python を用いる.)
Python, pip, Python 開発環境,Python コンソールのコマンドでの起動のまとめ.
Ubuntu のシステム Python を用いるとき, python, pip, Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder は,次のコマンドで起動できる.
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential 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 jupyter jupyter-console jupytext nteract_on_jupyter
python3 --version
まず,numpy, matplotlib のインストールのため, 端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install python3-numpy python3-matplotlib
端末で,次のコマンドを実行する. Jupyter Qt Console が開けば OK.
jupyter qtconsole
import numpy as np %matplotlib inline import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') # Suppress Matplotlib warnings x = np.linspace(0, 6, 100) plt.style.use('default') plt.plot(x, np.sin(x))
端末で,次のコマンドを実行する. ntetact が開けば OK.
jupyter nteract
そのために「Start a new notebook」の下の「Python」をクリック,次のプログラムを入れ実行.
import numpy as np %matplotlib inline import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') # Suppress Matplotlib warnings x = np.linspace(0, 6, 100) plt.style.use('default') plt.plot(x, np.sin(x))
jupyter notebook --generate-config
"jupytext": {"formats": "ipynb,py"}
インストールするには, 端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install python3-numpy python3-sklearn
numpy の動作確認のためPython プログラムの実行
Ubuntu では, Python プログラムを動かすために, 「python3」コマンドを使う.
Python プログラムを動かすために, python3のコマンドを使う. Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である. Python 開発環境の説明: 別ページ »にまとめ
python3 import numpy as np print(np.sin(0)) exit()
Python プログラムの実行
Ubuntu では, Python プログラムを動かすために, 「python3」コマンドを使う.
Python プログラムを動かすために, python3のコマンドを使う. Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である. 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)
実行結果の例
設定の要点
環境変数 TF_FORCE_GPU_ALLOW_GROWTH の設定: true
トラブルの可能性を減らすために,次の操作でアンインストールを行っておく.
sudo apt -y remove python3-keras sudo pip3 uninstall -y tensorflow tensorflow-cpu tensorflow-gpu tensorflow-intel tensorflow-text tensorflow-estimator 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 libopencv-contrib-dev opencv-data sudo pip3 install -U tensorflow tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer sudo pip3 install git+https://github.com/tensorflow/docs sudo pip3 install git+https://github.com/tensorflow/examples.git sudo pip3 install git+https://www.github.com/keras-team/keras-contrib.git
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python3 -c "import tensorflow as tf; print( tf.__version__ )"
端末で,次のコマンドを実行する.
python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
実行結果の中に,次のように「device_type: "GPU"」があれば,GPUが認識できている.エラーメッセージが出ていないことを確認しておくこと.
環境変数の名前 TF_FORCE_GPU_ALLOW_GROWTH 値 true
端末で,次のコマンドを実行する.
export TF_FORCE_GPU_ALLOW_GROWTH=true echo 'export TF_FORCE_GPU_ALLOW_GROWTH=true' >> ${HOME}/.bashrc
sudo apt -y update sudo apt -y install python3-h5py python3-pillow
10.png のようなファイル名で保存しておく
cd <画像を置いたディレクトリ> python3
次のプログラムをコピー&ペースト
Kerasのサイトで公開されているものを少し書き換えて使用。
「'10.png'」のところは,実際に使用する画像ファイル名に書き換えること.
Python プログラムの実行
Ubuntu では, Python プログラムを動かすために, 「python3」コマンドを使う.
Python プログラムを動かすために, python3のコマンドを使う. Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である. Python 開発環境の説明: 別ページ »にまとめ
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)
python3 の終了は「exit()」
次のプログラムをコピー&ペースト
Kerasのサイトで公開されているものを少し書き換えて使用。
「'10.png'」のところは,実際に使用する画像ファイル名に書き換えること.
Python プログラムの実行
Ubuntu では, Python プログラムを動かすために, 「python3」コマンドを使う.
Python プログラムを動かすために, python3のコマンドを使う. Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である. Python 開発環境の説明: 別ページ »にまとめ
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]))
python3 の終了は「exit()」
TensorFlow がインストールできたかを確認したい.
Python プログラムを実行する
結果として 「b'Hello, TensorFlow!'」のように表示されるので確認する.
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') print(hello)
結果として 「42」のように表示されるので確認する.
「tf.add(a, b)」と「a + b」は,同じ結果になる
import tensorflow as tf a = tf.constant(10) b = tf.constant(32) print( tf.add(a, b) ) print( a + b )
結果として 「[[ 12.]]」のように表示されるので確認する.
import tensorflow as tf matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) print( tf.matmul(matrix1, matrix2) )