【目的】
Jetson NanoでTensorflowを使えるようにします。
【内容】
下記記事の続きです。
【Jetson Nano はじめました】
Jetson NanoできちんとGPUが利用できるようにTensorflowのセットアップを行います。
【手順】
基本的には以下の手順を踏襲します。
【nvidia - DEEP LEARNING FRAMEWORKS DOCUMENTATION】
大雑把に分けると以下の手順になります。
- 必要なライブラリの追加
- pip3のインストールとアップデート
- Python3ライブラリの追加
- Tensorflowのインストール
- インストール確認
【0. システムアップデート】
作業を行う前に、下記コマンドでシステムのアップデートを行っておきましょう。
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade # <- 必要に応じて
【1. 必要なライブラリの追加】
以下のコマンドを実行して、ライブラリを追加します。
sudo apt install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev
【2. pip3のインストールとアップデート】
以下のコマンドを実行して、pip3のインストールとアップデートを行います。
sudo apt install python3-pip
sudo pip3 install -U pip
【3. Python3ライブラリの追加】
以下のコマンドを実行して、Python3のライブラリをインストールします。
hdf5(h5py)のビルドに時間がかかるので、動きが止まってもしばらく待ちましょう。
sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker six mock requests gast h5py astor termcolor protobuf keras-applications keras-preprocessing wrapt google-pasta
【4. Tensorflowのインストール】
本手順の肝になります。
通常TensorflowのGPUをインストールする場合は pip3 install tensorflow-gpu
としますが、ここでは少し異なる手順を行います。
Jetson用に最適化されたtensorflowをインストールするために、以下のコマンドのようにパッケージの参照先を指定してインストール操作を行います。
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu
【5. インストール確認】
下記コマンドを実行し、エラーが発生せず正常にバージョン番号が表示されればインストールは完了しています。
python3
>>> import tensorflow
>>> tensorflow.__version__
'1.13.1'
python3 -c "from tensorflow.python.client import device_lib;print(device_lib.list_local_devices())"
2019-07-29 13:14:58.190442: W tensorflow/core/platform/profile_utils/cpu_utils.cc:98] Failed to find bogomips in /proc/cpuinfo; cannot determine CPU frequency
2019-07-29 13:14:58.235141: I tensorflow/compiler/xla/service/service.cc:161] XLA service 0xb3cd0c0 executing computations on platform Host. Devices:
2019-07-29 13:14:58.235246: I tensorflow/compiler/xla/service/service.cc:168] StreamExecutor device (0): <undefined>, <undefined>
2019-07-29 13:14:58.612721: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:965] ARM64 does not support NUMA - returning NUMA node zero
2019-07-29 13:14:58.613451: I tensorflow/compiler/xla/service/service.cc:161] XLA service 0x937e7c0 executing computations on platform CUDA. Devices:
2019-07-29 13:14:58.613523: I tensorflow/compiler/xla/service/service.cc:168] StreamExecutor device (0): NVIDIA Tegra X1, Compute Capability 5.3
2019-07-29 13:14:58.635780: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties:
name: NVIDIA Tegra X1 major: 5 minor: 3 memoryClockRate(GHz): 0.9216
pciBusID: 0000:00:00.0
totalMemory: 3.87GiB freeMemory: 400.53MiB
2019-07-29 13:14:58.635908: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0
2019-07-29 13:15:11.521625: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-07-29 13:15:11.566313: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0
2019-07-29 13:15:11.566375: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0: N
2019-07-29 13:15:11.617237: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/device:GPU:0 with 182 MB memory) -> physical GPU (device: 0, name: NVIDIA Tegra X1, pci bus id: 0000:00:00.0, compute capability: 5.3)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 5129210299603277623
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 5782956840367099111
physical_device_desc: "device: XLA_CPU device"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 16654519161776921911
physical_device_desc: "device: XLA_GPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 191168512
locality {
bus_id: 1
links {
}
}
incarnation: 11282338340052839306
physical_device_desc: "device: 0, name: NVIDIA Tegra X1, pci bus id: 0000:00:00.0, compute capability: 5.3"
]
GPUもきちんと認識しているようです。
以上でTensorflowを使えるようになりました。