モデル #
Actdk によるコンパイル #
actdk compile
を実行すると model.h
と model.py
と libmodel.so
が作成されます。
libmodel.so
は nnoir ファイルで表現される深層学習モデルを実行するための共有ライブラリです。
model.h
、model.py
はそのインタフェースです。
model.h
#
関数名は nnoir ファイル内に定義されている訓練済みモデルの名称がそのまま利用されます。 他の深層学習フレームワークに依存しない通常の C 関数として実装されています。
もしmodel
ディレクトリに複数の nnoir ファイルが存在する場合、それぞれに対しエントリポイントとなる関数が生成されます。
複数の nnoir ファイルをmodel
ディレクトリ以下に配置して変換する場合、
同一名称を持つ訓練済みモデルが定義された nnoir ファイルを複数配置すると変換できません。
入力の型は元々の計算グラフの入力と同等ですが、float の 1 次元配列になります。
制限事項 #
actdk compile
で生成されたlibmodel.so
はスタブコードであるため, 以下の制限があります:
- 並列実行時の結果は保証されません。
- Raspberry Pi の GPU を利用した高速化は施されません。
ビルドイメージのアップロード後、libmodel.so
は再ビルドされ、Raspberry Pi の GPU を利用するものに差し替えられます。
差し替えられたlibmodel.so
は排他制御されるため並列実行時の結果は保証されます。
model.py
#
model.py
は Python からlibmodel.so
を利用するためのインタフェースを提供します。
エントリポイントの入出力は numpy の配列で、形状は nnoir 生成時の多次元配列形状が保持されます。
Actcast のビルドサーバによるコンパイル #
アップロードしたビルドイメージは Actcast にて再ビルドされ、libmodel.so
が高速なものに差し替えられます。