HiSilicon用のYOLO/ResNetの最適化により、ピークパフォーマンスのロックを解除

HiSilicon NPUでyolo/resnetを最適化するという目標には、特定の最適化ワークフローが必要です。このワークフローはperforを後押しします

ロック解除

HiSilicon NPUでyolo/resnetを最適化するという目標には、特定の最適化ワークフローが必要です。このワークフローにより、パフォーマンスと効率が向上します。コアツールのセットを使用して、モデルをAscendプラットフォーム用に準備します。

HiSilicon効率のための重要なツール

  • ONNX:トレーニングされたモデルの中間形式。
  • アセントテンソルコンパイラ (ATC):ONNXモデルを強力なAscendモデルに変換します。
  • INT8量子化:モデルの処理効率が向上します。
  • AIPP:Ascend NPUでモデルを加速し、効率を向上させます。

Yolov7モデルは素晴らしい例です。HiSiliconハードウェアでyolov7モデルの高効率を実現できます。このプロセスにより、AscendモデルのHiSilicon Ascendプラットフォームのフルパワーのロックが解除されます。

重要なポイント

  • 最初にモデルをONNX形式に変換します。これにより、Ascendプラットフォームの準備が整います。
  • Ascend Tensor Compiler (ATC) を使用して、ONNXモデルを特別な '. om' ファイルに変更します。このファイルは、Ascendチップで最も効果的です。
  • モデルにINT8量子化を適用します。これにより、実行がはるかに速くなり、使用電力が少なくなります。
  • AI前処理 (AIPP) を使用します。これは、Ascendチップがイメージタスクを実行するのに役立ち、モデルをさらに高速化します。
  • モデルのパフォーマンスを確認します。すべての部品がNPU最高のスピードとパワーの使用のために。

HISILICONのYOLO/RESNETの楽観化:

楽観化

Yolo/resnetを最適化する最初のステップはクリーンですモデルの移行を使用します。トレーニング済みのPyTorchまたはTensorFlowモデルをONNX (Open Neural Network Exchange) 形式に変換する必要があります。このフォーマットは、Ascendプラットフォームへのユニバーサルブリッジとして機能します。

ONNXへのモデル変換:

単純なPythonスクリプトを使用してPyTorchモデルをエクスポートできます。このスクリプトは、モデルの操作をトレースし、それらを単一に保存しますを使用します。Onnxファイルを作成します。

# Torch.onnx.exportを使用してモデルを変換する
Torch.onnx.export (
モデル、 # your PyTorchモデル
Sample_input,# aサンプル入力テンソル
"Model.onnx", # 出力ファイル名
Opset_version = 17、 # 使用するONNXバージョン
Input_name =['input'],
Output_names =['output']
)

エクスポート後、次のようなツールを使用する必要があります。Onnx-simpifierグラフをきれいにします。TensorFlowユーザーは、移行の課題に直面することがあります。一般的な問題は次のとおりです。

  • 無効なオペレータ名: 次のようなエラーValueError: '/conv_in/Conv_pad/' は有効なルートスコープ名ではありませんが発生する可能性があります。代替ツールを使用すると、演算子の名前を変更することでこれが解決されることがよくあります。
  • 大きなテンソルサイズ: モデル付き2GBより大きいテンソル変換が失敗する可能性があります。これを処理するには、モデルアーキテクチャを調整する必要があります。

これらの手順により、モデルのスムーズな移行が保証されます。

YOLOv7モデルの適応:

Yolov7モデルのような最新のオブジェクト検出モデルには特別な注意が必要です。Yolov7アーキテクチャにはユニークなレイヤーがあります。HiSiliconプラットフォームにyolov7モデルを適合させる必要があります。この適応は、yolov7モデルの移行に不可欠です。Yolov7モデルを適切に処理することで、高精度な検出が保証されます。このプロセスは、Ascendプラットフォーム用のyolov7モデルを準備します。あなたの目標は、ディープラーニングベースのオブジェクト検出のためのyolov7モデルの移行を成功させることです。Yolov7モデルは強力なオブジェクト検出ツールです。このyolov7モデルの移行は、パフォーマンスの鍵です。Yolov7モデルは、各オブジェクトを見つけるのに役立ちます。Yolov7モデルの適応は、検証プロセスの一部です。

NPUオペレータサポート分析:

次の移行ステップは、演算子の検証です。HiSilicon NPUはあなたのモデルのすべてのオペレータを支えないかもしれません。Ascendハードウェアがサポートしている演算子を確認する必要があります。この分析は、HiSiliconのyolo/resnetを最適化するために不可欠です。HuaweiのCANNツールキットアセンドプラットフォーム用このためのツールを提供しています。

  • The モデルユーザビリティチェッカーモデルでサポートされていない演算子を識別できます。
  • モデルがNPUとCPUの間でどのように分割されるかを示します。より多くの分割はパフォーマンスを損なう可能性があります。

