推論実行・プロファイルコマンド¶
run¶
DNNファイルを利用して推論を実行するコマンドです。 推論の結果や処理時間を参照することもできます。
使い方
usage: softneuro run [-o ONPY]... [-p PASSWORD] [--recipe RECIPE][--batch BATCH]
[--ishape SHAPE] [--keep_img_ar PADDINGCOLOR]
[--img_resize_mode RESIZEMODE] [--thread NTHREADS] [--noboost]
[--affinity MASK[@THREAD_INDICES]]
[-r ROUTINE[@LAYER_INDICES]] [-R RPARAMS[@LAYER_INDICES]] [-nobufopt DEVICE]
[--lib LIB] [-l LNUM] [--detail] [--detail2] [--bylayer]
[-dump DUMPDIR] [-dump2 DUMPRID] [-t NTOPS] [-h]
DNN [INPUT [INPUT ...]]
引数
引数名 | 内容 |
---|---|
DNN | 推論を実行するDNNファイルです。 |
INPUT | 推論実行の入力となる画像ファイルまたはnumpyファイルです。 未指定時は[-1, 1]の乱数が入力となります。 |
オプション
オプション | 効果 |
---|---|
-p PASSWORD --pass PASSWORD | パスワードを設定して暗号化したDNNファイルを利用する際に入力するパスワードです。 |
-o ONPY | 結果をnumpyファイルとして出力する際に指定するファイル名です。 |
--recipe RECIPE | 利用するrecipeを指定します。 |
--batch BATCH | 入力を指定したサイズのバッチにして推論処理を実行します。 |
--ishape SHAPE | 入力シェイプを指定したものに変更します。(例:1x224x224x3 ). |
--keep_img_ar PADDINGCOLOR | 入力画像をリサイズする際にアスペクト比を維持させます。デフォルトではアスペクト比を維持しません。リサイズ前後でアスペクト比の違いによって生じるスペースを、PADDINGCOLORで指定した色で埋めます。PADDINGCOLORは例えば '0, 0, 0' のようにRGBで指定します。 |
--img_resize_mode RESIZEMODE | 入力画像をリサイズする際の方式を指定します。 'bilinear' または 'nearest' を指定可能です。デフォルトは 'bilinear' です。 |
--thread NTHREADS | 処理を実行するスレッド数を設定できます。 設定しない場合はCPUのコア数となります。 |
--noboost | ワーカースレッドがタスク待ちをするときに cond wait を用いるようになります。デフォルトでは busy wait を用います。 --noboost が有効の場合、SoftNeuroのCPU占有率が下がり他プロセスが影響されにくくなりますが、推論速度が低下する可能性があります。 |
--affinity MASK[@THREAD_INDICES] | MASK で指定したアフィニティマスクをTHREAD_INDICES で指定したスレッドに適用します。MASK はリトルエンディアンの16進数 (0x..), 2進数 (0b..), または10進数で指定できます。THREAD_INDICES が指定されていない場合は全スレッドにアフィニティマスクが適用されます。THREAD_INDICES の書式についてはsoftneuro help thread_indices で表示されるヘルプを参照してください。 |
-r ROUTINE[@LAYER_INDICES], --routine ROUTINE[@LAYER_INDICES] | ルーチンを設定できます。 設定しない場合はその環境で利用可能なルーチンの中で最も高速なものが選ばれます。ディフォルトはcpuです。 tune後のモデルについては、ルーチンの指定は無視されます。 LAYER_INDICES を設定しない場合、メインネットのすべてのレイヤーに適用されます。LAYER_INDICES の書式についてはsoftneuro help layer_indices で表示されるヘルプを参照してください。 |
-R RPARAMS[@LAYER_INDICES], --rparams RPARAMS[@LAYER_INDICES] | ルーチンパラメータを設定できます。 tune後のモデルについては、ルーチンパラメータの指定は無視されます。 LAYER_INDICES を設定しない場合、メインネットのすべてのレイヤーに適用されます。LAYER_INDICES の書式についてはsoftneuro help layer_indices で表示されるヘルプを参照してください。 |
--nobufopt DEVICE | 指定したデバイスのルーチンにおける使用メモリの最適化をオフにする際に指定します。 |
--lib LIB | オフラインコンパイルしたOpenCLのバイナリファイルを利用する際に指定します。 |
-l LNUM, --loop LNUM | 指定した回数だけ推論を繰り返し実行します。 |
--detail | 詳細な処理時間の統計情報を表示します。 |
--detail2 | より詳細な処理時間の統計情報を表示します。 1レイヤの処理が複数レイヤの処理で構成されている場合に個別の処理時間を表示します。 |
--bylayer | レイヤーごとに処理時間の統計情報を表示します。 |
--dump DUMPDIR | 各レイヤの出力をnumpyファイルで出力する際に指定する出力先ディレクトリです。 |
--dump2 DUMPDIR | 各レイヤのより詳細な出力をnumpyファイルで出力する際に指定する出力先ディレクトリです。 1レイヤの処理が複数レイヤの処理で構成されている場合に個別の処理結果をnpyファイル出力します。 |
-t NTOPS, --top NTOPS | 推論(画像分類)結果のスコアが高いラベルを指定した数だけ表示します。 |
-h, --help | 本コマンドのヘルプを表示します。 |
使用例
$ softneuro run densenet121.dnn --thread 8 --affinity 0xf0@0..3 --affinity 0x0f@4..7 --top 5 --loop 10 shovel.jpg
---------------------------------
Top 5 Labels
---------------------------------
# SCORE LABEL
1 0.9999 shovel
2 0.0001 hatchet
3 0.0000 broom
4 0.0000 swab
5 0.0000 spatula
---------------------------------
Statistics
---------------------------------
FUNCTION AVE(us) MIN(us) MAX(us) #RUN
Dnn_load() 43,070 43,070 43,070 1
Dnn_compile() 28,567 28,567 28,567 1
Dnn_forward() 39,877 39,751 39,983 10
Used memory: 88,403,968 Bytes
---------------------------------
Benchmark
---------------------------------
preprocess: 81 68 68 69 70 64 71 69 70 68
main: 39872 39698 39710 39679 39896 39884 39770 39801 39908 39824
TOTAL: 39955 39767 39778 39749 39968 39949 39842 39873 39981 39894
処理速度はDnn_forward
部分をご覧ください。
AVE、MIN、MAXがそれぞれ-loop
オプションで指定したCALL回数分の平均、最小値、最大値で、#RUN
が処理を実行した回数です。
init¶
プロファイルデータの生成を行います。
使い方
usage: softneuro init [--thread NTHREADS] [--affinity MASK[@THREAD_INDICES]]
[--pass PASSWORD] [--help]
PROF DNN
引数
引数名 | 内容 |
---|---|
PROF | 出力するプロファイルデータのディレクトリ名です。 |
DNN | プロファイルデータ作成に利用するDNNファイルです。 |
オプション
オプション | 効果 |
---|---|
--thread NTHREADS | プロファイルを実行する際のスレッド数を指定します。デフォルトではコア数と同じ数になります。 |
--affinity MASK[@THREAD_INDICES] | MASK で指定したアフィニティマスクをTHREAD_INDICES で指定したスレッドに適用します。MASK はリトルエンディアンの16進数 (0x..), 2進数 (0b..), または10進数で指定できます。THREAD_INDICES が指定されていない場合は全スレッドにアフィニティマスクが適用されます。THREAD_INDICES の書式についてはsoftneuro help thread_indices で表示されるヘルプを参照してください。 |
--pass PASSWORD | パスワードを設定して暗号化されているDNNファイルを利用する際に入力します。 |
-h, --help | 本コマンドのヘルプを表示します。 |
使用例
実行ディレクトリにmobilenet_profが生成されます。
※コマンドライン上への出力はありません
$ softneuro init mobilenet_prof mobilenet.dnn
add¶
プロファイルデータにあるネットワークの各レイヤーに指定のルーチンを設定します。
使い方
usage: softneuro add [--dnn DNN] [--pass PASSWORD] [--ref REF] [--ref-pass REF_PASSWORD] [--help]
PROF [ROUTINE[@LAYER_INDICES]]...
引数
引数名 | 内容 |
---|---|
PROF | 設定の追加を行うプロファイルデータのディレクトリ名です。 |
ROUTINE[@LAYER_INDICES] | ROUTINE で指定したルーチンをLAYER_INDICES で指定したレイヤーに設定します。LAYER_INDICES が指定されていない場合はmainネットワークの全レイヤーに指定したルーチンが設定されます。ROUTINE の書式についてはsoftneuro help routine_desc , LAYER_INDICES の書式についてはsoftneuro help layer_indices で表示されるヘルプを参照してください。 |
オプション
オプション | 効果 |
---|---|
--dnn DNN | プロファイルデータ作成に利用するDNNファイルです。 |
-p, --pass PASSWORD | パスワードを設定して暗号化されているPROFファイルを利用する際に入力します。 |
--ref REF | 通常secretモードで暗号化したDNNファイルに対しては、LAYER_INDICES を指定した操作を行うことができません。しかしsecretモードで暗号化されていないDNNファイルが存在すれば、--ref オプションでそのDNNファイルを参照することで、LAYER_INDICES を指定した操作を行うことが可能となります。 |
--ref-pass REF_PASSWORD | --ref オプションで指定した参考用のDNNファイルに対するパスワードです。参考用のDNNファイルが通常の(secretモードでない)暗号化を施されていた場合に必要となります。 |
-help | 本コマンドのヘルプを表示します。 |
使用例
mobilenet_profの持つモデルに対して、mainネットワークの各レイヤーにcpu:qint8
のルーチンが設定されます。(cpuのqint8ルーチンがあるレイヤーのみ)
$ softneuro add mobilenet_prof cpu:qint8
adding routines...done.
$ softneuro status mobilenet_prof
[preprocess]
# NAME ROUTINE TIME DESC PARAMS
0 ? (source)
1 ? (madd)
2 ? (sink)
?
[main]
# NAME ROUTINE TIME DESC PARAMS
0 input_1 (source)
1 conv1 (conv2) cpu:qint8 (9)
2 conv_dw_1 (depthwise_conv2) cpu:qint8 (3)
3 conv_pw_1 (conv2) cpu:qint8 (9)
4 conv_dw_2 (depthwise_conv2) cpu:qint8 (3)
5 conv_pw_2 (conv2) cpu:qint8 (9)
6 conv_dw_3 (depthwise_conv2) cpu:qint8 (3)
7 conv_pw_3 (conv2) cpu:qint8 (9)
8 conv_dw_4 (depthwise_conv2) cpu:qint8 (3)
9 conv_pw_4 (conv2) cpu:qint8 (9)
10 conv_dw_5 (depthwise_conv2) cpu:qint8 (3)
11 conv_pw_5 (conv2) cpu:qint8 (9)
12 conv_dw_6 (depthwise_conv2) cpu:qint8 (3)
13 conv_pw_6 (conv2) cpu:qint8 (9)
14 conv_dw_7 (depthwise_conv2) cpu:qint8 (3)
15 conv_pw_7 (conv2) cpu:qint8 (9)
16 conv_dw_8 (depthwise_conv2) cpu:qint8 (3)
17 conv_pw_8 (conv2) cpu:qint8 (9)
18 conv_dw_9 (depthwise_conv2) cpu:qint8 (3)
19 conv_pw_9 (conv2) cpu:qint8 (9)
20 conv_dw_10 (depthwise_conv2) cpu:qint8 (3)
21 conv_pw_10 (conv2) cpu:qint8 (9)
22 conv_dw_11 (depthwise_conv2) cpu:qint8 (3)
23 conv_pw_11 (conv2) cpu:qint8 (9)
24 conv_dw_12 (depthwise_conv2) cpu:qint8 (3)
25 conv_pw_12 (conv2) cpu:qint8 (9)
26 conv_dw_13 (depthwise_conv2) cpu:qint8 (3)
27 conv_pw_13 (conv2) cpu:qint8 (9)
28 global_average_pooling2d_1 (global_average_pool)
29 reshape_1 (reshape) cpu:qint8 (1)
30 conv_preds (conv2) cpu:qint8 (9)
31 act_softmax (softmax)
32 reshape_2 (reshape) cpu:qint8 (1)
33 sink_0 (sink)
?
ROUTINES cpu:qint8
TOTAL ?
rm¶
プロファイルデータにある各レイヤーから計測結果を含むルーチン設定情報を削除します。
使い方
usage: softneuro rm [--dnn DNN] [--pass PASSWORD] [--ref REF] [--ref-pass REF_PASSWORD] [--help] PROF [ROUTINE@IDS]...
引数
引数名 | 内容 |
---|---|
PROF | 設定を削除するプロファイルデータのディレクトリ名です。 |
ROUTINE[@LAYER_INDICES] | ROUTINE で指定したルーチン設定をLAYER_INDICES で指定したレイヤーから削除します。ROUTINE が指定されていない場合はmainネットワークの全レイヤーからルーチン設定を削除します。LAYER_INDICES のみが指定されていない場合はmainネットワークの全レイヤーから指定したルーチン設定が削除されます。ROUTINE の書式についてはsoftneuro help routine_desc , LAYER_INDICES の書式についてはsoftneuro help layer_indices で表示されるヘルプを参照してください。 |
オプション
オプション | 効果 |
---|---|
--dnn DNN | プロファイルデータ作成に利用するDNNファイルです。 |
-p, --pass PASSWORD | パスワードを設定して暗号化されているPROFファイルを利用する際に入力します。 |
--ref REF | 通常secretモードで暗号化したDNNファイルに対しては、LAYER_INDICES を指定した操作を行うことができません。しかしsecretモードで暗号化されていないDNNファイルが存在すれば、--ref オプションでそのDNNファイルを参照することで、LAYER_INDICES を指定した操作を行うことが可能となります。 |
--ref-pass REF_PASSWORD | --ref オプションで指定した参考用のDNNファイルに対するパスワードです。参考用のDNNファイルが通常の(secretモードでない)暗号化を施されていた場合に必要となります。 |
--help | 本コマンドのヘルプを表示します。 |
使用例
mobilenet_profのモデルから、mainネットワークの各レイヤーが持つルーチン設定(ROUTINE
列)を削除します。
$ softneuro rm mobilenet_prof
removing routines...done.
$ softneuro status mobilenet_prof
[preprocess]
# NAME ROUTINE TIME DESC PARAMS
0 ? (source)
1 ? (madd)
2 ? (sink)
?
[main]
# NAME ROUTINE TIME DESC PARAMS
0 input_1 (source)
1 conv1 (conv2)
2 conv_dw_1 (depthwise_conv2)
3 conv_pw_1 (conv2)
4 conv_dw_2 (depthwise_conv2)
5 conv_pw_2 (conv2)
6 conv_dw_3 (depthwise_conv2)
7 conv_pw_3 (conv2)
8 conv_dw_4 (depthwise_conv2)
9 conv_pw_4 (conv2)
10 conv_dw_5 (depthwise_conv2)
11 conv_pw_5 (conv2)
12 conv_dw_6 (depthwise_conv2)
13 conv_pw_6 (conv2)
14 conv_dw_7 (depthwise_conv2)
15 conv_pw_7 (conv2)
16 conv_dw_8 (depthwise_conv2)
17 conv_pw_8 (conv2)
18 conv_dw_9 (depthwise_conv2)
19 conv_pw_9 (conv2)
20 conv_dw_10 (depthwise_conv2)
21 conv_pw_10 (conv2)
22 conv_dw_11 (depthwise_conv2)
23 conv_pw_11 (conv2)
24 conv_dw_12 (depthwise_conv2)
25 conv_pw_12 (conv2)
26 conv_dw_13 (depthwise_conv2)
27 conv_pw_13 (conv2)
28 global_average_pooling2d_1 (global_average_pool)
29 reshape_1 (reshape)
30 conv_preds (conv2)
31 act_softmax (softmax)
32 reshape_2 (reshape)
33 sink_0 (sink)
?
TOTAL ?
?
reset¶
プロファイルデータにある各レイヤーの計測結果を初期化します。
使い方
usage: softneuro reset [--dnn DNN] [--pass PASSWORD] [--ref REF] [--ref-pass REF_PASSWORD] [--help]
PROF [ROUTINE@IDS]...
引数
引数名 | 内容 |
---|---|
PROF | 測定結果を削除するプロファイルデータのディレクトリ名です。 |
ROUTINE[@LAYER_INDICES] | ROUTINE で指定したルーチンの測定結果をLAYER_INDICES で指定したレイヤーから削除します。ROUTINE が指定されていない場合はmainネットワークの全レイヤーから測定結果を削除します。LAYER_INDICES のみが指定されていない場合はmainネットワークの全レイヤーから指定したルーチンの測定結果が削除されます。ROUTINE の書式についてはsoftneuro help routine_desc , LAYER_INDICES の書式についてはsoftneuro help layer_indices で表示されるヘルプを参照してください。 |
オプション
オプション | 効果 |
---|---|
--dnn DNN | プロファイルデータ作成に利用するDNNファイルです。 |
-p, --pass PASSWORD | パスワードを設定して暗号化されているPROFファイルを利用する際に入力します。 |
--ref REF | 通常secretモードで暗号化したDNNファイルに対しては、LAYER_INDICES を指定した操作を行うことができません。しかしsecretモードで暗号化されていないDNNファイルが存在すれば、--ref オプションでそのDNNファイルを参照することで、LAYER_INDICES を指定した操作を行うことが可能となります。 |
--ref-pass REF_PASSWORD | --ref オプションで指定した参考用のDNNファイルに対するパスワードです。参考用のDNNファイルが通常の(secretモードでない)暗号化を施されていた場合に必要となります。 |
--help | 本コマンドのヘルプを表示します。 |
使用例
mobilenet_profのモデルから、mainネットワークの各レイヤーの計測結果(TIME
列以降)を削除します。
$ softneuro reset mobilenet_prof
resetting routines...done.
$ softneuro status mobilenet_prof
[preprocess]
# NAME ROUTINE TIME DESC PARAMS
0 ? (source)
1 ? (madd) cpu (3)
2 ? (sink)
?
[main]
# NAME ROUTINE TIME DESC PARAMS
0 input_1 (source)
1 conv1 (conv2) cpu (15)
2 conv_dw_1 (depthwise_conv2) cpu (3)
3 conv_pw_1 (conv2) cpu (47)
4 conv_dw_2 (depthwise_conv2) cpu (3)
5 conv_pw_2 (conv2) cpu (47)
6 conv_dw_3 (depthwise_conv2) cpu (3)
7 conv_pw_3 (conv2) cpu (47)
8 conv_dw_4 (depthwise_conv2) cpu (3)
9 conv_pw_4 (conv2) cpu (47)
10 conv_dw_5 (depthwise_conv2) cpu (3)
11 conv_pw_5 (conv2) cpu (47)
12 conv_dw_6 (depthwise_conv2) cpu (3)
13 conv_pw_6 (conv2) cpu (47)
14 conv_dw_7 (depthwise_conv2) cpu (3)
15 conv_pw_7 (conv2) cpu (47)
16 conv_dw_8 (depthwise_conv2) cpu (3)
17 conv_pw_8 (conv2) cpu (47)
18 conv_dw_9 (depthwise_conv2) cpu (3)
19 conv_pw_9 (conv2) cpu (47)
20 conv_dw_10 (depthwise_conv2) cpu (3)
21 conv_pw_10 (conv2) cpu (47)
22 conv_dw_11 (depthwise_conv2) cpu (3)
23 conv_pw_11 (conv2) cpu (47)
24 conv_dw_12 (depthwise_conv2) cpu (3)
25 conv_pw_12 (conv2) cpu (47)
26 conv_dw_13 (depthwise_conv2) cpu (3)
27 conv_pw_13 (conv2) cpu (47)
28 global_average_pooling2d_1 (global_average_pool) cpu (1)
29 reshape_1 (reshape) cpu (1)
30 conv_preds (conv2) cpu (47)
31 act_softmax (softmax) cpu (1)
32 reshape_2 (reshape) cpu (1)
33 sink_0 (sink)
?
ROUTINES cpu
TOTAL ?
status¶
プロファイルデータにある各レイヤーのルーチン設定・計測結果の情報を表示します。
使い方
usage: softneuro status [--dnn DNN] [--pass PASSWORD] [--ref REF] [--ref-pass REF_PASSWORD] [--at INDEX]
[--estimate MODE] [--csv] [--help]
PROF
引数
引数名 | 内容 |
---|---|
PROF | 情報を表示するプロファイルデータのディレクトリ名です。 |
オプション
オプション | 効果 |
---|---|
--dnn DNN | プロファイルデータ作成に利用するDNNファイルです。 |
-p, --pass PASSWORD | パスワードを設定して暗号化されているPROFファイルを利用する際に入力します。 |
--ref REF | 通常secretモードで暗号化したDNNファイルに対しては、LAYER_INDICES を指定した操作を行うことができません。しかしsecretモードで暗号化されていないDNNファイルが存在すれば、--ref オプションでそのDNNファイルを参照することで、LAYER_INDICES を指定した操作を行うことが可能となります。 |
--ref-pass REF_PASSWORD | --ref オプションで指定した参考用のDNNファイルに対するパスワードです。参考用のDNNファイルが通常の(secretモードでない)暗号化を施されていた場合に必要となります。 |
-@, --at INDEX | 指定した位置のレイヤーに関する情報のみを表示する際に指定します。 |
--estimate MODE | 表示するprofile 結果の処理時間(TIME)の推定モードを指定できます。robust (外れ値を除いた平均), min (最小値), ave (全体の平均)から選択できます。デフォルトはrobust です。 |
--csv | CSV形式で情報を表示する際に指定します。 |
--help | 本コマンドのヘルプを表示します。 |
使用例
profile
コマンドで計測を行った後のプロファイルデータを指定すると、以下のような計測結果が表示されます。
$ softneuro status mobilenet_prof
[preprocess]
# NAME ROUTINE TIME DESC PARAMS
0 ? (source)
1 ? (madd) cpu (3) 28 cpu/avx {"ops_in_task":16384}
2 ? (sink)
28
[main]
# NAME ROUTINE TIME DESC PARAMS
0 input_1 (source)
1 conv1 (conv2) cpu (15) 213 cpu/owc64_avx {"cache":8192,"task_ops":131072}
2 conv_dw_1 (depthwise_conv2) cpu (3) 110 cpu/owc32_avx {"cache":8192,"task_ops":65536}
3 conv_pw_1 (conv2) cpu (47) 195 cpu/m1x1l_avx {"cache":1048576,"oxynum_in_task":144}
4 conv_dw_2 (depthwise_conv2) cpu (3) 60 cpu/owc32_avx {"cache":8192,"task_ops":32768}
5 conv_pw_2 (conv2) cpu (47) 177 cpu/m1x1l_avx {"cache":1048576,"oxynum_in_task":72}
6 conv_dw_3 (depthwise_conv2) cpu (3) 113 cpu/owc32_avx {"cache":8192,"task_ops":65536}
7 conv_pw_3 (conv2) cpu (47) 328 cpu/m1x1l_avx {"cache":1048576,"oxynum_in_task":36}
8 conv_dw_4 (depthwise_conv2) cpu (3) 40 cpu/owc32_avx {"cache":8192,"task_ops":32768}
9 conv_pw_4 (conv2) cpu (47) 167 cpu/m1x1l_avx {"cache":1048576,"oxynum_in_task":96}
10 conv_dw_5 (depthwise_conv2) cpu (3) 68 cpu/owc32_avx {"cache":8192,"task_ops":131072}
11 conv_pw_5 (conv2) cpu (47) 320 cpu/m1x1l_avx {"cache":1048576,"oxynum_in_task":96}
12 conv_dw_6 (depthwise_conv2) cpu (3) 23 cpu/owc32_avx {"cache":8192,"task_ops":65536}
13 conv_pw_6 (conv2) cpu (47) 164 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":16}
14 conv_dw_7 (depthwise_conv2) cpu (3) 34 cpu/owc32_avx {"cache":8192,"task_ops":65536}
15 conv_pw_7 (conv2) cpu (47) 313 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":16}
16 conv_dw_8 (depthwise_conv2) cpu (3) 34 cpu/owc32_avx {"cache":8192,"task_ops":65536}
17 conv_pw_8 (conv2) cpu (47) 313 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":16}
18 conv_dw_9 (depthwise_conv2) cpu (3) 34 cpu/owc32_avx {"cache":8192,"task_ops":65536}
19 conv_pw_9 (conv2) cpu (47) 313 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":16}
20 conv_dw_10 (depthwise_conv2) cpu (3) 34 cpu/owc32_avx {"cache":8192,"task_ops":65536}
21 conv_pw_10 (conv2) cpu (47) 313 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":16}
22 conv_dw_11 (depthwise_conv2) cpu (3) 34 cpu/owc32_avx {"cache":8192,"task_ops":65536}
23 conv_pw_11 (conv2) cpu (47) 313 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":16}
24 conv_dw_12 (depthwise_conv2) cpu (3) 14 cpu/owc32_avx {"cache":8192,"task_ops":65536}
25 conv_pw_12 (conv2) cpu (47) 169 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":16}
26 conv_dw_13 (depthwise_conv2) cpu (3) 19 cpu/owc32_avx {"cache":8192,"task_ops":32768}
27 conv_pw_13 (conv2) cpu (47) 336 cpu/m1x1l2_avx {"cache":1048576,"oxynum_in_task":8}
28 global_average_pooling2d_1 (global_average_pool) cpu (1) 13 cpu/naive {}
29 reshape_1 (reshape) cpu (1) 0 cpu {}
30 conv_preds (conv2) cpu (47) 23 cpu/owc64_avx {"cache":8192,"task_ops":32768}
31 act_softmax (softmax) cpu (1) 21 cpu/naive {}
32 reshape_2 (reshape) cpu (1) 0 cpu {}
33 sink_0 (sink)
4,308
ROUTINES cpu
TOTAL 4,336
profile¶
プロファイルデータを利用したプロファイルを実行します。
使い方
usage: softneuro profile [--dnn DNN] [--pass PASSWORD] [--help] PROF
引数
引数名 | 内容 |
---|---|
PROF | プロファイル実行に利用するプロファイルデータのディレクトリ名です。 |
オプション
オプション | 効果 |
---|---|
--dnn DNN | プロファイルデータ作成に利用するDNNファイルです。 |
-p, --pass PASSWORD | パスワードを設定して暗号化されているPROFファイルを利用する際に入力します。 |
--help | 本コマンドのヘルプを表示します。 |
使用例
init
コマンドで生成したプロファイルデータを指定して実行することで、各レイヤーで利用可能なルーチンの処理時間を測定してプロファイルデータに保存します。
$ softneuro prof mobilenet_prof
profiling...100.0% [00:01]
tune¶
DNNファイルのチューニングを実行します。
プロファイル実行済みのプロファイルデータを指定しない場合はプロファイルの実行から処理を開始します。
使い方
usage: softneuro tune [--prof PROF] [--recipe RECIPE] [--thread NTHREADS]
[--affinity MASK[@THREAD_INDICES]] [--pass PASSWORD]
[--routine ROUTINE[@IDS]]... [--estimate MODE] [--help]
INPUT OUTPUT
引数
引数名 | 内容 |
---|---|
INPUT | 入力となるチューニング前のDNNファイルです。 |
OUTPUT | 出力されるチューニング後のDNNファイル名です。 |
オプション
オプション | 効果 |
---|---|
--prof PROF | チューニングに利用するプロファイルデータのディレクトリ名です。 |
--recipe RECIPE | チューニングに利用するレシピデータのディレクトリ名です。 |
--thread NTHREADS | プロファイル実行時のスレッド数を指定します。プロファイルデータが指定されている場合は無視されます。 |
--affinity MASK[@THREAD_INDICES] | MASK で指定したアフィニティマスクをTHREAD_INDICES で指定したスレッドに適用します。MASK はリトルエンディアンの16進数 (0x..), 2進数 (0b..), または10進数で指定できます。THREAD_INDICES が指定されていない場合は全スレッドにアフィニティマスクが適用されます。THREAD_INDICES の書式についてはsoftneuro help thread_indices で表示されるヘルプを参照してください。 |
-p, --pass PASSWORD | パスワードを設定して暗号化されているDNNファイルを利用する際に入力します。 |
-r, --routine ROUTINE[@LAYER_INDICES] | チューニングの前にROUTINE で指定したルーチンを利用してLAYER_INDICES で指定したレイヤーのプロファイルを実行します。LAYER_INDICES が指定されていない場合はmainネットワークの全レイヤーに指定したルーチンが設定されます。ROUTINE の書式についてはsoftneuro help routine_desc , LAYER_INDICES の書式についてはsoftneuro help layer_indices で表示されるヘルプを参照してください。 |
--estimate MODE | 処理時間の推定モードを設定します。robust (デフォルト), min , ave から選択できます。 |
-h, --help | 本コマンドのヘルプを表示します。 |
使用例
実行ディレクトリにvgg16_tuned.dnnが生成されます。
$ softneuro tune vgg16.dnn vgg16_tuned.dnn
adding cpu routines...done.
profiling...100.0% [00:56] ETA[00:00]
[preprocess]
# NAME ROUTINE TIME DESC PARAMS
0 ? (source)
1 ? (permute) cpu (1) 155 cpu/naive {}
2 ? (madd) cpu (3) 29 cpu/avx {"ops_in_task":16384}
3 ? (sink)
184
[main]
# NAME ROUTINE TIME DESC PARAMS
0 input_1 (source)
1 block1_conv1 (conv2) cpu (67) 1,239 cpu/owc64_avx {"cache":8192,"task_ops":131072}
:
TOTAL 59,463
OpenCLを利用したGPUでのtune
$ softneuro tune --routine opencl/fast@2..23 --routine cpu@1,24 vgg16.dnn vgg16_tuned.dnn
profiling..100.0% [01:23] ETR[00:00]
OpenCL(float16)を利用したGPUでのtune
$ softneuro tune --routine opencl:float16/fast@2..23 --routine cpu@1,24 vgg16.dnn vgg16_tuned.dnn
profiling..100.0% [01:23] ETR[00:00]
CUDAを利用したGPUでのtune
$ softneuro tune --routine cuda/fast@2..23 --routine cpu@1,24 vgg16.dnn vgg16_tuned.dnn
profiling..100.0% [01:23] ETR[00:00]
CUDA(float16)を利用したGPUでのtune
$ softneuro tune --routine cuda:float16/fast@2..23 --routine cpu@1,24 vgg16.dnn vgg16_tuned.dnn
profiling..100.0% [01:23] ETR[00:00]
量子化8bit整数を利用したCPUでのtune
$ softneuro tune --routine cpu:qint8/fast vgg16.dnn vgg16_tuned.dnn
profiling..100.0% [01:23] ETR[00:00]