CPU 拡張¶
OpenVINO でサポートされていない CPU レイヤーは、共有ライブラリーとして実装できます。CPU 拡張機能として OVMS にロードされていると、モデルの実行に役立ちます。ここで示す例は、OpenVINO™ リポジトリーのコード (拡張テンプレート) に基づいています。
これには、既存の公開モデルの多くに適用できる Relu レイヤーの実証的な実装が含まれています。モデルサーバーに実装が表示されると、カスタム拡張機能の実行に関する情報がログに記録されます。
cpu 拡張ライブラリーの作成¶
モデルサーバーのリポジトリーのルート・ディレクトリーで make cpu_extension BASE_OS=ubuntu
を実行して、ライブラリーをコンパイルします。このライブラリーの実装は、OpenVINO™ リポジトリーのテンプレートとは若干異なっており、SampleCpuExtension directory ディレクトリーで参照できます。
lib
フォルダー内に共有ライブラリーが生成されます。このようなライブラリーは、--cpu_extension
引数を使用してモデルサーバーを実行する際に使用できます。
git clone https://github.com/openvinotoolkit/model_server.git
cd model_server
# replace to 'redhat' if using UBI base image
export BASE_OS=ubuntu
make cpu_extension BASE_OS=${BASE_OS}
resnet50 モデルの準備¶
cpu_extension ライブラリーの使用法を示すために、resnet モデルにいくつかの小さな変更を加えています。このサンプルでは、ReLU レイヤータイプの 1 つを CustomReLU に変更しています。これにより、このレイヤーは cpu_extension を利用します。
mkdir -p resnet50-binary-0001/1
curl https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/2/resnet50-binary-0001/FP32-INT1/resnet50-binary-0001.xml -o resnet50-binary-0001/1/resnet50-binary-0001.xml
curl https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/2/resnet50-binary-0001/FP32-INT1/resnet50-binary-0001.bin -o resnet50-binary-0001/1/resnet50-binary-0001.bin
sed -i '0,/ReLU/s//CustomReLU/' resnet50-binary-0001/1/resnet50-binary-0001.xml