GoogleのColaboratoryをお借りしてこのテキストのコードとこのテキストのコードをやってみます。
ColaboratoryとJetson Nanoの実行速度を比較してみます(無謀ですが)
CPUのみで、フレームワークを使わずスクラッチから実装するパターン
左のペインを開きます
ファイルを選んで、ランタイムに接続します。
割り当て->接続->初期化
/contentが初期ディレクトリです。
必要なら新規にディレクトリーを作成して、対象のディレクトリーにファイルをアップロードします
新規にディレクトリを作るシェルコード
!mkdir src
ソースとデータのサンプルのnetwork2.pyとmnist_loader.pyを使います
実行はソースをアップロードした/content/srcで行うので移動
%cd /content/src
セルで以下を実行
1EpochにつきColabで10秒くらい、Jetsonだと47秒くらいでした。
ではGPUを使ってみます。Theanoフレームワークを使います。
新規のNotebook
ランタイムを選んで「ランタイムのタイプを変更」
ハードウェアアクセラレータでGPUを選んで保存
確認
import tensorflow as tf
tf.test.gpu_device_name()
‘/device:GPU:0’
数字を分類するニューラルネットワークの実装をやってみる2-3から
まず、
network3.pyで100のニューロンを含む隠れ層を1つだけを持つ浅いネットワークを
エポック数60、学習率0.1、ミニバッチサイズ10、正規化なしの条件で実行してみます。
このソースではフレームワーク(Theano)を使い、外部のデータセット(mnist.pkl.gz)を呼んで実行してます。
src/network3.pyとdata/mnist.pkl.gzをディレクトリを作ってアップロードしておきます。
ディレクトリを移動
%cd /content/src
セルで以下を実行
注
Theanoが使う線形代数演算ライブラリ(BLAS)が見当たらないというメッセージがでるかも。
ただ実行は問題ないです。
ここをクリック
1EpochにつきColabで2秒くらい、Jetsonだと17秒くらいでした。
GPUの威力(2019/09/02 現在のGPUはNVIDIATesla k80 12GB)
最後に数字を分類するニューラルネットワークの実装をやってみる2-3のTrial-7
結果を改良する別の手法としての訓練データの拡張を行い
サイズの大きな全結合層を追加してみて
ドロップアウトを全結合層に適用してみる、訓練のエポック数 40、全結合層内のニューロン数 1,000
上と同様に、新規でNotebookを開いてGPUを適用
データとソースをアップロードしてデータの拡張を実行
! python3 expand_mnist.py
セルで以下を実行
1EpochにつきColabで13分30秒くらい、Jetsonだと54分くらいでした。
面倒なので途中で切り上げましたが、40エポック実行するのに
Colabで9時間、Jetsonで36時間かな?
ちなみに、Colabの時間制限は連続使用で12時間です。
ColabとJetson Nano で SSD-Mobilenet の転移学習をやってみます。
Jetson Nanoで学習済みモデルを使って、いろいろやってみる(2-2)転移学習(SSD-Mobilenet)
Appendix
Colab の環境チェック
GPU
上記の「ハードウェアアクセラレータでGPUを選んで保存」した場合のみnvidia-smiコマンドで情報を取得できます。
CPU
OS
Pythonのバージョン
パッケージ情報
メモリ
ディスク
Leave a Reply