hollance/neural-engine
Everything we actually know about the Apple Neural Engine (ANE)
Project: hollance/neural-engine
概要
- 範囲: 最近のiPhoneやiPadに搭載されているデバイス内蔵NPU、Apple Neural Engine (ANE) に関するコミュニティ主導のナレッジベース。
- 目的: Appleのハードウェア上でCore MLモデルを実験する過程で著者が発見した実用的な情報を収集、整理、共有すること。
- 対象読者: Core MLモデルをANEで実行したいiOS / macOS開発者、およびチップの機能や制限に興味がある方。
重要性
- ANEはサポートされているモデルにおいて、CPU/GPUと比較して桁違いの高速化を実現できますが、モデルをANE互換にする方法についての公式ドキュメントは存在しません。
- 開発者はモデルがGPUにフォールバックしたり、動作が遅くなったりして混乱や無駄な労力を費やすことがよくあります。このリポジトリは、フォーラムの投稿や個人のメモに散らばっていた貴重な教訓を集約しています。
主な内容 (READMEに記載)
| セクション | 学べること |
|---|---|
| Supported devices | ANEを搭載しているiPhone/iPadモデル。 |
| Why care about the ANE? | NPUを使用する際のパフォーマンスと電力効率の利点。 |
| Running on the ANE | Core MLモデルをANEで実行するための手順 (モデル変換、MLModelConfigurationなど)。 |
| Preventing ANE use | ANEが適していない場合に、モデルをCPU/GPUで強制実行する方法。 |
| Detecting ANE usage | MLModelConfigurationとOSログを使用して、ANEが実際に使用されているかを確認する方法。 |
| Programming the ANE directly | 現時点での可能性 – 基本的に不可能。ANEにはCore ML経由でしかアクセスできません。 |
| ANE vs GPU | アーキテクチャの違いと、なぜそれらが互換性を持たないのか。 |
| Precision (16‑bit?) | ANEがサポートする数値形式と、それがモデルの精度に与える影響。 |
| Unsupported Core ML layers | CPU/GPUへのフォールバックを引き起こす操作のリスト。 |
Using os_log |
ANE実行に関する警告やエラーを確認するためのシステムログの読み方。 |
| Model surgery | サポートされていないレイヤーを置き換える技術 (融合、書き換え、近似など)。 |
| Internals | リバースエンジニアリングに基づく、ANEの内部データフローに関する著者の推測。 |
| Other weird issues | 実際に観測されたエッジケースのバグや癖。 |
| Reverse‑engineering | ANEの挙動を調査するためのツール、スクリプト、コミュニティの取り組みへのリンク。 |
リポジトリの使い方
- ドキュメントを読む –
docs/内の各markdownファイルは独立しています。まずはwhy-care.mdまたはrunning-on-ane.mdから始めてください。 - デバイスを確認する –
docs/supported-devices.mdを使用して、ターゲットのハードウェアがANEを搭載しているか確認してください。 - 検証する – Core MLモデルをデプロイした後、
is-model-using-ane.mdの手順に従って、実際にNPUで実行されているかを確認してください。 - 貢献する – 新しいサポートされていないレイヤーや回避策を発見した場合は、READMEの案内に従ってissueを開くか、プルリクエストを送信してください。
制限事項
- 情報は経験則に基づくものであり、AppleのOSアップデートやハードウェアの改訂により古くなる可能性があります。
- ANEを直接プログラミングするための公式APIはありません。すべてCore MLを経由します。
- 一部のセクションは「作成中」であり、コミュニティの貢献に依存しています。
この要約はリポジトリのREADMEのみに基づいています。リポジトリ自体には、上記で言及した詳細なmarkdownファイルが含まれています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト