コンテンツにスキップ

推論実行・プロファイルコマンド

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]