オープンツールでHiSilicon AI SoCの力を解き放す

HiSilicon AI SoCのためにすぐに開発できます。Ascend CANN SDKなどのオープンスタンダードツールを使用します。この強力なSDK

ロック解除

HiSilicon AI SoCのためにすぐに開発できます。Ascend CANN SDKなどのオープンスタンダードツールを使用します。この強力なSDKは、機械学習プロジェクトをサポートします。AIアプリケーションを作成するためのパスは簡単です。

  1. ボード上で開発環境を設定します。
  2. オープンフレームワークから機械学習モデルを変換します。
  3. AIモデルをエッジボードにデプロイして実行します。

このガイドでは、最初のAIアプリケーションを実行するための実践的な方法を提供します。標準モデルを使用して、エッジコンピューティング用にボード上で実行されていることを確認できます。エコシステムは、エッジ学習およびコンピューティングタスクに優れたパフォーマンスを提供します。

最上位のAIパフォーマンスを実現🚀

Ascend CANNフレームワークは、エッジでのディープラーニングの印象的な効率を可能にします。

メトリック値 (NPUあたり)
プリフィルスループット6,688トークン/秒
デコードスループット1,943トークン/秒
持続的なデコード538トークン/秒

この学習の旅は、AIの概念を実際のエッジコンピューティングに移行します。

重要なポイント

  • HiSiliconでAIアプリケーションを構築できますAI SoCAscend CANN SDKなどのオープンツールを使用します。
  • Ascend CANN SDKには2つの主要なツールがあります。ATCはモデルを変換し、AscendCLはそれらをAIハードウェアで実行します。
  • TensorFlowやPyTorchなどの一般的なAIフレームワークを使用できます。最良の結果を得るには、モデルをONNXに変換します。
  • CANNツールキットをインストールして開発環境を設定します。次に、インストールが機能することを確認します。
  • 最初のAIアプリを実行するには、ATCでResNet-50ようなモデルを変換します。次に、AscendCLを使用してボードにデプロイして実行します。

AIエコシステムの探索

探検

最新のAIエコシステムのコアとして、Ascend CANN (Compute Architecture for Neural Networks) SDKを使用します。この強力なSDKは、機械学習プロジェクトのためのツールを提供します。エコシステムは、モデル開発からエッジデバイスへのデプロイまでの道のりをサポートします。このAIエコシステムは、高性能エッジコンピューティング用に設計されています。

HISILICON AI SOCSのツール

メインツールはAscend CANN SDKです。古いHUAWEI HiAIDDKに代わるものです。このSDKには、人工知能タスクの2つの重要なコンポーネントが含まれています。

  1. アセントテンソルコンパイラ (ATC):このツールを使用して、ニューラルネットワークのモデルを変換します。オープンAIフレームワークからモデルを取得し、ボード用に準備します。ATCはまた、モデルを最適化してパフォーマンスを向上させますメモリサポートによる使用半精度コンピューティングを参照してください。次のような機能でモデルを改善します。

    • 演算子スケジューリングの最適化
    • メモリの最適化
    • より高速な画像処理のためのデジタルビジョン前処理 (DVPP)
  2. AscendComputing Language (AscendCL):このAPIを使用して、AIハードウェアでモデルを実行します。PythonライブラリpyACLを使用すると、ボードを管理し、メモリを制御し、機械学習モデルを実行するためのコードを記述できます。を参照してください。これは、アプリケーションがHisilicon AI SoCと通信する方法です。

フレームワーク統合

すでに知っているディープラーニングフレームワークから始めることができます。Ascendプラットフォームは、人気のあるAIフレームワークをサポートしているため、エッジコンピューティングへの移行がスムーズになります。既存の機械学習ワークフローを簡単に統合できます。

ヒント:最良の結果を得るには、モデルをONNX形式にエクスポートする必要があります。などのツールを使用できます。Tf2onnxATCを使用する前にTensorFlowモデルを変換します。

CANN SDKは、特定のフレームワークバージョンとの互換性を維持し、安定性を確保します。たとえば、ここにいくつかのサポートされているバージョンがあります。PyTorch:

フレームワークバージョンCANNバージョン
PyTorch2.1.07.0.1
PyTorch1.11.07.0.1

