Jetson NanoでAWS IoT Greengrassを使う エッジで機械学習編その1

記事タイトルとURLをコピーする

さてこれまではほとんどAWS IoTの話でしたが、Jetson Nanoを利用し、エッジで機械学習 × IoTみたないことをやっていきます。

弊社はクラウドの会社なのでこういったデバイスを扱うことはほとんどないのですが、今回はPytorchのMNISTのサンプルを動かしてJetson Nanoの性能を見てみます。Pytorchなんで正確には「エッジでディープラーニング」というべきでしょうか。

なので今回はJetson Nanoの話です。

1. jtopコマンドのインストール

jtopはJetson Nanoの負荷状況を表示するコマンドです。まずはこれをpipでインストールしておきます。 pipがインストールされてなければ先にそちらをインストールしてください。

 sudo -H pip install jetson-stats

2. サンプルのクローン

サンプルとして動かすノートブックをGitHubへあげておきました。

これをクローンします。jupyterがインストールされてなければ先にそちらをインストールしてください。

git clone https://github.com/KSMN455/pytorch-gpu-sample.git

こちらのサンプルはPytorchのMNISTのサンプルをもとに記述しています。

3. GPU vs. CPU

こちらのサンプルを使い、GPUで学習を実施した場合とCPUで学習を実施した場合で負荷と速度を比較したいと思います。

まあ結果は予想できますが。。。

ノートブックを上から順に実施してください。

3-1. GPUの場合

まずはGPUを使って学習。

train("cuda")

ワタシの環境では時間はこんな感じでした。

Pprocessing Time(sec): 951.2301895618439

だいたい16分くらい。

ちなみに学習中のjtopの表示はこんな感じ。GPU使用率が100%あたりで張り付いているのがわかります。

この後、温度が60℃以上まであがったので、うちわであおぎました。。。ファンを取り付けてないので人力冷却です。。。

3-2. CPUの場合

まずはCPUを使って学習。

train("cpu")

ワタシの環境では時間はこんな感じでした。

Pprocessing Time(sec): 9837.17104125022

遅ぇ。。。GPUの場合の約10倍で、2時間以上かかってます。。。

ちなみに学習中のjtopの表示はこんな感じ。各コアの使用率が100%あたりで張り付いているのがわかります。

こちらを実行中も温度が上がってきたのでうちわであおぎました。。。

4. まとめ

当たり前ですがGPUを利用した学習の方が圧倒的に早いです。MNISTの手書き文字くらいであればJetson Nanoでもやれてしまいますが、大規模なものだとクラウドで学習→エッジへデプロイとするのが良いかと思います。

次回はモデルの予測結果をデバイス-クラウド間・デバイス-デバイス間で連携する方法を検証したいと思います。