はじめに
この記事は「Jetson NanoでDockerを動かす(後編)」でJetson Nanoにデフォルトで含まれているdockerでGPUにアクセスできることを確認できたので実際に何か動かしてみる。ここではResNet50
を使って画像を識別する。
準備
Dockerfile等はgithubに置いた。
https://github.com/yamamo-to/jetson_nano/tree/master/docker_example
使い方は下記の通り。
git clone https://github.com/yamamo-to/jetson_nano.git
cd jetson_nano/docker_example
./build.sh
./run.sh
build.shの実行でイメージを作成する。1時間程度掛かる。
またrun.shでコンテナを作成する。
サンプルの実行
コンテナが実行された後、必要なライブラリをインストールしてサンプルを実行する。
pip3 install pillow
python3 scripts/resnet50_keras.py data/boss.jpg
結果
以下に実行結果を貼る。ResNet50がコンテナ内から正しく実行されていることが分かる1。
問題点
以下に記載されている問題点は「[Jetson NanoでDockerを動かす(解決編)](https://qiita.com/yamamo-to/items/ec8aa4a1fe8263b53280)」で解決済み。前の画像では分かりにくいが、CUDAが利用可能なデバイスが見つからないと表示されている。TensorFlowは動いたけれどもCUDAは使われていないのだろうか。
failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
考えられることの一つは/procを参照していないことだろうか。追って調査する予定だが、そろそろ環境を手間なく分けるためのDockerの導入が、Docker+GPUに関する環境構築そのものが面倒になってきた。
まとめ
Jetson NanoでDockerを立ち上げ、TensorFlowを使ってResNet50による画像識別を行った。GPUは使われていたようだが、CUDAデバイスが見つからないなど課題点が残る。
-
「Jetson NanoでDockerを動かす(解決編)」でも触れているが、これは正しく実行されていない。 ↩