コミュニティプロジェクト

公式SDKを超えて、強力なコミュニティが構築されますオープンソースツールを参照してください。OpenIPC/openhisiliconプロジェクトは素晴らしい例です。これは、さまざまなシステムでのファームウェアおよび低レベルの開発のためのコミュニティ主導のSDKです。このプロジェクトでは、MIT/GPLライセンスでボードをより細かく制御できます。次のような幅広いビジョン処理チップをサポートしています。

このコミュニティの取り組みは、エッジデバイスでのAI学習と開発のための別の道を提供します。

環境セットアップ

これで、開発環境を準備する準備が整いました。このセットアップは、ボード上の将来のすべてのAIプロジェクトの基盤です。必要なソフトウェアをインストールし、ハードウェアが機械学習タスクの準備ができていることを確認します。

ハードウェアとソフトウェア

ハードウェアの主な部分は、HiSilicon AI SoC開発ボードです。また、Ubuntuなどの互換性のあるLinuxディストリビューションを実行するホストコンピューターも必要です。始める前に、ボードの電源がオンになってネットワークに接続されていることを確認してください。これらのシステムの適切なセットアップは、後で一般的な問題を防ぎます。

これらの一般的なセットアップエラーを監視する⚠️

エッジデバイスの初期セットアップ中に、スクリプトまたはドライバーエラーが発生する可能性があります。ファイルパスと権限に細心の注意を払うことで、それらを回避できます。

  • Sh: can't open './pinmux.sh': そのようなファイルやディレクトリはありません
  • Sh: 'clkcfg.sh' を開くことができません: そのようなファイルまたはディレクトリはありません
  • Insmod: 'hi _ osal.ko' を挿入できません: そのようなファイルやディレクトリはありません
  • Hi3516AV200にネットワーク接続がない

CANN TOOLKITのインストール

Ascend CANN SDKをインストールして、ボードでAI処理を有効にします。このプロセスでは、正しいパッケージをダウンロードしてインストーラを実行します。

  1. パッケージのダウンロード: 公式のAscendコミュニティからドライバ、ファームウェア、およびツールキットのパッケージを入手します。
  2. ユーザーの作成: Ascendアプリケーションを実行するための専用ユーザーグループを設定します。
    Sudo groupadd -g HwHiAiUser
    Sudo useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser
    
  3. ドライバー & ファームウェアのインストール: ファイルに実行権限を付与し、インストーラを実行します。
    Sudo chmod x *.run
    スド /Ascend-hdk-xxx-npu-driver _ *.run -- full
    スド /Ascend-hdk-xxx-npu-firmware _ *.run -- full
    
  4. Toolkitのインストール最後に、ツールキットのインストーラを実行してSDKのセットアップを完了します。
    を参照してください。 /Ascend-cann-toolkit _ *.run -- install
    

SDKのインストール後、環境変数を設定して、AIアプリケーションを構築するためのエッジコンピューティングプラットフォームを設定する必要があります。

変数説明
ASCEND_HOME_PATHCANNツールキットのホームパスを設定します。
SOC_VERSIONAscendチップのバージョンを指定します。
MAX_JOBSコンパイルするCPUコアの数を定義します。

インストールの検証

インストール後、すべてが機能することを確認する必要があります。インストールが成功すると、次のようなメッセージが表示されます。Xxxインストール成功を参照してください。コマンドを実行してAIハードウェアのステータスを確認することもできます。このステップでは、機械学習環境がエッジコンピューティングとディープラーニングの準備が整っていることを確認します。

NPUステータスの確認

を実行できます。Npu-smi情報コマンドを実行して、NPUに関する詳細情報を取得します。成功した出力は、チップがわかったAI処理とコンピューティングの準備が整いました。

$ Npu-smi情報
+ -----------------------------------------------------------------
| Npu-smi 23.0.1バージョン: 23.0.1 |
--------------------------- --------------- ----------------------------- +
| NPU名 | 健康 | パワー (W) テンプ (C) |
| チップ | バスID | AICore(%) |
+ =========================== + ===================== +
| 4 910B3 | OK | 93.6 40 |
| 0 | 0000:01:00.0 | 0 |
+ =========================== + ===================== +

これにより、エッジでAIへの学習の旅が始まることが確認されます。