この分析は、HiSiliconハードウェアの効率を最大化するのに役立ちます。サポートされていない演算子を見つけた場合は、モデルのグラフを書き直すを使用します。これにより、モデルのすべての部分がAscend NPUで実行されます。このグラフ移行により、パフォーマンスと効率が向上します。Ascendプラットフォームでの完全なNPUオフロードが主な目的です。この最後の移行ステップにより、オブジェクト検出モデルのHiSilicon Ascendプラットフォームのフルパワーが解除されます。これにより、HiSiliconとAscendでyolov7アプリケーションの効率が向上します。Yolov7モデルは、あらゆる物体の高速検出を実行できるようになりました。Ascendでのyolov7モデルのパフォーマンスは優れています。これでyolov7モデルの準備が整いました。Yolov7モデルは大きい検出を提供します。Yolov7モデルは最適化されています。Yolov7モデルが完成しました。

コアの楽観化とパフォーマンス:

コア

あなたはきれいなONNXモデルを持っています。次の移行ステップでは、Ascendプラットフォームに変換します。この段階では、コアパフォーマンスの向上に焦点を当てています。Ascend Tensor Compiler (ATC) と量子化を使用して、Hisiliconハードウェア上のオブジェクト検出モデルの最大効率と電力効率のロックを解除します。このプロセスはのために不可欠ですYolo/resnetパフォーマンスの最適化を使用します。

ATCモデル変換:

アセンドTensorコンパイラ (ATC) は、この移行のための主要なツールです。ONNXモデルをを使用します。Omファイルを作成します。このファイルは、Ascendプロセッサ用に高度に最適化されています。コマンドラインからATCを実行します。

典型的なATCコマンドは次のようになります。

Atc -- model = yolov7.onnx \
-- Framework = 5 \
-- Output = yolov7_bs1 \
-- Input_format = NCHW \
-- Input_shape = "images:1,3,640,640" \
-- Soc_version = Ascend310 \
-- Log = info

主なパラメータは、Ascendプロセッサの変換をガイドします。

  • -- モデル: 入力を指定します。を使用します。Onnxモデルファイル。
  • -- Framework: 使用5ONNXモデルのため。
  • -- 出力: 出力の名前を定義しますを使用します。Omモデル。
  • -- Soc_version: 特定のHisilicon SOCをターゲットにします。Ascend310を使用します。これはパフォーマンスにとって不可欠です。
  • -- Input_shape: モデルの固定入力サイズを設定します。

あなたは固定を提供する必要がありますInput_shapeあなたのモデルのため。オブジェクト検出用のモデルは、可変の入力寸法を有することがある。ATCツールには、Ascendプロセッサで最高のパフォーマンスを発揮するために静的な形状が必要です。この手順により、移行を成功させ、Hisiliconプラットフォームでの推論中のエラーを防ぎます。

INT8量子化:

量子化により、モデルの精度が32ビット浮動小数点 (FP32) から8ビット整数 (INT8) に低下します。この変更により、推論速度と電力効率が劇的に向上します。INT8精度への移行は、HisiliconにYOLOv7モデルをデプロイするための重要なステップです。この移行には、主に2つのオプションがあります。

メソッド説明ベスト向け
トレーニング后の量子化 (PTQ)モデルが既にトレーニングされた後に量子化を適用します。それはありますシンプルで速いを使用します。わずかな精度低下が許容できる迅速な展開。
量子化-Awareトレーニング (QAT)トレーニングプロセス中に量子化をシミュレートします。モデルは、より低い精度に適応することを学びます。を必要とするシナリオ量子化後の最高精度を使用します。

多くのYOLOv7オブジェクト検出モデルでは、PTQは優れたバランスを提供します。それはできます推論速度を2倍にするAscend AIプロセッサの電力効率を向上させます。これにより、YOLOv7アプリケーションは、オブジェクトをリアルタイムで検出するために高速になります。精度の小さなトレードオフは、Ascendプロセッサのパフォーマンスと電力効率の大幅な向上には受け入れられることがよくあります。この最終的なモデル移行により、Hisilicon Ascendプロセッサでの最高効率のためにYOLOv7モデルが準備され、各オブジェクトを高速で見つけることができます。AscendでのYOLOv7モデルの検出パフォーマンスは優れています。

高度な調整技術:

高度なチューニングでモデルのパフォーマンスをさらに向上させることができます。これらのテクニックは、HiSiliconプラットフォーム用にYOLOv7モデルを微調整します。リアルタイムアプリケーションで最大の効率と高性能を実現できます。

AIPPの前処理:

AI前処理 (AIPP) を使用してモデルを加速できます。AIPPは、イメージの前処理タスクをCPUから直接Ascendハードウェアにオフロードします。これは、より良い電力効率のための重要なステップです。

