【jetson XAVIER NX】tensorflowでGPUを利用できる環境を構築

スポンサーリンク
TensorflowAIを作ってみる
この記事を読んで分かること
  • jetson XAVIER NXにtensorflowをインストールする方法
  • tensorflowのCPUとGPUの切り替え方法

 

以下環境で動作確認を行いました。

構築環境

  • jetson XAVIER NX
  • keras + tensorflow2.1
  • Vertualenv

 

jetson XAVIER NXtensorflowの環境を構築する手順は4ステップになります。

  1. 環境の確認
  2. 仮想環境の構築
  3. tensorflowのインストール
  4. GPUの動作確認

 

環境の確認

Jetpackのバージョンを確認

まずインストールしたOS(jetpack)を確認します。

sudo apt-cache show nvidia-jetpack

 

2020年9月1日時点で最新のバージョンとなっています。

#Package: nvidia-jetpack
Version: 4.4-b144
Architecture: arm64
Maintainer: NVIDIA Corporation

 

Python3のバージョンを確認

python3のバージョン確認コマンドを打ちます。

python3 --version

 

OSにデフォルトでインストールされていたバージョンが3.6.9でした。

Python 3.6.9

 

pythonの仮想環境の構築

pipのインストール

Virtualenvをインストールするためにpip3をaptでインストールします。

sudo apt install python3-pip

 

Virtualenv のインストール

pythonやtensorflowのバージョンを簡単に変えられるように、今回はVirtualenvの仮想環境上に構築します。

sudo pip3 install virtualenv

 

Virtualenvの環境構築

virtualenvでpythonの仮想環境を作成します。

virtualenv tf_env

 

tf_envは仮想環境名なので、任意の文字列を使ってください。

 

Virtualenv 仮想環境の有効化

virtualenvの環境を起動します。

source tf_env/bin/activate

 

tf_envは仮想環境名なので、先ほど作った環境名を使ってください。

 

tensorflowのインストール

nvidia公式の手順に則って実施していきます。
https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html

TensorFlowに必要なシステムパッケージをインストール

sudo apt-get update 
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran

 

pip3のインストールとアップグレード

sudo apt-get install python3-pip 
sudo pip3 install -U pip testresources setuptools

 

Pythonパッケージの依存関係をインストール

sudo pip3 install -U numpy==1.16.1 future==0.17.1 mock==3.0.5 h5py==2.9.0 keras_preprocessing==1.0.5 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11

 

TensorFlowのインストール

tensorflowのバージョン2.1.0を指定してインストールします。

pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow==2.1.0+nv20.04

 

 

JetPack 4.4と互換性のあるTensorFlowの最新バージョンをインストールするコマンドがありますが、2020/9/1時点ではエラーが出てインストールに失敗しました。
最新バージョンのインストールコマンド
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow

 

tensorflow動作確認

python3
>>>import tensorflow

エラーにならずにインポートできればOK

>>> tensorflow.__version__

バージョンの確認ができます。

 

GPUの動作確認

GPUの確認

pythonで以下のコードを実行すると認識できているデバイスが表示されます。

>>>from tensorflow.python.client import device_lib
>>>device_lib.list_local_devices()

GPUが認識されていることがわかりました。

incarnation: 8185341057002331750
physical_device_desc: “device: XLA_GPU device”
, name: “/device:GPU:0”
device_type: “GPU”
memory_limit: 1905582080
locality {
bus_id: 1
links {
}
}

 

mnistの実行

CPUとGPUそれぞれでmnistデータの学習を行ってみました。

import tensorflow as tf import os 

#GPUをオフにする場合 #os.environ["CUDA_VISIBLE_DEVICES"]="-1" 

#認識されているデバイスを確認 
from tensorflow.python.client import device_lib print(device_lib.list_local_devices()) 
# CPUでmnistを実行 
with tf.device('/cpu:0'): 
    mnist = tf.keras.datasets.mnist (x_train, y_train), 
    (x_test, y_test) = mnist.load_data() 
    x_train, x_test = x_train / 255.0, x_test / 255.0 
    model = tf.keras.models.Sequential([ 
    tf.keras.layers.Flatten(), 
    tf.keras.layers.Dense(512, activation=tf.nn.relu), 
    tf.keras.layers.Dropout(0.2), 
    tf.keras.layers.Dense(10,activation=tf.nn.softmax) 
    ]) 
    model.compile(optimizer='adam', 
    loss='sparse_categorical_crossentropy', 
    metrics=['accuracy']) 
    model.fit(x_train, y_train, batch_size=100, epochs=5) 
    model.evaluate(x_test, y_test) 
# GPUでmnistを実行 
with tf.device('/device:GPU:0'): 
    mnist = tf.keras.datasets.mnist (x_train, y_train), 
    (x_test, y_test) = mnist.load_data() 
    x_train, x_test = x_train / 255.0, x_test / 255.0 
    model = tf.keras.models.Sequential([ 
    tf.keras.layers.Flatten(), 
    tf.keras.layers.Dense(512, activation=tf.nn.relu), 
    tf.keras.layers.Dropout(0.2), 
    tf.keras.layers.Dense(10, activation=tf.nn.softmax) 
    ]) 
    model.compile(optimizer='adam', 
    loss='sparse_categorical_crossentropy', 
    metrics=['accuracy']) 
    model.fit(x_train, y_train, batch_size=100, epochs=5) 
    model.evaluate(x_test, y_test)

 

実行中にリソースを確認すると、それぞれの処理のタイミングでCPUとGPUの使用率が高くなることを確認できました。

ロボくん
ロボくん
tensorflow2.1ではデバイスを指定しないとデフォルトでGPU処理される仕様になっているよ。

以上でtensorflowのインストールと動作確認は完了になります。

まとめ

jetson XAVIER NXにtensorflowをインストールする方法を紹介しました。

GPUが本当に使えているかの動作確認もmnistを使った解析で確認することができたと思います。

公式のドキュメント通りにやっても失敗する部分があったので、気を付けて実施してみてください。

コメント

タイトルとURLをコピーしました