あなたの最初のAIアプリケーション

あなたの

最初のAIアプリケーションを構築する準備が整いました。このプロセスは、標準的な機械学習モデルを取得し、開発ボードで実行します。強力なソフトウェアとハードウェアがどのように連携するかがわかりますエッジコンピューティングを参照してください。このプロジェクトは、単純なコンピュータビジョンタスクに焦点を当てます。

オープンモデルの準備

最初のステップは、事前に訓練されたモデルを選択することです。ONNX Model Zooなどのオープンソースライブラリには、多くのモデルがあります。このガイドでは、画像認識に人気のあるモデルであるResNet-50を使用します。それはあなたの学習の旅のための素晴らしい出発点を提供します。

モデルには特定の形式の入力データが必要です。ResNet-50は、画像が特定のサイズで前処理されることを期待しています。イメージをニューラルネットワークにフィードする前に、モデルの入力形状にサイズを変更する必要があります。3カラーチャンネル付き224x224ピクセルを参照してください。あなたもする必要がありますピクセル値を正規化するを参照してください。この準備により、モデルは画像データを正しく理解できます。

TensorFlowなどのディープラーニングフレームワークを使用して、事前にトレーニングされたResNet-50モデルを簡単にロードできます。次のコードは、コンピュータビジョンタスクのモデルを準備する方法を示しています。

Tensorflowをtfとしてインポートする

Img_height = 224
Img_width = 224

Pretrained_model = tf.keras.applications.ResNet50 (includ_top = True、
Input_shape =(img_height, img_width, 3),
Weights = 'imagenet')

ResNet-50は良い選択ですが、AIエコシステムはさまざまなビジョンと認識タスクのために他のモデルをサポートしています。これらの選択肢から始めることもできます。

  • MobileNet: モバイルおよび組み込みビジョンデバイス用に設計された効率的なモデル。
  • スクイーズネット: より少ないリソースで優れた精度を実現する小型モデル。
  • VGG: より複雑な画像分類の課題に対する強力なモデル。

音声認識など、他の人工知能ドメインのモデルを探索して、スキルを広げることもできます。

ATCとのモデル変換

あなたのHiSilicon AI SoCTensorFlowまたはONNXモデルを直接実行することはできません。まず、ボードが理解できる形式に変換する必要があります。この変換には、SDKのAscend Tensor Compiler (ATC) ツールを使用します。このツールは、AIハードウェアのモデルを最適化し、高性能AI推論を高速化します。

ATCコマンドは元のモデルを取得し、オフラインモデルを出力します (を参照してください。Om) ファイル。このファイルは、エッジシステムに配置する準備ができています。

このコマンドでモデルを変換する⚙️

ターミナルで次のコマンドを実行します。ResNet-50モデルをすでにONNX形式にエクスポートしていることを確認してください。

Atc -- model =./resnet50.onnx \
-- Framework = 5 \
-- Output =./resnet50 \
-- Input_shape = "actual_input_1:1,3,224,224" \
-- Soc_version = Ascend310B4

このコマンドの重要な引数を確認しましょう:

引数説明
-- モデル入力モデルファイルへのパスを指定します (例:を参照してください。Onnx)。
-- Framework元のフレームワークを定義します。5ONNXの略です。
-- 出力出力のパスと名前を設定します。を参照してください。Om拡張子なしのファイル。
-- Input_shapeモデルの正確な入力ディメンションをコンパイラに伝えます。
-- Soc_versionボード上のターゲットAscendチップを指定します。

アセンブコンピューティング言語

を使用しますAscend Computing Language (AscendCL)変換されたモデルとやり取りします。AscendCLは、アプリケーションがAscend AIプロセッサと通信できるようにするAPIです。Python開発者向けに、SDKはというライブラリを提供します。PyACLを参照してください。このAPIは、ボードを管理し、モデルをロードし、機械学習推論を実行するための機能を提供します。

APIは、メモリ管理のためのツールを含む。などの関数を使用できます。AllocTensorデバイス上で直接入力および出力データ用のメモリを割り当てます。この制御は、データ処理中のメモリの使用方法を管理することにより、パフォーマンスの最適化に役立ちます。AscendCLは、同期実行と非同期実行の両方の機能も提供し、AIアプリケーションの設計方法に柔軟性を提供します。

