Huawei - CANN
CANN実行プロバイダー
Section titled “CANN実行プロバイダー”Huawei Compute Architecture for Neural Networks (CANN)は、AIシナリオ向けのヘテロジニアス計算アーキテクチャであり、Ascendプラットフォームに基づいてAIアプリケーションとサービスを迅速に構築するための多層プログラミングインターフェースを提供します。
ONNX Runtime用のCANN実行プロバイダーを使用することで、Huawei Ascendハードウェア上でONNXモデルを高速化できます。
ONNX Runtime用のCANN実行プロバイダー(EP)は、Huaweiによって開発されています。
インストール
Section titled “インストール”CANN EPを含むONNX Runtimeのプリビルドバイナリが公開されていますが、現在はPython用のみです。onnxruntime-cannを参照してください。
ONNX Runtime推論パッケージの公式CANNパッケージ依存関係については、以下の表を参照してください。
| ONNX Runtime | CANN |
|---|---|
| v1.20.0 | 8.2.0 |
| v1.21.0 | 8.2.0 |
| v1.22.1 | 8.2.0 |
ビルド手順については、BUILDページを参照してください。
設定オプション
Section titled “設定オプション”CANN実行プロバイダーは以下の設定オプションをサポートしています。
device_id
Section titled “device_id”デバイスID。
デフォルト値: 0
npu_mem_limit
Section titled “npu_mem_limit”デバイスメモリアリーナのサイズ制限(バイト単位)。このサイズ制限は実行プロバイダーのアリーナのみに適用されます。総デバイスメモリ使用量はより高くなる場合があります。
arena_extend_strategy
Section titled “arena_extend_strategy”デバイスメモリアリーナを拡張する戦略。
| 値 | 説明 |
|---|---|
| kNextPowerOfTwo | 後続の拡張はより大きな量で拡張される(2の累乗で乗算) |
| kSameAsRequested | 要求された量で拡張 |
デフォルト値: kNextPowerOfTwo
enable_cann_graph
Section titled “enable_cann_graph”パフォーマンスを向上させるためにグラフ推論エンジンを使用するかどうか。推奨設定はtrueです。falseの場合、単一オペレーター推論エンジンにフォールバックします。
デフォルト値: true
enable_cann_subgraph
Section titled “enable_cann_subgraph”CANNバックエンドはONNXモデルの自動分割をサポートしています。trueに設定すると、より多くのONNXモデルをサポートしますが、パフォーマンスオーバーヘッドが発生する場合があります(一部のノードがCPUにフォールバックする可能性があるため)。
デフォルト値: false
dump_graphs
Section titled “dump_graphs”サブグラフセグメンテーションの分析のためにサブグラフをonnx形式でダンプするかどうか。
デフォルト値: false
dump_om_model
Section titled “dump_om_model”Ascend AIプロセッサー用のオフラインモデルを.omファイルにダンプするかどうか。
デフォルト値: true
precision_mode
Section titled “precision_mode”オペレーターの精度モード。
| 値 | 説明 |
|---|---|
| force_fp32/cube_fp16in_fp32out | オペレーター実装に従って最初にfloat32に変換 |
| force_fp16 | float16とfloat32の両方がサポートされている場合はfloat16に変換 |
| allow_fp32_to_fp16 | float32がサポートされていない場合はfloat16に変換 |
| must_keep_origin_dtype | そのまま保持 |
| allow_mix_precision/allow_mix_precision_fp16 | 混合精度モード |
デフォルト値: force_fp16
op_select_impl_mode
Section titled “op_select_impl_mode”CANNの一部の組み込みオペレーターには、高精度と高性能の実装があります。
| 値 | 説明 |
|---|---|
| high_precision | 高精度を目指す |
| high_performance | 高性能を目指す |
デフォルト値: high_performance
optypelist_for_implmode
Section titled “optypelist_for_implmode”op_select_impl_modeパラメーターで指定されたモードを使用するオペレーターのリストを列挙します。
サポートされているオペレーターは以下の通りです:
- Pooling
- SoftmaxV2
- LRN
- ROIAlign
デフォルト値: None
パフォーマンスチューニング
Section titled “パフォーマンスチューニング”IOバインディング
Section titled “IOバインディング”入力と出力のコピーによるオーバーヘッドを回避するために、I/Oバインディング機能を活用する必要があります。
- Python