Ambarella エラーをトラブルシューティングする - Amazon SageMaker

Ambarella エラーをトラブルシューティングする

SageMaker Neo では、圧縮された tar ファイルにモデルをパッケージ化する必要があります (*.tar.gz). Ambarella のデバイスでは、コンパイルに送る前に、まず圧縮される tar ファイルの中に追加のファイルを含める必要があります。Ambarella ターゲットのモデルをコンパイルする場合は、圧縮された tar ファイルに次のファイルを含めます。 SageMaker Neo:

  • でサポートされているフレームワークを使ったトレーニング済みモデル SageMaker ネオ

  • JSON 設定ファイル

  • キャリブレーションイメージ

例えば、圧縮された tar ファイルの内容は、次の例のようになります。

├──amba_config.json ├──calib_data | ├── data1 | ├── data2 | ├── . | ├── . | ├── . | └── data500 └──mobilenet_v1_1.0_0224_frozen.pb

このディレクトリは、次のように構成されています。

  • amba_config.json: 設定ファイル

  • calib_data: キャリブレーションイメージを含むフォルダ

  • mobilenet_v1_1.0_0224_frozen.pb: TensorFlow フリーズグラフとして保存されたモデル

でサポートされているフレームワークの詳細については SageMaker Neo、見てサポートされるフレームワーク

設定ファイルを設定する

設定ファイルは、モデルのコンパイルのために Ambarella ツールチェーンが必要とする情報を提供します。設定ファイルは JSON ファイルとして保存し、ファイル名は「*config.json」で終わる必要があります。以下の表は、設定ファイルの内容を示しています。

キー 説明

inputs

入力レイヤーを属性にマッピングするディクショナリ。

{inputs:{"data":{...},"data1":{...}}}

"data"

入力レイヤー名。注:「data」は、入力レイヤーのラベルとして使うことができる名前の例です。

"data"

shape

モデルの入力の形状を記述します。これは次の規則と同じものに従います SageMaker Neo は使用します。

「形状」: 「1,3,224,224"

filepath

キャリブレーションイメージを含むディレクトリへの相対パス。バイナリファイル、または JPG や PNG などのイメージファイルを使うことができます。

"filepath": "calib_data/"

colorformat

モデルが想定するカラー形式。これは、イメージをバイナリに変換する際に使われます。サポートされる値。[RGB、BGR]。デフォルトは RGB です。

"colorformat":"RGB"

mean

入力から減算される平均値。1 つの値、または値のリストを指定できます。平均をリストとして指定する場合、エントリの数は入力のチャネルディメンションと一致させる必要があります。

"mean":128.0

scale

入力の正規化に使われるスケール値。1 つの値、または値のリストを指定できます。スケールをリストとして指定する場合、エントリの数は入力のチャネルディメンションと一致させる必要があります。

「スケール」: 255.0

以下は、サンプルの設定ファイルです。

{ "inputs": { "data": { "shape": "1, 3, 224, 224", "filepath": "calib_data/", "colorformat": "RGB", "mean":[128,128,128], "scale":[128.0,128.0,128.0] } } }

キャリブレーションイメージ

キャリブレーションイメージを指定することで、トレーニング済みモデルを量子化します。モデルを量子化すると、Ambarella システムオンザチップ (SoC) の CVFlow エンジンのパフォーマンスが向上します。Ambarella ツールチェーンは、キャリブレーションイメージを使ってモデルの各レイヤーを量子化する方法を決定し、最適なパフォーマンスと精度を達成します。各レイヤーは、別個に INT8 形式または INT16 形式に量子化されます。量子化後、最終モデルでは INT8 レイヤーと INT16 レイヤーが混在します。

イメージはいくつ使えばよいですか。

モデルが処理すると予想されるシーンのタイプを代表する 100~200 のイメージを含めることが推奨されます。モデルのコンパイル時間は、入力ファイル内のキャリブレーションイメージの数に応じて直線的に増加します。

推奨されるイメージ形式は何ですか。

キャリブレーションイメージは、未加工のバイナリ形式または JPG や PNG などのイメージ形式にします。

キャリブレーションフォルダでイメージとバイナリファイルが混在していてもかまいません。キャリブレーションフォルダにイメージとバイナリファイルの両方が含まれている場合、まず、ツールチェーンはイメージをバイナリファイルに変換します。変換が完了すると、新しく生成されたバイナリファイルと、フォルダに元からあったバイナリファイルを使います。

最初にイメージをバイナリ形式に変換できますか。

はい。OpenCV または PIL のようなオープンソースパッケージを使って、イメージをバイナリ形式に変換できます。トレーニング済みモデルの入力レイヤーの要件を満たすように、イメージをトリミングしてサイズ変更します。

平均とスケール

Ambarella ツールチェーンには、平均とスケールの前処理オプションを指定できます。これらのオペレーションはネットワークに埋め込まれ、各入力の推論時に適用されます。平均またはスケールを指定する場合は、処理済みのデータを指定しないでください。具体的には、平均を減算したデータや、スケーリングを適用したデータは提供しないでください。

コンパイルログを確認する

Ambarella デバイスのコンパイルログを確認する方法については、以下を参照してください。コンパイルログを確認する