を使用して簡略化されたPythonスニペットを次に示します。PyACLコアロジックを表示します。このコードは、モデルのロードと推論の準備を示しています。

インポートacl

#1.AscendCLを初期化する
Ret = acl.init()

#2.リソースの割り当て (デバイス、コンテキスト、ストリーム)
Device_id = 0
Ret = acl.rt.set_device(device_id)
Context,ret = acl.rt.create_context(device_id)
Stream,ret = acl.rt.create_stream()

#3.をロードします。Omモデル
Model_path = "./resnet50.om"
Model_id,ret = acl.mdl.load_from_file(model_path)

#... 入力データを準備し、推論を実行し、出力を処理するためのコード...

#4.モデルのアンロードとリソースのリリース
Ret = acl.mdl.unload(model_id)
Ret = acl.rt.de stroy_stream (ストリーム)
Ret = acl.rt.de stroy_context (コンテキスト)
Ret = acl.rt.reset_device(device_id)
Ret = acl.finalize()

展開と実行

最後のステップは、コードをエッジボードにデプロイして実行することです。Pythonスクリプトと変換されたスクリプトを転送しますを参照してください。Omモデルをデバイスに接続します。スクリプトを実行すると、完全な機械学習ワークフローが実行されます。AscendCL APIがモデルをロードし、コードでイメージを準備してフィードし、AIハードウェアがコンピューティングを実行します。

モデルの出力は数値の生テンソルです。このテンソルは、各可能なクラスの確率を表します。人間が読める結果を得るには、コードでこの出力に対して後処理を実行する必要があります。できますこれらの数値にSoftmax関数を適用して、最終的な確率を取得しますを参照してください。最も高い確率は、入力画像の予測されたクラスに対応する。この最後のステップは、ディープラーニングモデルからの生データを、コンピュータビジョンアプリケーションにとって意味のある答えに変えます。これで、モデル選択からオンデバイス推論および結果処理まで、最初のAIプロジェクトが完了します。


HiSilicon AI SoC向けの強力なAIアプリケーションを構築できるようになりました。最速のパスでは、オープンマシン学習フレームワークを備えたAscend CANN SDKを使用します。このアプローチにより、エッジデバイスのAI開発が簡素化されます。将来のプロジェクトは、成功のためのコアパターンに従うことができます。

ボード上のAIワークフロー🗺️

  1. ボードにCANN SDKを設定します。
  2. ATCツールでモデルを変換します。
  3. オンデバイス処理用のAscendCL APIを使用してコードをデプロイします。

この学習の旅は、高度なエッジコンピューティングの準備をします。機械学習スキルを拡張し、ボード上で新しいAI処理の可能性を探ることができます。公式SDKとコミュニティリソースは、継続的な学習をサポートします。

よくある質問

モデルがONNX形式でない場合はどうなりますか?

最初にモデルをONNXに変換できます。TensorFlowやPyTorchなどのほとんどのaiフレームワークは、モデルをエクスポートするためのツールを提供します。この余分なステップは、ATCツールのモデルを準備します。これは、多くのai開発ワークフローの標準的な方法です。

これらのツールをコンピュータビジョン以外のプロジェクトに使用できますか?

はい、できます。Ascend CANNツールキットは、ビジョンタスクに限定されません。多くのタイプのaiアプリケーションを構築できます。これには、音声認識と自然言語処理のプロジェクトが含まれます。ツールは、幅広いaiモデルをサポートしています。

AIプロジェクトのサンプルはどこで開始できますか?

サンプルプロジェクトの探索🧑‍💻

GitHubのAscendコミュニティで多くのサンプルプロジェクトを見つけることができます。これらのサンプルは、さまざまなaiタスクをカバーし、完全なコードを提供します。彼らはあなた自身のアプリケーションを構築する方法を学ぶための素晴らしいリソースです。

ホストコンピュータに特定のLinuxバージョンが必要ですか?

はい、互換性のあるLinuxディストリビューションが必要です。CANNツールキットのドキュメントには、サポートされているオペレーティングシステムとバージョンが一覧表示されます。インストールの問題を防ぐために公式ガイドを確認する必要があります。これにより、ai開発環境が安定します。

Related Articles