コンテンツにスキップ

Huawei - CANN

Huawei Compute Architecture for Neural Networks (CANN)は、AIシナリオ向けのヘテロジニアス計算アーキテクチャであり、Ascendプラットフォームに基づいてAIアプリケーションとサービスを迅速に構築するための多層プログラミングインターフェースを提供します。

ONNX Runtime用のCANN実行プロバイダーを使用することで、Huawei Ascendハードウェア上でONNXモデルを高速化できます。

ONNX Runtime用のCANN実行プロバイダー(EP)は、Huaweiによって開発されています。

CANN EPを含むONNX Runtimeのプリビルドバイナリが公開されていますが、現在はPython用のみです。onnxruntime-cannを参照してください。

ONNX Runtime推論パッケージの公式CANNパッケージ依存関係については、以下の表を参照してください。

ONNX RuntimeCANN
v1.20.08.2.0
v1.21.08.2.0
v1.22.18.2.0

ビルド手順については、BUILDページを参照してください。

CANN実行プロバイダーは以下の設定オプションをサポートしています。

デバイスID。

デフォルト値: 0

デバイスメモリアリーナのサイズ制限(バイト単位)。このサイズ制限は実行プロバイダーのアリーナのみに適用されます。総デバイスメモリ使用量はより高くなる場合があります。

デバイスメモリアリーナを拡張する戦略。

説明
kNextPowerOfTwo後続の拡張はより大きな量で拡張される(2の累乗で乗算)
kSameAsRequested要求された量で拡張

デフォルト値: kNextPowerOfTwo

パフォーマンスを向上させるためにグラフ推論エンジンを使用するかどうか。推奨設定はtrueです。falseの場合、単一オペレーター推論エンジンにフォールバックします。

デフォルト値: true

CANNバックエンドはONNXモデルの自動分割をサポートしています。trueに設定すると、より多くのONNXモデルをサポートしますが、パフォーマンスオーバーヘッドが発生する場合があります(一部のノードがCPUにフォールバックする可能性があるため)。

デフォルト値: false

サブグラフセグメンテーションの分析のためにサブグラフをonnx形式でダンプするかどうか。

デフォルト値: false

Ascend AIプロセッサー用のオフラインモデルを.omファイルにダンプするかどうか。

デフォルト値: true

オペレーターの精度モード。

説明
force_fp32/cube_fp16in_fp32outオペレーター実装に従って最初にfloat32に変換
force_fp16float16とfloat32の両方がサポートされている場合はfloat16に変換
allow_fp32_to_fp16float32がサポートされていない場合はfloat16に変換
must_keep_origin_dtypeそのまま保持
allow_mix_precision/allow_mix_precision_fp16混合精度モード

デフォルト値: force_fp16

CANNの一部の組み込みオペレーターには、高精度と高性能の実装があります。

説明
high_precision高精度を目指す
high_performance高性能を目指す

デフォルト値: high_performance

op_select_impl_modeパラメーターで指定されたモードを使用するオペレーターのリストを列挙します。

サポートされているオペレーターは以下の通りです:

  • Pooling
  • SoftmaxV2
  • LRN
  • ROIAlign

デフォルト値: None

入力と出力のコピーによるオーバーヘッドを回避するために、I/Oバインディング機能を活用する必要があります。

  • Python