SlideShare a Scribd company logo
1 of 58
Download to read offline
2019/02/25
エヌビディア合同会社
DLLAB Japan Tour 2019 AI と
IoT が出合う日: IoT 編@名古屋
2
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
本日の全体像
GitHub
Azure VM
NC6 (Tesla K80 搭載)
Jetson TX2
開発者キット
参加者の
コンピューター
Wi-Fi
Azure BLOB Storage
Caltech-256
データセット
USB メモリ
NVIDIA GPU Cloud (NGC)
DIGITS
コンテナ
イメージ
jetson-
inference
SSH 接続
SSH 接続
Jetson で
ビルド/実行
Azure VM で
コンテナ実行
jetson-inference の
ビルド用ファイルなど
3
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
今日のお題 - Two Days to a Demo + Azure
Azure 上の GPU 搭載 VM でトレーニング、Jetson TX2 で推論
https://developer.nvidia.com/embedded/twodaystoademo
4
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson のセットアップ
5
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson の起動・ログイン・画面サイズ設定
1. USB ハブを介して、下記のデバイスを接続
• キーボード
• マウス
• USB メモリ
2. HDMI ケーブルで 7 インチモニタを接続
電源は USB ハブではなくテーブルタップから
3. Jetson を起動してログイン
貸し出し / 即売の Jetson はユーザー名、
パスワードともに “nvidia”
4. 画面の解像度を 1024 x 600 に設定
Dot by Dot にしないと見づらいため
解像度の設定は
“Displays” から
6
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson を Wi-Fi へ接続
SSID Seminar3 (5G)
Seminar3_backup (2.4G)
パスワード 20192256
SSID が見つからないときは
“More networks” の中かも
Jetson の Wi-Fi
設定は画面右上のココ
7
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson の力を解き放つ
デフォルトでは 2 つの CPU コアが無効 & CPU/GPU クロックに制限がかかっています。
→ これを有効化、最大化します。
1. Jetson にログインして次のコマンドを実行
2. 正しく設定できたことを確認
※ Jetson を再起動した場合、 jetson_clocks.sh は再度実行が必要
Jetpack インストール直後のおまじない
$ cd
$ sudo nvpmodel -m 0
$ sudo ./jetson_clocks.sh
$ sudo nvpmodel -q
[sudo] password for nvidia:
NV Power Mode: MAXN
0
“MAXN” になっていれば成功
8
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson の IP アドレスを取得
1. Jetson で次のコマンドを実行
ここで調べた IP アドレスを、 後ほど SSH の接続先に指定します。
$ ip a s wlan0 | grep inet
inet 192.168.0.107/24 brd 192.168.0.255 scope global dynamic wlan0
inet6 fe80::6e84:497b:8009:4ead/64 scope link
9
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson の操作方法
備え付けの小型モニタで直接操作しても構いませんが、PC から SSH で Jetson に接続すれば大き
な画面で操作できますし、PC で作業ログを取ることなども簡単です。
SSH 接続のツールは、 Tera Term や MobaXTerm 等、使い慣れたもので結構です。
直接 or SSH
SSH 接続直接操作
12
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
以降の作業場所をつくる
Jetson のホームディレクトリには jetson_clocks.sh や tegrastats など、重要なファイルがいくつも
あります。作業中に誤ってこれらを削除しないためにも、ホームディレクトリで直接作業せず、作業用
のディレクトリを一段作っておきます。
1. Jetson にログインして次のコマンドを実行
以降の Jetson での作業は基本的にこの ~/handson ディレクトリ配下で行います。
$ rm -rf ~/handson
$ mkdir ~/handson
13
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson で推論デモプログラムを試す
14
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
jetson-inference
Two Days to a Demo のメインコンテンツ
Jetson をターゲットに、ディープラーニングによる様々な
画像認識タスクを実装したオープンソースプロジェクト
• Image Classification (画像分類)
• Object Detection (物体検出)
• Image Segmentation (画像セグメンテーション)
推論最適化ランタイムの TensorRT を使った高速な推論
を Jetson で簡単に実行できます
https://github.com/dusty-nv/jetson-inference
15
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
jetson-inference のビルド
1. 配布された USB メモリが Jetson に接続されていることを確認してから、次のコマンドを実行
2. ビルド (20 秒程度で終わるはず)
ビルドされたプログラムは、 ~/handson/jetson-inference/build/aarch64/bin/
に展開されます。
https://github.com/dusty-nv/jetson-inference#building-from-source-on-jetson
$ cd ~/handson
$ tar zxvf /media/nvidia/JETSON/jetson-inference.tar.gz
$ cd ~/handson/jetson-inference/build
$ make -j 6
16
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
推論サンプルプログラムの実行 (1/4)
jetson-inference にはいくつかの学習済みモデルとそれを使う推論サンプルプログラムが含まれます。
まず、画像分類を行うプログラムを試してみましょう。
形式: imagenet-console {入力画像ファイル} {出力画像ファイル}
「入力画像ファイル」を画像分類し、推論結果を書き込んで出力します。
実行例:
既存の orange_0.jpg を受け取って、 output_0.jpg を生成します。
画像分類 (Image Classification) コンソール版
https://github.com/dusty-nv/jetson-inference#using-the-console-program-on-jetson
$ cd ~/handson/jetson-inference/build/aarch64/bin/
$ ./imagenet-console orange_0.jpg output_0.jpg
17
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
推論サンプルプログラムの実行 (2/4)
imagenet-camera は、Jetson のカメラから画像を受け取り、リアルタイムに推論を実行します。
画像分類 (Image Classification) カメラ版
https://github.com/dusty-nv/jetson-inference#running-the-live-camera-recognition-demo
$ cd ~/handson/jetson-inference/build/aarch64/bin/
$ ./imagenet-camera googlenet # GoogLeNet で推論
$ ./imagenet-camera alexnet # AlexNet で推論
18
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
推論サンプルプログラムの実行 (3/4)
形式: detectnet-console {入力画像ファイル} {出力画像ファイル} {モデル}
「入力画像ファイル」から物体検出し、検出結果を書き込んで出力します。
実行例:
既存の dog_1.jpg を受け取って、 output_1.jpg を生成します。
物体検出 (Object Detection) コンソール版
https://github.com/dusty-nv/jetson-inference#launching-with-a-pretrained-model
$ cd ~/handson/jetson-inference/build/aarch64/bin/
$ ./detectnet-console dog_1.jpg output_1.jpg coco-dog
コマンドに与える引数 クラス
coco-airplane airplanes
coco-bottle bottles
coco-chair chairs
coco-dog dogs
pednet pedestrians
multiped pedestrians, luggage
facenet faces
19
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
推論サンプルプログラムの実行 (4/4)
detectnet-camera は Jetson のカメラから画像を受け取り、リアルタイムに推論を実行します。
様々なモデルを利用可能です。
※ 今回の環境では、 デフォルト (multiped) のみキャッシュ作成済み、他のモデルは初回実行時に
TensorRT がキャッシュを作成するため 5 分程度かかります。まずはデフォルトをお試しください。
物体検出 (Object Detection) カメラ版
https://github.com/dusty-nv/jetson-inference#running-the-live-camera-detection-demo-on-jetson
$ cd ~/handson/jetson-inference/build/aarch64/bin/
$ ./detectnet-camera coco-bottle # ボトル
$ ./detectnet-camera coco-dog # 犬
$ ./detectnet-camera multiped # 歩行者/荷物
$ ./detectnet-camera pednet # 歩行者
$ ./detectnet-camera facenet # 顔
$ ./detectnet-camera # デフォルトは multiped
20
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
ここまでのまとめ
• Jetson をセットアップして起動しました
• Jetson を Wi-Fi に接続し、PC から Jetson へリモート接続できるようにしました
• jetson-inference プロジェクトをビルドし、推論サンプルプログラムを実行しました
次のセクションでは、舞台をクラウド側へ移して画像認識モデルをトレーニングします。
21
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
クラウド側での学習
22
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
このセクションの内容
先のセクションでは、強力な GPU マシン上でトレーニングされた「学習済みのモデル」を使い Jetson
上で推論を試しました。
仮にそのモデルを改良したい、あるいは新たなデータで再学習したいといった場合、Jetson の GPU
性能では時間がかかりすぎるため、トレーニング向けの強力な GPU 環境が必要です。
※ 単精度浮動小数点演算器の数を比較すると、Jetson TX2 が 256、Tesla K80 は 2,496 と大きな差があります。
このセクションでは、Microsoft Azure 上に GPU サーバーを構築し、クラウド側で DNN のトレーニン
グを行うことで、「クラウドで学習、エッジで推論」の連携を体験します。
Azure 上では Tesla K80 GPU を搭載する NC シリーズの VM を作成し、その上で NVIDIA
DIGITS というディープラーニング用開発環境を利用します。
23
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
利用するデータセットとモデル
先に試した jetson-inference のトレーニング済みモデルは、ILSVRC2012 データセットでトレーニン
グされています。これは 100GB 以上ある 1000 クラスのデータセットで、本日のハンズオンで扱うには
向いていません。(データセットの前処理だけで時間切れになってしまいます)
そこで、もう少しコンパクトな Caltech-256 (※) データセットを利用します。これはカリフォルニア工科
大学が公開している約 1.2 GB のデータセットで、256 クラス、3 万枚あまりの画像からなります。
モデルは AlexNet を利用します。2012 年の ILSVRC 優勝モデルを今日は自分の手でトレーニング
しましょう!
※ Griffin, G. Holub, AD. Perona, P. The Caltech 256. Caltech Technical Report.
24
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
トレーニングの土台となる VM を構築
Azure VM
NC6 (Tesla K80 搭載)
Azure BLOB Storage
Caltech-256
データセット
NVIDIA GPU Cloud (NGC)
DIGITS
コンテナ
イメージ
Azure VM で
コンテナ実行
まずは Azure 上で
GPU 搭載 VM を作成
25
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Azure Cloud Shell の実行
GPU 搭載 VM を作成するために、Azure Cloud Shell を実行します。
Azure ポータル (https://portal.azure.com) の上部にある をクリックし、Bash を選択します。
https://portal.azure.com
これは初回のみ
PC
26
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Azure GPU VM の起動
1. Azure Cloud Shell 上に、VM 作成スクリプトをダウンロードして、実行します。
このスクリプトは、westus2 (米国西部 2) リージョンに NC6 インスタンスを 1 台起動し、DIGITS の
ために 5000/tcp ポートを開けます。
NC6 インスタンスは、NVIDIA Tesla K80 GPU を 1 基 (正確には、K80 を構成している 2 基の
GPU の内 1 基) 搭載しています。
$ wget https://nvwestus2.blob.core.windows.net/pub/new-ngcvm.sh
$ chmod +x new-ngcvm.sh
$ ./new-ngcvm.sh
PC
27
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
VM の起動に失敗する方
VM緊急割り当て表
28
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
NVIDIA GPU 製品のおおまかな一覧
※ このスライドは VM の起動を待つ間にでもご覧ください
Maxwell
(2014)
Pascal
(2016)
Volta
(2017)
M40
HPC 用
GRID 用
DL 用
M60
Kepler
(2012)
K80
K2
K520
V100
データセンタ
& クラウド
Tesla
P40
P100
P6
Fermi
(2010)
M2070
GeForceゲーミング GTX
980
GTX
780
GTX
1080
TITAN X TITAN V
GTX
580
P4
M6 M10
Turing
(2018)
T4
RTX 2080 Ti
TITAN RTX
Quadro
プロフェッショナル
グラフィックス M6000 GP100P5000K60006000 GV100
RTX 8000
RTX 6000
今日使える
のはコレ
29
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
名称 CPU コア数 メモリ GPU RDMA
NV6 6 56 GB Tesla M60 半分 (GPU 1基)
NV12 12 112 GB Tesla M60 1枚 (GPU 2基)
NV24 24 224 GB Tesla M60 2枚 (GPU 4基)
NC6 6 56 GB Tesla K80 半分 (GPU 1基)
NC12 12 112 GB Tesla K80 1枚 (GPU 2基)
NC24 24 224 GB Tesla K80 2枚 (GPU 4基)
NC24r 24 224 GB Tesla K80 2枚 (GPU 4基) InfiniBand
Microsoft Azure N シリーズ GPU インスタンス
※ このスライドは VM の起動を待つ間にでもご覧ください
今日使えるのは
このあたり
30
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
名称 CPUコア数 メモリ GPU RDMA
NC6 v2 6 112 GB Tesla P100 x 1 -
NC12 v2 12 224 GB Tesla P100 x 2 -
NC24 v2 24 448 GB Tesla P100 x 4 -
NC24r v2 24 448 GB Tesla P100 x 4 InfiniBand
ND6 6 112 GB Tesla P40 x 1 -
ND12 12 224 GB Tesla P40 x 2 -
ND24 24 448 GB Tesla P40 x 4 -
ND24r 24 448 GB Tesla P40 x 4 InfiniBand
NC6 v3 6 112 Tesla V100 x 1 -
NC12 v3 12 224 Tesla V100 x 2 -
NC24 v3 24 448 Tesla V100 x 4 -
NC24r v3 24 448 Tesla V100 x 4 InfiniBand
Microsoft Azure N シリーズ GPU インスタンス
※ このスライドは VM の起動を待つ間にでもご覧ください
31
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
GPU 搭載 VM ができあがったら
以下の情報が表示されるので、どこかに保存しておくと便利です。
• SSH 接続の際に使用するホスト名 (FQDN)
• DIGITS に接続する際の URL
• ハンズオン終了後に環境を削除するためのコマンド
※ 表示される情報の例↓
FQDN: nvd2969457.westus2.cloudapp.azure.com
USERNAME: nvidia
PASSWORD: jetsontx2!!!
DIGITS URL: http://nvd2969457.westus2.cloudapp.azure.com:5000
PC
32
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
VM ができたら DIGITS コンテナを起動
Azure VM
NC6 (Tesla K80 搭載)
Azure BLOB Storage
Caltech-256
データセット
NVIDIA GPU Cloud (NGC)
DIGITS
コンテナ
イメージ
Azure VM で
コンテナ実行
NGC の DIGITS コンテナ
イメージを取得して実行
33
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
作成した GPU 搭載 VM にログイン
1. MobaXTerm 等のツールで VM へ SSH 接続
SSH 接続先 VM 作成時に表示された FQDN
ユーザー名 nvidia
パスワード
jetsontx2!!!
(びっくりマークは 3 回)
VM の FQDN がわからなくなったら
ポータルで確認してコピーも可能
PC
34
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
学習データをストレージからコピー
Caltech-256 データセットを、Azure ストレージに用意してあります。
仮想マシンと同じリージョン (westus2) にあるので、高速にコピーが可能です。
1. 次のコマンドを実行してダウンロードし、~/data に展開
$ wget https://nvwestus2.blob.core.windows.net/pub/caltech256_1.tar
$ mkdir ~/data
$ tar xvf caltech256_1.tar -C ~/data
35
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
NGC の DIGITS イメージからコンテナを起動
1. 以下のコマンドでコンテナを起動
• 初回は起動に 5 分ほどかかります。
• 最新のイメージは NC インスタンスでは動作しません。そのためタグ 18.10 を指定します
• -v オプションによって、先ほどデータを展開したホストの ~/data ディレクトリが、コンテナの
/data にマップされます
• -p オプションによって、ホストの 5000 番ポートがコンテナの同じく 5000 番にマップされます
VM 作成時に 5000/tcp へのアクセスを許可していますので、これによって外からコンテナの
DIGITS へアクセスできるようになります。
$ docker run --runtime=nvidia -d -p 5000:5000 -v ~/data:/data nvcr.io/nvidia/digits:18.10
36
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
NVIDIA GPU CLOUD
数十種類の GPU 対応アプリケーションイメージ
各種ディープラーニング フレームワーク、サードパーティの HPC
アプリケーション、NVIDIA の HPC 可視化ツール、数々の
パートナー アプリケーション
数週間ではなく、数分でイノベーションを生み出す
ソフトウェア環境を構築するための複雑な作業を、大幅に
軽減します。
あらゆる環境からアクセス
Volta あるいは Pascal 世代 GPU を搭載した PC、
NVIDIA DGX Systems 製品群、
そして複数のクラウドサービスプロバイダ
GPU 対応アプリケーションの総合カタログ
37
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
学習データの作成 モデルの作成 モデルのテスト学習過程の可視化
NVIDIA DIGITS
GPUで高速化されたディープラーニング トレーニング システム
http://developer.nvidia.com/digits
38
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
NVIDIA DIGITS
GPUで高速化されたディープラーニング トレーニング システム
ユーザー
インターフェース
レイヤーの
可視化
学習モデルの
作成
データセット
の作成
学習過程の
可視化
Theano
GPUGPU HW クラウドGPUクラスタマルチGPU
TensorFlow
Torch
Caffe
cuDNN, cuBLAS
CUDA
学習
NVCaffe
cuDNN, cuBLAS
CUDA
• 画像分類と物体検出の為の DNN の
デザインと可視化の機能を提供
• NVIDIA が最適化したフレームワークで
高速に学習が可能
• ハイパーパラメータのチューニングを強力に
サポート
• 学習のジョブを簡単にスケジューリング、
リアルタイムに accuracy と loss を監視
• 様々な学習データフォーマット、フレーム
ワークに対応
39
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
コンテナが起動したら DIGITS にアクセス
このようにプロンプトが戻ってくればコンテナ起動完了
PC あるいは Jetson のブラウザから、DIGITS の URL にアクセス
この URL は VM 作成完了時に表示されたもので、ユーザー毎に違います
http://コンピューター名.westus2.cloudapp.azure.com:5000/
Digest: sha256:28ed527eebfd01ea1b7e08b5229aba233f38f33da5a4d1c572d46b618414288a
Status: Downloaded newer image for nvcr.io/nvidia/digits:18.10
dcaeba19192ed437e0eaa4dd9109b21a2e3516c302f892c21cc00cc3ebeebc89
$
PC
40
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
補足: 「コンテナにログインしたい」ときは?
なお、「コンテナにログインして中を見たい」ときは、コンテナでシェルを実行すれば OK
1. まず docker ps コマンドでコンテナ ID を確認して
2. コンテナでシェルを実行
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
dcaeba19192e nvcr.io/nvidia/digits:18.10 "/usr/local/bin/nvid…" 28 minutes ago Up 27
minutes 0.0.0.0:5000->5000/tcp, 6006/tcp epic_elion
コンテナ ID
$ docker exec -it コンテナID /bin/bash
root@dcaeba19192e:/workspace# hostname ← ここはコンテナの中
dcaeba19192e
41
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
NVIDIA DIGITS の画面構成
左上の「DIGITS」をクリックすると、
常に最初の画面に戻れます。
(Models タブがクリックされた状態に)
「Datasets」タブ
学習用のデータセットの作成に使います
「Models」タブ
ニューラルネットワークの学習を実行するのはこちら
42
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
データセットの作成
Datasets タブを選択後、
New Dataset > Imagesから
“Classification”を選択
初回だけログインを求められる
ので、ユーザー名を入力
(英数小文字)
PC
43
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
デフォルトから変更するのは次の 3 カ所
1. Training Images: /data/256_ObjectCategories/
2. % for testing: 1
3. Dataset Name: (名前は任意)
最後に Create ボタンを押す
(データセット作成に 4 分程度)
データセットの作成PC
44
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
データセットを眺めてみる
1. “Explore the db” ボタンをクリック
PC
45
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
AlexNet の学習済みモデル
2012 年の ILSVRC で優勝した AlexNet は 6000 万個のパラメーターを持ち、その
トレーニングには、当時の GeForce GTX 580 GPU を 2 基使って 5,6 日かかってい
ます。当時より遙かに高速な現在の GPU を使っても、本日のハンズオン中にゼロか
ら学習するには時間が足りません。
DIGITS には「モデルストア」というトレーニング済みモデルのリポジトリが有り、大きな
データセットでトレーニングされた様々なモデルが用意されています。
今日は、ILSVRC2012 データセットでトレーニングされた AlexNet の学習済みモデル
をベースにして、これを Caltech-256 用に少し変更して使います。
1. DIGITS の "Pretrained Models" タブで "Retrieve
form Model Store" を選びます。
2. Model Store で AlexNet をクリックします。
3. 進捗バーが右端まで達したら、左上の "DIGITS"
ボタンでホーム画面に戻ります。
巨人の肩に乗って楽をしましょう
PC
46
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
AlexNet の構造
5 段の畳み込み層で特徴を抽出、3 段の全結合層で分類
正しくは
227
conv1 conv2 conv3 conv4 conv5 fc6 fc7 fc8
47
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
画像認識モデルの作成
1. "Models" タブ → "Images" → "Classification"
2. "New Image Classification Model" 画面で
3. "Select Dataset" でデータセットを選択
4. Training epochs: 10
5. Subtract Mena: Pixel
PC
48
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
ネットワークを少し変更
1. "Pretrained Networks" タブ
→ AlexNet → Customize
2. 512 行目の num_output: 1000 を
num_output: 258 へ
※ ILSVRC2012 は 1000 クラス、
今日の Caltech-256 + α は 258 クラス
Caltech-256 (+α) に合わせて出力層のユニット数を変更
PC
49
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
ネットワークを少し変更
出力層のユニット数を変えた "fc8" 層を再学習
させるには、名前を変える必要があります。
1. 499 行目の "fc8" を "fc8b" 等別の名前に
2. "Visualize" ボタンをクリックしてネットワーク
を可視化し、結果を確認
3. "Create" ボタンをクリックして学習を開始
10 - 11 分で完了
再学習する層をリネーム
PC
50
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
テスト用データセットで精度を確認
テスト用の画像は、学習用、検証用に使っていない「未知の」画像で
なければ意味がありません。
データセット作成時に 1% をテストデータに指定したのはこのためです。
これらは DIGITS が動作するサーバー上に画像ファイルの形で存在し、
そのパス名が test.txt に列挙されています。
この test.txt を PC にダウンロードして、テストに使います。
1. 左上の "DIGITS" ボタンでホームへ戻る
2. "Datasets" タブでデータセットをクリック
3. "Create DB (test)" 欄の "test.txt" を
右クリックしてダウンロード
テスト画像ファイル名リストのダウンロード
PC
51
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
テスト用画像で推論してみる
1. DIGITS の "Models" タブでモデルを選択
2. PC で先ほどの test.txt を開き、適当な
テスト画像ファイル名をコピー
3. モデルの "Test a single image" > "Image
Path" にコピーしたファイル名をペースト
4. "Show visualizations and statistics" に
チェック
5. "Classify One" をクリック
単一画像のテスト
PC
52
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
テスト用画像で推論してみる
ファイル名のリスト (test.txt) をアップロードすることで、複数
の画像を一度にテストできます。
1. DIGITS の "Models" タブでモデルを選択
2. モデルの "Test a list of images" >
"Upload Image List" > "Upload Image
List" で test.txt を指定
3. [任意] "Number of images use from
the file" で一度に推論するファイルの数を
指定
4. "Classify Many" をクリック
複数画像のテスト
PC
53
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
テスト用画像で推論してみる
Top-1 accuracy: 推論結果の最上位がズバリ
正解だった確率
Top-5 accuracy: 推論結果の上位 5 位までに
正解が含まれていた確率
たった 10 エポックのトレーニングにしては高い精
度が出ているはずです。これがファインチューニン
グの恩恵です。
複数画像のテスト
PC
54
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
まとめ
Azure の GPU インスタンス上でNVIDIA GPU Cloud のコンテナイメージを使い NVIDIA DIGITS を
起動しました
DIGITS のモデルストアから ILSVRC2012 データセットを充分に学習した AlexNet モデルを取得し、
これをベースに Caltec-256 データセットでファインチューニングを行いました。
テスト用のデータセットで精度を検証し、少ない時間で高い精度が得られたことを確認しました
次のセクションでは、ここでトレーニングしたモデルを Jetson へデプロイして画像分類を試します
55
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
Jetson での推論処理
56
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
学習済みモデルのダウンロード
1. DIGITS へアクセス
2. モデルの学習結果が表示される画面の
下部にある、 Download Model をクリック
3. Jetson でダウンロードした場合は、
~/Downloads ディレクトリへ保存されます。
4. PC でダウンロードした場合は、USB メモリ経
由、あるいは SSH を使って Jetson の
~/Downloads ディレクトリへコピーします
この作業は Jetson あるいは PC 上で行います
PC
配布した USB メモリに学習済みモデルを格納してあります。ご利用ください。
/media/nvidia/JETSON/models/Alexnet_Caltech256_Jetson_epoch_10.tar.gz
※ ダウンロードがうまくいかない場合
57
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
学習済みモデルを使った推論処理
1. ダウンロードしたモデルの .tar.gz ファイルを展開
(下記は一例です、緑部分を適切に置き換えてください)
2. モデルを指定して、imagenet-console を実行
この作業は Jetson 上で行います
https://github.com/dusty-nv/jetson-inference#loading-custom-models-on-jetson
$ cd ~/handson/jetson-inference/build/aarch64/bin/
$ tar zxvf ~/Downloads/20190202-123456-3dfe_epoch_10.0.tar.gz
$ ./imagenet-console orange_0.jpg output_0.jpg 
--prototxt=deploy.prototxt 
--model=snapshot_iter_1353.caffemodel 
--labels=labels.txt 
--input_blob=data --output_blob=softmax
58
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
学習済みモデルを使った推論処理
前ページで imagenet-console を試しましたが、同様にカメラ版も実行できます。
1. モデルを指定して、imagenet-camera を実行
(下記は一例です、緑部分を適切に置き換えてください)
この作業は Jetson 上で行います
https://github.com/dusty-nv/jetson-inference#loading-custom-models-on-jetson
$ ./imagenet-camera 
--prototxt=deploy.prototxt 
--model=snapshot_iter_910.caffemodel 
--labels=labels.txt 
--input_blob=data --output_blob=softmax
59
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab
ハンズオン環境の後片付け
1. [貸し出し機のみ] Jetson のハンズオンディレクトリを削除
2. Azure の Cloud Shell で次のコマンドを実行
GPU 搭載 VM とその関連リソース (ディスクや NIC 等) がすべて削除されます。
$ cd
$ rm -rf ~/handson
$ rm -rf ~/Downloads/*
$ az group delete --name jetsonazure --yes
20190225 jetson azure_hands-on

More Related Content

What's hot

1000: 基調講演
1000: 基調講演1000: 基調講演
1000: 基調講演NVIDIA Japan
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)NTT DATA Technology & Innovation
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」ManaMurakami1
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」ManaMurakami1
 
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA Japan
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)NTT DATA Technology & Innovation
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)NTT DATA Technology & Innovation
 
GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報NVIDIA Japan
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 
20160902 hyperscale #04
20160902 hyperscale #0420160902 hyperscale #04
20160902 hyperscale #04ManaMurakami1
 
Flow in VR Funhouse MOD Kit
Flow in VR Funhouse MOD KitFlow in VR Funhouse MOD Kit
Flow in VR Funhouse MOD KitNVIDIA Japan
 
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...NTT DATA Technology & Innovation
 
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...NTT DATA Technology & Innovation
 
1070: CUDA プログラミング入門
1070: CUDA プログラミング入門1070: CUDA プログラミング入門
1070: CUDA プログラミング入門NVIDIA Japan
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版VirtualTech Japan Inc.
 
今日から始める限定公開クラスタ
今日から始める限定公開クラスタ今日から始める限定公開クラスタ
今日から始める限定公開クラスタIgarashi Toru
 
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)NVIDIA Japan
 
20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDBKohei KaiGai
 

What's hot (20)

1000: 基調講演
1000: 基調講演1000: 基調講演
1000: 基調講演
 
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介NVIDIA GPU Cloud の紹介
NVIDIA GPU Cloud の紹介
 
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
20170518 eureka dli
20170518 eureka dli20170518 eureka dli
20170518 eureka dli
 
GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報GTC 2018 で発表されたディープラーニング最新情報
GTC 2018 で発表されたディープラーニング最新情報
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
20160902 hyperscale #04
20160902 hyperscale #0420160902 hyperscale #04
20160902 hyperscale #04
 
Flow in VR Funhouse MOD Kit
Flow in VR Funhouse MOD KitFlow in VR Funhouse MOD Kit
Flow in VR Funhouse MOD Kit
 
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
 
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
 
1070: CUDA プログラミング入門
1070: CUDA プログラミング入門1070: CUDA プログラミング入門
1070: CUDA プログラミング入門
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
今日から始める限定公開クラスタ
今日から始める限定公開クラスタ今日から始める限定公開クラスタ
今日から始める限定公開クラスタ
 
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
ChainerRL の学習済みモデルを gRPC 経由で使ってみる試み (+アルファ)
 
20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB20171212_GTCJapan_InceptionSummt_HeteroDB
20171212_GTCJapan_InceptionSummt_HeteroDB
 

Similar to 20190225 jetson azure_hands-on

20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyoManaMurakami1
 
Jetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジにJetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジにNVIDIA Japan
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroupManaMurakami1
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProXToru Makabe
 
JETSON 最新情報 & 自動外観検査事例紹介
JETSON 最新情報 & 自動外観検査事例紹介JETSON 最新情報 & 自動外観検査事例紹介
JETSON 最新情報 & 自動外観検査事例紹介NVIDIA Japan
 
HELLO AI WORLD - MEET JETSON NANO
HELLO AI WORLD - MEET JETSON NANOHELLO AI WORLD - MEET JETSON NANO
HELLO AI WORLD - MEET JETSON NANONVIDIA Japan
 
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...IoTビジネス共創ラボ
 
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢Insight Technology, Inc.
 
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]Kohei KaiGai
 
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計ShuheiUda
 
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみるYasuhiro Yoshimura
 
ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境Yaboo Oyabu
 
20180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #1020180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #10Kohei KaiGai
 
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試みtomitomi3 tomitomi3
 
Cld009 お待たせしました
Cld009 お待たせしましたCld009 お待たせしました
Cld009 お待たせしましたTech Summit 2016
 
Cld009 お待たせしました
Cld009 お待たせしましたCld009 お待たせしました
Cld009 お待たせしましたTech Summit 2016
 
ETロボコン2020 競技会場システムのおはなし
ETロボコン2020 競技会場システムのおはなしETロボコン2020 競技会場システムのおはなし
ETロボコン2020 競技会場システムのおはなしTetsuya Odashima
 
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateMicrosoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateHirono Jumpei
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリースTech Summit 2016
 

Similar to 20190225 jetson azure_hands-on (20)

20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyo
 
Jetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジにJetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジに
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
JETSON 最新情報 & 自動外観検査事例紹介
JETSON 最新情報 & 自動外観検査事例紹介JETSON 最新情報 & 自動外観検査事例紹介
JETSON 最新情報 & 自動外観検査事例紹介
 
HELLO AI WORLD - MEET JETSON NANO
HELLO AI WORLD - MEET JETSON NANOHELLO AI WORLD - MEET JETSON NANO
HELLO AI WORLD - MEET JETSON NANO
 
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
Intel OpenVINO、 NVIDIA Deepstream対応開発キットから、 エッジサーバー、Azure Data Box Edgeまで、 Az...
 
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
 
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
 
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
 
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
 
ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境ディープラーニングイメージで構築する快適・高速な機械学習環境
ディープラーニングイメージで構築する快適・高速な機械学習環境
 
20180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #1020180217 FPGA Extreme Computing #10
20180217 FPGA Extreme Computing #10
 
Cmc cmd slim
Cmc cmd slimCmc cmd slim
Cmc cmd slim
 
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
第14回 KAIM M5StickV(K210)をDNNアクセラレータとして使おうとした試み
 
Cld009 お待たせしました
Cld009 お待たせしましたCld009 お待たせしました
Cld009 お待たせしました
 
Cld009 お待たせしました
Cld009 お待たせしましたCld009 お待たせしました
Cld009 お待たせしました
 
ETロボコン2020 競技会場システムのおはなし
ETロボコン2020 競技会場システムのおはなしETロボコン2020 競技会場システムのおはなし
ETロボコン2020 競技会場システムのおはなし
 
Microsoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community UpdateMicrosoft AI Solution Update / DLL community Update
Microsoft AI Solution Update / DLL community Update
 
Cld017 nh シリーズリリース
Cld017 nh シリーズリリースCld017 nh シリーズリリース
Cld017 nh シリーズリリース
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Recently uploaded (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

20190225 jetson azure_hands-on

  • 1. 2019/02/25 エヌビディア合同会社 DLLAB Japan Tour 2019 AI と IoT が出合う日: IoT 編@名古屋
  • 2. 2 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 本日の全体像 GitHub Azure VM NC6 (Tesla K80 搭載) Jetson TX2 開発者キット 参加者の コンピューター Wi-Fi Azure BLOB Storage Caltech-256 データセット USB メモリ NVIDIA GPU Cloud (NGC) DIGITS コンテナ イメージ jetson- inference SSH 接続 SSH 接続 Jetson で ビルド/実行 Azure VM で コンテナ実行 jetson-inference の ビルド用ファイルなど
  • 3. 3 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 今日のお題 - Two Days to a Demo + Azure Azure 上の GPU 搭載 VM でトレーニング、Jetson TX2 で推論 https://developer.nvidia.com/embedded/twodaystoademo
  • 4. 4 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson のセットアップ
  • 5. 5 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson の起動・ログイン・画面サイズ設定 1. USB ハブを介して、下記のデバイスを接続 • キーボード • マウス • USB メモリ 2. HDMI ケーブルで 7 インチモニタを接続 電源は USB ハブではなくテーブルタップから 3. Jetson を起動してログイン 貸し出し / 即売の Jetson はユーザー名、 パスワードともに “nvidia” 4. 画面の解像度を 1024 x 600 に設定 Dot by Dot にしないと見づらいため 解像度の設定は “Displays” から
  • 6. 6 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson を Wi-Fi へ接続 SSID Seminar3 (5G) Seminar3_backup (2.4G) パスワード 20192256 SSID が見つからないときは “More networks” の中かも Jetson の Wi-Fi 設定は画面右上のココ
  • 7. 7 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson の力を解き放つ デフォルトでは 2 つの CPU コアが無効 & CPU/GPU クロックに制限がかかっています。 → これを有効化、最大化します。 1. Jetson にログインして次のコマンドを実行 2. 正しく設定できたことを確認 ※ Jetson を再起動した場合、 jetson_clocks.sh は再度実行が必要 Jetpack インストール直後のおまじない $ cd $ sudo nvpmodel -m 0 $ sudo ./jetson_clocks.sh $ sudo nvpmodel -q [sudo] password for nvidia: NV Power Mode: MAXN 0 “MAXN” になっていれば成功
  • 8. 8 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson の IP アドレスを取得 1. Jetson で次のコマンドを実行 ここで調べた IP アドレスを、 後ほど SSH の接続先に指定します。 $ ip a s wlan0 | grep inet inet 192.168.0.107/24 brd 192.168.0.255 scope global dynamic wlan0 inet6 fe80::6e84:497b:8009:4ead/64 scope link
  • 9. 9 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson の操作方法 備え付けの小型モニタで直接操作しても構いませんが、PC から SSH で Jetson に接続すれば大き な画面で操作できますし、PC で作業ログを取ることなども簡単です。 SSH 接続のツールは、 Tera Term や MobaXTerm 等、使い慣れたもので結構です。 直接 or SSH SSH 接続直接操作
  • 10. 12 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 以降の作業場所をつくる Jetson のホームディレクトリには jetson_clocks.sh や tegrastats など、重要なファイルがいくつも あります。作業中に誤ってこれらを削除しないためにも、ホームディレクトリで直接作業せず、作業用 のディレクトリを一段作っておきます。 1. Jetson にログインして次のコマンドを実行 以降の Jetson での作業は基本的にこの ~/handson ディレクトリ配下で行います。 $ rm -rf ~/handson $ mkdir ~/handson
  • 11. 13 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson で推論デモプログラムを試す
  • 12. 14 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab jetson-inference Two Days to a Demo のメインコンテンツ Jetson をターゲットに、ディープラーニングによる様々な 画像認識タスクを実装したオープンソースプロジェクト • Image Classification (画像分類) • Object Detection (物体検出) • Image Segmentation (画像セグメンテーション) 推論最適化ランタイムの TensorRT を使った高速な推論 を Jetson で簡単に実行できます https://github.com/dusty-nv/jetson-inference
  • 13. 15 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab jetson-inference のビルド 1. 配布された USB メモリが Jetson に接続されていることを確認してから、次のコマンドを実行 2. ビルド (20 秒程度で終わるはず) ビルドされたプログラムは、 ~/handson/jetson-inference/build/aarch64/bin/ に展開されます。 https://github.com/dusty-nv/jetson-inference#building-from-source-on-jetson $ cd ~/handson $ tar zxvf /media/nvidia/JETSON/jetson-inference.tar.gz $ cd ~/handson/jetson-inference/build $ make -j 6
  • 14. 16 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 推論サンプルプログラムの実行 (1/4) jetson-inference にはいくつかの学習済みモデルとそれを使う推論サンプルプログラムが含まれます。 まず、画像分類を行うプログラムを試してみましょう。 形式: imagenet-console {入力画像ファイル} {出力画像ファイル} 「入力画像ファイル」を画像分類し、推論結果を書き込んで出力します。 実行例: 既存の orange_0.jpg を受け取って、 output_0.jpg を生成します。 画像分類 (Image Classification) コンソール版 https://github.com/dusty-nv/jetson-inference#using-the-console-program-on-jetson $ cd ~/handson/jetson-inference/build/aarch64/bin/ $ ./imagenet-console orange_0.jpg output_0.jpg
  • 15. 17 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 推論サンプルプログラムの実行 (2/4) imagenet-camera は、Jetson のカメラから画像を受け取り、リアルタイムに推論を実行します。 画像分類 (Image Classification) カメラ版 https://github.com/dusty-nv/jetson-inference#running-the-live-camera-recognition-demo $ cd ~/handson/jetson-inference/build/aarch64/bin/ $ ./imagenet-camera googlenet # GoogLeNet で推論 $ ./imagenet-camera alexnet # AlexNet で推論
  • 16. 18 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 推論サンプルプログラムの実行 (3/4) 形式: detectnet-console {入力画像ファイル} {出力画像ファイル} {モデル} 「入力画像ファイル」から物体検出し、検出結果を書き込んで出力します。 実行例: 既存の dog_1.jpg を受け取って、 output_1.jpg を生成します。 物体検出 (Object Detection) コンソール版 https://github.com/dusty-nv/jetson-inference#launching-with-a-pretrained-model $ cd ~/handson/jetson-inference/build/aarch64/bin/ $ ./detectnet-console dog_1.jpg output_1.jpg coco-dog コマンドに与える引数 クラス coco-airplane airplanes coco-bottle bottles coco-chair chairs coco-dog dogs pednet pedestrians multiped pedestrians, luggage facenet faces
  • 17. 19 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 推論サンプルプログラムの実行 (4/4) detectnet-camera は Jetson のカメラから画像を受け取り、リアルタイムに推論を実行します。 様々なモデルを利用可能です。 ※ 今回の環境では、 デフォルト (multiped) のみキャッシュ作成済み、他のモデルは初回実行時に TensorRT がキャッシュを作成するため 5 分程度かかります。まずはデフォルトをお試しください。 物体検出 (Object Detection) カメラ版 https://github.com/dusty-nv/jetson-inference#running-the-live-camera-detection-demo-on-jetson $ cd ~/handson/jetson-inference/build/aarch64/bin/ $ ./detectnet-camera coco-bottle # ボトル $ ./detectnet-camera coco-dog # 犬 $ ./detectnet-camera multiped # 歩行者/荷物 $ ./detectnet-camera pednet # 歩行者 $ ./detectnet-camera facenet # 顔 $ ./detectnet-camera # デフォルトは multiped
  • 18. 20 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab ここまでのまとめ • Jetson をセットアップして起動しました • Jetson を Wi-Fi に接続し、PC から Jetson へリモート接続できるようにしました • jetson-inference プロジェクトをビルドし、推論サンプルプログラムを実行しました 次のセクションでは、舞台をクラウド側へ移して画像認識モデルをトレーニングします。
  • 19. 21 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab クラウド側での学習
  • 20. 22 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab このセクションの内容 先のセクションでは、強力な GPU マシン上でトレーニングされた「学習済みのモデル」を使い Jetson 上で推論を試しました。 仮にそのモデルを改良したい、あるいは新たなデータで再学習したいといった場合、Jetson の GPU 性能では時間がかかりすぎるため、トレーニング向けの強力な GPU 環境が必要です。 ※ 単精度浮動小数点演算器の数を比較すると、Jetson TX2 が 256、Tesla K80 は 2,496 と大きな差があります。 このセクションでは、Microsoft Azure 上に GPU サーバーを構築し、クラウド側で DNN のトレーニン グを行うことで、「クラウドで学習、エッジで推論」の連携を体験します。 Azure 上では Tesla K80 GPU を搭載する NC シリーズの VM を作成し、その上で NVIDIA DIGITS というディープラーニング用開発環境を利用します。
  • 21. 23 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 利用するデータセットとモデル 先に試した jetson-inference のトレーニング済みモデルは、ILSVRC2012 データセットでトレーニン グされています。これは 100GB 以上ある 1000 クラスのデータセットで、本日のハンズオンで扱うには 向いていません。(データセットの前処理だけで時間切れになってしまいます) そこで、もう少しコンパクトな Caltech-256 (※) データセットを利用します。これはカリフォルニア工科 大学が公開している約 1.2 GB のデータセットで、256 クラス、3 万枚あまりの画像からなります。 モデルは AlexNet を利用します。2012 年の ILSVRC 優勝モデルを今日は自分の手でトレーニング しましょう! ※ Griffin, G. Holub, AD. Perona, P. The Caltech 256. Caltech Technical Report.
  • 22. 24 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab トレーニングの土台となる VM を構築 Azure VM NC6 (Tesla K80 搭載) Azure BLOB Storage Caltech-256 データセット NVIDIA GPU Cloud (NGC) DIGITS コンテナ イメージ Azure VM で コンテナ実行 まずは Azure 上で GPU 搭載 VM を作成
  • 23. 25 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Azure Cloud Shell の実行 GPU 搭載 VM を作成するために、Azure Cloud Shell を実行します。 Azure ポータル (https://portal.azure.com) の上部にある をクリックし、Bash を選択します。 https://portal.azure.com これは初回のみ PC
  • 24. 26 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Azure GPU VM の起動 1. Azure Cloud Shell 上に、VM 作成スクリプトをダウンロードして、実行します。 このスクリプトは、westus2 (米国西部 2) リージョンに NC6 インスタンスを 1 台起動し、DIGITS の ために 5000/tcp ポートを開けます。 NC6 インスタンスは、NVIDIA Tesla K80 GPU を 1 基 (正確には、K80 を構成している 2 基の GPU の内 1 基) 搭載しています。 $ wget https://nvwestus2.blob.core.windows.net/pub/new-ngcvm.sh $ chmod +x new-ngcvm.sh $ ./new-ngcvm.sh PC
  • 25. 27 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab VM の起動に失敗する方 VM緊急割り当て表
  • 26. 28 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab NVIDIA GPU 製品のおおまかな一覧 ※ このスライドは VM の起動を待つ間にでもご覧ください Maxwell (2014) Pascal (2016) Volta (2017) M40 HPC 用 GRID 用 DL 用 M60 Kepler (2012) K80 K2 K520 V100 データセンタ & クラウド Tesla P40 P100 P6 Fermi (2010) M2070 GeForceゲーミング GTX 980 GTX 780 GTX 1080 TITAN X TITAN V GTX 580 P4 M6 M10 Turing (2018) T4 RTX 2080 Ti TITAN RTX Quadro プロフェッショナル グラフィックス M6000 GP100P5000K60006000 GV100 RTX 8000 RTX 6000 今日使える のはコレ
  • 27. 29 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 名称 CPU コア数 メモリ GPU RDMA NV6 6 56 GB Tesla M60 半分 (GPU 1基) NV12 12 112 GB Tesla M60 1枚 (GPU 2基) NV24 24 224 GB Tesla M60 2枚 (GPU 4基) NC6 6 56 GB Tesla K80 半分 (GPU 1基) NC12 12 112 GB Tesla K80 1枚 (GPU 2基) NC24 24 224 GB Tesla K80 2枚 (GPU 4基) NC24r 24 224 GB Tesla K80 2枚 (GPU 4基) InfiniBand Microsoft Azure N シリーズ GPU インスタンス ※ このスライドは VM の起動を待つ間にでもご覧ください 今日使えるのは このあたり
  • 28. 30 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 名称 CPUコア数 メモリ GPU RDMA NC6 v2 6 112 GB Tesla P100 x 1 - NC12 v2 12 224 GB Tesla P100 x 2 - NC24 v2 24 448 GB Tesla P100 x 4 - NC24r v2 24 448 GB Tesla P100 x 4 InfiniBand ND6 6 112 GB Tesla P40 x 1 - ND12 12 224 GB Tesla P40 x 2 - ND24 24 448 GB Tesla P40 x 4 - ND24r 24 448 GB Tesla P40 x 4 InfiniBand NC6 v3 6 112 Tesla V100 x 1 - NC12 v3 12 224 Tesla V100 x 2 - NC24 v3 24 448 Tesla V100 x 4 - NC24r v3 24 448 Tesla V100 x 4 InfiniBand Microsoft Azure N シリーズ GPU インスタンス ※ このスライドは VM の起動を待つ間にでもご覧ください
  • 29. 31 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab GPU 搭載 VM ができあがったら 以下の情報が表示されるので、どこかに保存しておくと便利です。 • SSH 接続の際に使用するホスト名 (FQDN) • DIGITS に接続する際の URL • ハンズオン終了後に環境を削除するためのコマンド ※ 表示される情報の例↓ FQDN: nvd2969457.westus2.cloudapp.azure.com USERNAME: nvidia PASSWORD: jetsontx2!!! DIGITS URL: http://nvd2969457.westus2.cloudapp.azure.com:5000 PC
  • 30. 32 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab VM ができたら DIGITS コンテナを起動 Azure VM NC6 (Tesla K80 搭載) Azure BLOB Storage Caltech-256 データセット NVIDIA GPU Cloud (NGC) DIGITS コンテナ イメージ Azure VM で コンテナ実行 NGC の DIGITS コンテナ イメージを取得して実行
  • 31. 33 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 作成した GPU 搭載 VM にログイン 1. MobaXTerm 等のツールで VM へ SSH 接続 SSH 接続先 VM 作成時に表示された FQDN ユーザー名 nvidia パスワード jetsontx2!!! (びっくりマークは 3 回) VM の FQDN がわからなくなったら ポータルで確認してコピーも可能 PC
  • 32. 34 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 学習データをストレージからコピー Caltech-256 データセットを、Azure ストレージに用意してあります。 仮想マシンと同じリージョン (westus2) にあるので、高速にコピーが可能です。 1. 次のコマンドを実行してダウンロードし、~/data に展開 $ wget https://nvwestus2.blob.core.windows.net/pub/caltech256_1.tar $ mkdir ~/data $ tar xvf caltech256_1.tar -C ~/data
  • 33. 35 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab NGC の DIGITS イメージからコンテナを起動 1. 以下のコマンドでコンテナを起動 • 初回は起動に 5 分ほどかかります。 • 最新のイメージは NC インスタンスでは動作しません。そのためタグ 18.10 を指定します • -v オプションによって、先ほどデータを展開したホストの ~/data ディレクトリが、コンテナの /data にマップされます • -p オプションによって、ホストの 5000 番ポートがコンテナの同じく 5000 番にマップされます VM 作成時に 5000/tcp へのアクセスを許可していますので、これによって外からコンテナの DIGITS へアクセスできるようになります。 $ docker run --runtime=nvidia -d -p 5000:5000 -v ~/data:/data nvcr.io/nvidia/digits:18.10
  • 34. 36 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab NVIDIA GPU CLOUD 数十種類の GPU 対応アプリケーションイメージ 各種ディープラーニング フレームワーク、サードパーティの HPC アプリケーション、NVIDIA の HPC 可視化ツール、数々の パートナー アプリケーション 数週間ではなく、数分でイノベーションを生み出す ソフトウェア環境を構築するための複雑な作業を、大幅に 軽減します。 あらゆる環境からアクセス Volta あるいは Pascal 世代 GPU を搭載した PC、 NVIDIA DGX Systems 製品群、 そして複数のクラウドサービスプロバイダ GPU 対応アプリケーションの総合カタログ
  • 35. 37 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 学習データの作成 モデルの作成 モデルのテスト学習過程の可視化 NVIDIA DIGITS GPUで高速化されたディープラーニング トレーニング システム http://developer.nvidia.com/digits
  • 36. 38 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab NVIDIA DIGITS GPUで高速化されたディープラーニング トレーニング システム ユーザー インターフェース レイヤーの 可視化 学習モデルの 作成 データセット の作成 学習過程の 可視化 Theano GPUGPU HW クラウドGPUクラスタマルチGPU TensorFlow Torch Caffe cuDNN, cuBLAS CUDA 学習 NVCaffe cuDNN, cuBLAS CUDA • 画像分類と物体検出の為の DNN の デザインと可視化の機能を提供 • NVIDIA が最適化したフレームワークで 高速に学習が可能 • ハイパーパラメータのチューニングを強力に サポート • 学習のジョブを簡単にスケジューリング、 リアルタイムに accuracy と loss を監視 • 様々な学習データフォーマット、フレーム ワークに対応
  • 37. 39 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab コンテナが起動したら DIGITS にアクセス このようにプロンプトが戻ってくればコンテナ起動完了 PC あるいは Jetson のブラウザから、DIGITS の URL にアクセス この URL は VM 作成完了時に表示されたもので、ユーザー毎に違います http://コンピューター名.westus2.cloudapp.azure.com:5000/ Digest: sha256:28ed527eebfd01ea1b7e08b5229aba233f38f33da5a4d1c572d46b618414288a Status: Downloaded newer image for nvcr.io/nvidia/digits:18.10 dcaeba19192ed437e0eaa4dd9109b21a2e3516c302f892c21cc00cc3ebeebc89 $ PC
  • 38. 40 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 補足: 「コンテナにログインしたい」ときは? なお、「コンテナにログインして中を見たい」ときは、コンテナでシェルを実行すれば OK 1. まず docker ps コマンドでコンテナ ID を確認して 2. コンテナでシェルを実行 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dcaeba19192e nvcr.io/nvidia/digits:18.10 "/usr/local/bin/nvid…" 28 minutes ago Up 27 minutes 0.0.0.0:5000->5000/tcp, 6006/tcp epic_elion コンテナ ID $ docker exec -it コンテナID /bin/bash root@dcaeba19192e:/workspace# hostname ← ここはコンテナの中 dcaeba19192e
  • 39. 41 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab NVIDIA DIGITS の画面構成 左上の「DIGITS」をクリックすると、 常に最初の画面に戻れます。 (Models タブがクリックされた状態に) 「Datasets」タブ 学習用のデータセットの作成に使います 「Models」タブ ニューラルネットワークの学習を実行するのはこちら
  • 40. 42 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab データセットの作成 Datasets タブを選択後、 New Dataset > Imagesから “Classification”を選択 初回だけログインを求められる ので、ユーザー名を入力 (英数小文字) PC
  • 41. 43 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab デフォルトから変更するのは次の 3 カ所 1. Training Images: /data/256_ObjectCategories/ 2. % for testing: 1 3. Dataset Name: (名前は任意) 最後に Create ボタンを押す (データセット作成に 4 分程度) データセットの作成PC
  • 42. 44 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab データセットを眺めてみる 1. “Explore the db” ボタンをクリック PC
  • 43. 45 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab AlexNet の学習済みモデル 2012 年の ILSVRC で優勝した AlexNet は 6000 万個のパラメーターを持ち、その トレーニングには、当時の GeForce GTX 580 GPU を 2 基使って 5,6 日かかってい ます。当時より遙かに高速な現在の GPU を使っても、本日のハンズオン中にゼロか ら学習するには時間が足りません。 DIGITS には「モデルストア」というトレーニング済みモデルのリポジトリが有り、大きな データセットでトレーニングされた様々なモデルが用意されています。 今日は、ILSVRC2012 データセットでトレーニングされた AlexNet の学習済みモデル をベースにして、これを Caltech-256 用に少し変更して使います。 1. DIGITS の "Pretrained Models" タブで "Retrieve form Model Store" を選びます。 2. Model Store で AlexNet をクリックします。 3. 進捗バーが右端まで達したら、左上の "DIGITS" ボタンでホーム画面に戻ります。 巨人の肩に乗って楽をしましょう PC
  • 44. 46 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab AlexNet の構造 5 段の畳み込み層で特徴を抽出、3 段の全結合層で分類 正しくは 227 conv1 conv2 conv3 conv4 conv5 fc6 fc7 fc8
  • 45. 47 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 画像認識モデルの作成 1. "Models" タブ → "Images" → "Classification" 2. "New Image Classification Model" 画面で 3. "Select Dataset" でデータセットを選択 4. Training epochs: 10 5. Subtract Mena: Pixel PC
  • 46. 48 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab ネットワークを少し変更 1. "Pretrained Networks" タブ → AlexNet → Customize 2. 512 行目の num_output: 1000 を num_output: 258 へ ※ ILSVRC2012 は 1000 クラス、 今日の Caltech-256 + α は 258 クラス Caltech-256 (+α) に合わせて出力層のユニット数を変更 PC
  • 47. 49 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab ネットワークを少し変更 出力層のユニット数を変えた "fc8" 層を再学習 させるには、名前を変える必要があります。 1. 499 行目の "fc8" を "fc8b" 等別の名前に 2. "Visualize" ボタンをクリックしてネットワーク を可視化し、結果を確認 3. "Create" ボタンをクリックして学習を開始 10 - 11 分で完了 再学習する層をリネーム PC
  • 48. 50 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab テスト用データセットで精度を確認 テスト用の画像は、学習用、検証用に使っていない「未知の」画像で なければ意味がありません。 データセット作成時に 1% をテストデータに指定したのはこのためです。 これらは DIGITS が動作するサーバー上に画像ファイルの形で存在し、 そのパス名が test.txt に列挙されています。 この test.txt を PC にダウンロードして、テストに使います。 1. 左上の "DIGITS" ボタンでホームへ戻る 2. "Datasets" タブでデータセットをクリック 3. "Create DB (test)" 欄の "test.txt" を 右クリックしてダウンロード テスト画像ファイル名リストのダウンロード PC
  • 49. 51 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab テスト用画像で推論してみる 1. DIGITS の "Models" タブでモデルを選択 2. PC で先ほどの test.txt を開き、適当な テスト画像ファイル名をコピー 3. モデルの "Test a single image" > "Image Path" にコピーしたファイル名をペースト 4. "Show visualizations and statistics" に チェック 5. "Classify One" をクリック 単一画像のテスト PC
  • 50. 52 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab テスト用画像で推論してみる ファイル名のリスト (test.txt) をアップロードすることで、複数 の画像を一度にテストできます。 1. DIGITS の "Models" タブでモデルを選択 2. モデルの "Test a list of images" > "Upload Image List" > "Upload Image List" で test.txt を指定 3. [任意] "Number of images use from the file" で一度に推論するファイルの数を 指定 4. "Classify Many" をクリック 複数画像のテスト PC
  • 51. 53 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab テスト用画像で推論してみる Top-1 accuracy: 推論結果の最上位がズバリ 正解だった確率 Top-5 accuracy: 推論結果の上位 5 位までに 正解が含まれていた確率 たった 10 エポックのトレーニングにしては高い精 度が出ているはずです。これがファインチューニン グの恩恵です。 複数画像のテスト PC
  • 52. 54 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab まとめ Azure の GPU インスタンス上でNVIDIA GPU Cloud のコンテナイメージを使い NVIDIA DIGITS を 起動しました DIGITS のモデルストアから ILSVRC2012 データセットを充分に学習した AlexNet モデルを取得し、 これをベースに Caltec-256 データセットでファインチューニングを行いました。 テスト用のデータセットで精度を検証し、少ない時間で高い精度が得られたことを確認しました 次のセクションでは、ここでトレーニングしたモデルを Jetson へデプロイして画像分類を試します
  • 53. 55 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab Jetson での推論処理
  • 54. 56 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 学習済みモデルのダウンロード 1. DIGITS へアクセス 2. モデルの学習結果が表示される画面の 下部にある、 Download Model をクリック 3. Jetson でダウンロードした場合は、 ~/Downloads ディレクトリへ保存されます。 4. PC でダウンロードした場合は、USB メモリ経 由、あるいは SSH を使って Jetson の ~/Downloads ディレクトリへコピーします この作業は Jetson あるいは PC 上で行います PC 配布した USB メモリに学習済みモデルを格納してあります。ご利用ください。 /media/nvidia/JETSON/models/Alexnet_Caltech256_Jetson_epoch_10.tar.gz ※ ダウンロードがうまくいかない場合
  • 55. 57 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 学習済みモデルを使った推論処理 1. ダウンロードしたモデルの .tar.gz ファイルを展開 (下記は一例です、緑部分を適切に置き換えてください) 2. モデルを指定して、imagenet-console を実行 この作業は Jetson 上で行います https://github.com/dusty-nv/jetson-inference#loading-custom-models-on-jetson $ cd ~/handson/jetson-inference/build/aarch64/bin/ $ tar zxvf ~/Downloads/20190202-123456-3dfe_epoch_10.0.tar.gz $ ./imagenet-console orange_0.jpg output_0.jpg --prototxt=deploy.prototxt --model=snapshot_iter_1353.caffemodel --labels=labels.txt --input_blob=data --output_blob=softmax
  • 56. 58 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab 学習済みモデルを使った推論処理 前ページで imagenet-console を試しましたが、同様にカメラ版も実行できます。 1. モデルを指定して、imagenet-camera を実行 (下記は一例です、緑部分を適切に置き換えてください) この作業は Jetson 上で行います https://github.com/dusty-nv/jetson-inference#loading-custom-models-on-jetson $ ./imagenet-camera --prototxt=deploy.prototxt --model=snapshot_iter_910.caffemodel --labels=labels.txt --input_blob=data --output_blob=softmax
  • 57. 59 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #JetsonJP #dllab ハンズオン環境の後片付け 1. [貸し出し機のみ] Jetson のハンズオンディレクトリを削除 2. Azure の Cloud Shell で次のコマンドを実行 GPU 搭載 VM とその関連リソース (ディスクや NIC 等) がすべて削除されます。 $ cd $ rm -rf ~/handson $ rm -rf ~/Downloads/* $ az group delete --name jetsonazure --yes