ARM NNは、AndroidおよびLinuxの最もパフォーマンスのある機械学習(ML)推論エンジンであり、 ARM Cortex-A CPUおよびARM Mali GPUでMLを加速します。このML推論エンジンは、既存のニューラルネットワークフレームワークと電力効率の高いARMIPの間のギャップを埋めるオープンソースSDKです。
ARM NNは、ARM Compute Library(ACL)を利用することにより、ARMアーキテクチャ固有の最適化(SVE2)のために一般的なMLライブラリを上回ります。 ARM ETHOS-N NPUをターゲットにするために、ARM NNはETHOS-N NPUドライバーを利用します。 ARM Cortex-Mアクセラレーションについては、CMSIS-NNを参照してください。
ARM NNは、ポータブルC ++ 17を使用して記述され、CMAKEを使用して構築されます。これは、さまざまなホスト環境から、さまざまなターゲットプラットフォーム用のビルドを有効にします。 Python開発者は、 ARM NN TF Lite Delegateを使用してARM NNとインターフェイスすることができます。
ARM NN TF Lite Delegateは、ARM NNで最も広いMLオペレーターサポートを提供し、MLモデルを加速する簡単な方法です。 TF Lite Delegateの使用を開始するには、最初にARM NNの最新リリース用に事前に構築されたバイナリをダウンロードします。 Pythonインタープリターを使用して、TF LiteモデルをARM NN TF Lite Delegateにロードして、加速推論を実行できます。 GitHubのこのクイックスタートガイドまたはこの包括的なARM開発者ガイドをご覧ください。ARMNNTF Lite Delegateを使用してTF Liteモデルを加速する方法については、詳細をご覧ください。
ARM NNをAndroidアプリに統合する最速の方法は、Android Studioを使用してARM NN AAR(Android Archive)ファイルを使用することです。 AARファイルは、ARM NN TF Lite Delegate、ARM NN自体、ACLをうまくパッケージ化します。 Android MLアプリケーションに統合する準備ができました。 AARを使用すると、ARM NN TF Lite Delegateの広大なオペレーターサポートから利益を得ることができます。このAARファイルを使用して、5分でML画像セグメンテーションアプリを加速する方法について、 ARM AI Tech Talkを開催しました。 ARM NN AARファイルをダウンロードするには、以下の事前に構築されたバイナリセクションを参照してください。
また、ARM NNのDebianパッケージを提供します。これは、ARM NNとTF Liteパーサーの使用を開始するための簡単な方法です(TF Lite DelegateよりもMLオペレーターサポートが少なくなりますが)。ここには、Ubuntu 20.04のARM NN CoreとTF Liteパーサーのインストール方法に関する指示を提供するインストールガイドがあります。
ARM NNをゼロから構築するために、 ARM NNビルドツールを提供します。このツールは、パラメーター化されたBASHスクリプトで構成されており、アームNNを構築するためのDockerFileと、 ARM Compute Library(ACL)を含むその依存関係を伴います。このツールは、ARM NNを構築するユーザーフレンドリーな方法として、既存のARM NNビルドガイドを構築する大部分を置き換えます。 ARM NNをゼロから構築することの主な利点は、MLプロジェクトのターゲットを絞った構築するコンポーネントを正確に選択できることです。
オペレーティング·システム | アーキテクチャ固有のリリースアーカイブ(ダウンロード) |
---|---|
Android(AAR) | |
Android 11 "R/Red Velvet Cake"(APIレベル30) | |
Android 12 "S/Snow Cone"(APIレベル31) | |
Android 13 "T/Tiramisu"(APIレベル33) | |
Android 14 "U/逆さまのケーキ"(APIレベル34) |
ARM NNは、Android向けに事前に構築されたマルチISAバイナリも提供しています。 V8Aバイナリには、基本的なV8Aアーキテクチャおよび上向きのサポートが含まれています。 V8.2Aバイナリには、V8.2A以降からのサポートが含まれています。これらには、SVE、SVE2、FP16、およびいくつかのDOT製品カーネルのサポートが含まれます。これらのカーネルは、取り組むために適切なハードウェアが必要です。
マルチISAアーキテクチャ | アーカイブのリリース(ダウンロード) |
---|---|
Linux ARM V8A | |
Linux ARM v8.2a | |
Android 31 V8a | |
Android 31 v8.2a |
ARM NN SDKは、 Tensorflow Lite (TF Lite)およびONNX形式のMLモデルをサポートしています。
ARM NNのTF Lite Delegateは、PythonまたはC ++ APIを介してTF Liteモデルを加速します。サポートされているTF LiteオペレーターはARM NNによって加速され、サポートされていない演算子はすべてのTF Liteランタイムに委任(フォールバック) - 広範なMLオペレーターのサポートを確保します。 ARM NNを使用する推奨される方法は、モデルをTF Lite形式に変換し、TF Lite Delegateを使用することです。 TF Lite Delegateの使用方法の詳細については、クイックスタートガイドを参照してください。
ARM NNは、TF LiteまたはONNXモデルをMLアプリケーションに統合するためのC ++ライブラリであるTF LiteおよびONNXパーサーも提供します。これらのパーサーは、ARM NN TF Lite Delegateと比較して、広範なMLオペレーターのカバレッジを提供していないことに注意してください。
Android MLアプリケーション開発者には、ARM NNを使用するための多くのオプションがあります。
ARMはまた、Android NNAPIのハードウェア抽象化レイヤー(HAL)を実装するAndroid-NN-Driverも提供します。 Android NNドライバーがAndroidデバイスに統合されると、Androidアプリケーションで使用されるMLモデルはARM NNによって自動的に加速されます。
ARM NNコンポーネントの詳細については、ドキュメントを参照してください。
ARM NNは、Linaro Machine Intelligenceイニシアチブの一部である機械学習プラットフォームの重要なコンポーネントです。
FAQやトラブルシューティングのアドバイスについては、FAQを参照するか、以前のGitHubの問題をご覧ください。
参加する最良の方法は、ソフトウェアを使用することです。助けが必要な場合、または問題に遭遇した場合は、GitHubの問題として提起してください。私たちのオープンな問題についても自由に見てください。また、ドキュメントに関するフィードバックも歓迎します。
それらを実装するためのボランティアのない機能リクエストは閉じられますが、「ヘルプが必要」ラベルを持っています。これらはここにあります。適切な問題が見つかったら、自由に再び開いてコメントを追加してください。ARMNNエンジニアがあなたがそれに取り組んでいることを知っていることを知ってください。
この機能が実装されると、「ヘルプウェンダース」ラベルが削除されます。
ARM NNプロジェクトは貢献を歓迎します。 ARM NNへの寄付の詳細については、mlplatform.org Webサイトの寄稿ページをご覧ください。または、寄稿者ガイドを参照してください。
特に、CPU、GPU、およびNPUのバックエンドの隣に独自のバックエンドを実装したい場合は、バックエンド開発のガイドがあります。バックエンド開発ガイド、ダイナミックバックエンド開発ガイド。
ARMNN/テストディレクトリには、ARM NN開発中に使用されるテストが含まれています。それらの多くは、ARM NNで配布されていないサードパーティのIP、モデルプロトブフ、および画像ファイルに依存しています。一部のテストの依存関係は、実験を希望する人のためにインターネットで自由に利用できますが、それらは箱を使い果たしません。
ARM NNはMITライセンスの下で提供されます。詳細については、ライセンスを参照してください。このプロジェクトへの貢献は、同じライセンスの下で受け入れられます。
個々のファイルには、完全なライセンステキストの代わりに、次のタグが含まれています。
SPDX-License-Identifier: MIT
これにより、こちらから入手可能なSPDXライセンス識別子に基づいてライセンス情報の機械処理が可能になります:http://spdx.org/licenses/
ARM NNは、ARMの包括的な言語ポリシーに準拠しており、私たちの知る限り、非包括的な言語は含まれていません。
あなたがあなたに関係するものを見つけた場合は、ターム@arm.comにメールしてください
ARM NNが使用するサードパーティツール:
道具 | ライセンス(SPDX ID) | 説明 | バージョン | 確率 |
---|---|---|---|---|
cxxopts | mit | 軽量C ++オプションパーサーライブラリ | 3.1.1 | https://github.com/jarro2783/cxxopts |
Doctest | mit | ヘッダーのみのC ++テストフレームワーク | 2.4.6 | https://github.com/onqtam/doctest |
FMT | mit | {FMT}は、C STDIOおよびC ++ iOSTREAMに代わる高速で安全な代替品を提供するオープンソースフォーマットライブラリです。 | 8.30 | https://github.com/fmtlib/fmt |
GHC | mit | ヘッダーのみのシングルファイルSTD :: Filesystem互換ヘルパーライブラリ | 1.3.2 | https://github.com/gulrak/filesystem |
半分 | mit | IEEE 754コンフォーマント16ビットハーフエシジョンフローティングポイントライブラリ | 1.12.0 | http://half.sourceforge.net |
マップボックス/バリアント | BSD | 「ブースト::バリアント」に代わるヘッダーのみの代替 | 1.1.3 | https://github.com/mapbox/variant |
STB | mit | 画像ローダー、サイズ、ライター | 2.16 | https://github.com/nothings/stb |
ARM NNは、次のセキュリティ関連のビルドフラグをコードに使用します。
フラグを構築します |
---|
-壁 |
-wextra |
- ワールドスタイルのキャスト |
-wno-missing-braces |
-WONVersion |
-Sign Conversion |
- werror |