AIPPは次のようなタスクを処理します。

  • イメージのサイズ変更
  • 色空間変換 (例えば、BGRからRGB)
  • 平均減算と正規化

このプロセスはあなたのCPUを解放します。これにより、Ascendプロセッサは推論パイプライン全体を処理できます。YOLOv7モデルは、より優れた電力管理により、より高速なリアルタイム推論を実現します。これにより、HiSiliconのモデルの優れた効率が得られます。

メモリとバッチ:

適切なメモリ管理は高性能のために不可欠です。Ascendプラットフォームでメモリを効率的に使用するようにYOLOv7モデルを設定する必要があります。バッチはこれのための強力なテクニックです。これには、単一の推論パスで複数の画像を処理することが含まれます。

バッチサイズスループットレイテンシ
小さい (例えば、1)画像あたりの高速
大きい (例えば、8、16)より高い画像ごとに遅い

バッチサイズを大きくすると、Ascendプロセッサでのモデルの全体的なスループットが向上します。これは、より良い電力管理と効率につながります。最高のリアルタイム検出パフォーマンスを得るには、YOLOv7モデルの適切なバランスを見つける必要があります。この最適化は、高性能AIモデルHiSiliconで。

推論プロファイリング:

パフォーマンスのボトルネックを見つけるには、モデルのプロファイルを作成する必要があります。プロファイリングツールは、モデルがAscend AIプロセッサでどのように実行されるかを示します。これらは、最高の電力効率と電力管理のために、すべてのレイヤーがNPU上で実行されるようにするのに役立ちます。

時々、モデル内の特定のレイヤーがCPUにフォールバックを使用します。これは、AscendプロセッサがSoftMaxレイヤーやなどの特定の操作を処理できない場合に発生します。YOLOv7モデルでのNMS後処理を使用します。このフォールバックは重大なボトルネックを生み出し、リアルタイムの推論を遅くし、電力効率を低下させます。プロファイリングは、これらの問題を特定するのに役立ちます。これは、強力なAscendハードウェアを使用する代わりに、大きなワークロードがCPUに負担をかけているかどうかを示しています。パフォーマンスベンチマークを分析することで、NPUがサポートする操作を使用するようにモデルを変更できます。これにより、YOLOv7モデルの検出がHiSiliconで最大の精度と効率で実行され、真の高性能と優れた電力管理を解除してリアルタイムで推測できるようになります。


モデルはHiSiliconでピークパフォーマンスを達成できます。この最適化ワークフローにより、Ascendプラットフォームの最大効率のロックが解除されます。

  1. モデルをクリーンなONNXグラフにエクスポートします。
  2. モデルをに変換するを使用します。OmファイルをAscendプラットフォームに使用します。
  3. より良い効率のためにINT8量子化を適用する。
  4. AIPPを使用して、事前処理をAscendハードウェアにオフロードします。

最終検証チェックリスト📝

  • 検証: ご確認くださいSoc_versionターゲットHiSiliconハードウェアと一致します。
  • アプリケーションの検証: モデル入力形状がAscendプラットフォームに対して正しいことを確認します。
  • アプリケーションの検証すべてのモデル演算子がAscend NPUでサポートされていることを確認します。

Yolo/resnetを最適化するためのこのプロセスに従うことは、HiSiliconの高性能と効率への最も信頼できるパスです。この検証により、HiSiliconハードウェアのAscendプラットフォームのフルパワーのロックが解除されます。

よくある質問

PTQとQATのどちらを選択するのですか?

迅速な展開には、トレーニング後の量子化 (PTQ) を使用する必要があります。それは素晴らしいスピードブーストを提供します。最高の精度が必要な場合は、QAT (Quantization-Aware Training) を使用できます。QATはモデルを再トレーニングする必要がありますが、より良い結果と優れた電力効率を提供します。

モデルにサポートされていない演算子がある場合はどうなりますか?

まず、CANNツールキットを使用してサポートされていない演算子を特定する必要があります。その後、NPUでサポートされている代替手段に置き換えることができます。これにより、モデル全体がAscendハードウェアで実行されるようになります。これは、パフォーマンスと最高の電力効率を実現するために重要です。

私のモデルにとってAIPPはなぜ重要なのですか?

AIPPは、イメージの前処理をCPUからNPUにオフロードする。これにより、CPUリソースが解放されます。パイプライン全体がAscendハードウェアで実行されるため、レイテンシが短縮され、アプリケーションの全体的な電力効率が向上します。

は、Soc_versionパラメータは本当に重要ですか?

はい、それは非常に重要です。設定する必要があります。Soc_versionあなたの特定のHiSiliconチップ(例:Ascend310)。ATCツールはこの情報を使用して、その正確なハードウェアアーキテクチャに最適化されたモデルファイルを作成します。

Related Articles