Apple Core AIの統合#
coreai-core は macosx_26_0_arm64 ホイールのみを公開するため、エクスポートはAppleシリコン搭載Macで実行されます。エクスポートされた .aimodel はiOS 27およびmacOS 27で実行されます。Ultralytics iOS SDKとFlutter SDKは、まだ .aimodel アセットを読み込めません。これらには Core ML を使用してください。
Core AI は、Appleシリコン上でニューラルネットワークを直接実行するためのAppleの新しいフレームワークです。.aimodel モデル形式、最新のSwift推論API、PyTorchベースの変換ツール、事前コンパイル、モデル特化、専用のデバッグおよびプロファイリングツールを導入します。
Appleは、Core AIをオンデバイスAI実行の次の進化形であり、オンデバイスApple Intelligenceを支える推論フレームワークと説明しています。コンパクトなビジョンモデルから大規模な生成モデルまで、現在のニューラルネットワークアーキテクチャ向けに設計されており、CPU、GPU、Apple Neural Engine(ANE)にまたがって処理をスケジュールできます。
Core AIはCore MLの新しい名称ではなく、新しいデプロイパスです。両フレームワークでは、モデル形式、変換ツール、ランタイムAPI、アプリケーション統合パターンが異なります。
Core AIとCore MLの比較#
| 機能 | Core AI | Core ML |
|---|---|---|
| モデルアーティファクト | .aimodel | .mlpackageまたは.mlmodel |
| Ultralyticsのエクスポート | format=coreai で利用可能 | format=coreml で利用可能 |
| AppleランタイムAPI | AIModel、InferenceFunction、NDArray | MLModel。多くの場合、VNCoreMLModel と VNCoreMLRequest を介して使用 |
| 変換ワークフロー | PyTorchの torch.export から coreai-torch へ | coremltools によるTorchScript変換 |
| 主な用途 | 最新のニューラルネットワークと生成AI | ニューラルモデルおよび非ニューラルモデルを含む、幅広い機械学習デプロイ |
| 画像統合 | アプリケーションがテンソルを準備するか、Core AIの画像記述子とバッファを使用します | 画像のスケーリング、向き、リクエストに対応するVisionフレームワークとの直接統合 |
| ハードウェア | CPU、GPU、Apple Neural Engine | CPU、GPU、Apple Neural Engine |
| モデル準備 | インストール時または初回使用時に特化し、オプションで事前コンパイルを実行 | Xcodeまたはデバイス上でのモデルコンパイル |
| カスタムオペレーション | カスタムCore AI loweringとMetalカーネル | Core MLカスタムレイヤーとサポートされるMILオペレーション |
| デプロイの利用可能性 | Appleの新しいOS世代。現在はベータ版 | 既存のApple OS全体で幅広くサポート |
| Ultralytics iOSおよびFlutter SDK | まだサポートされていません | 完全にサポートされています |
アプリケーションで幅広いデバイス対応、Visionフレームワーク統合、または決定木や表形式パイプラインなどのモデルタイプが必要な場合は、Core MLが引き続き適切な選択肢です。AppleはCore MLのサポートを継続しており、非ニューラルモデルタイプを使用する開発者にはCore MLを推奨しています。
Core AI形式の仕組み#
Core AIの作成ワークフローはPyTorchモデルから始まります。
PyTorch model
↓ torch.export
ExportedProgram
↓ coreai-torch
Core AI program
↓ optimize and save
.aimodel
↓ specialize or compile ahead of time
Apple silicon executableAppleの coreai-torch パッケージは、PyTorch ATenオペレーションをCore AIオペレーションにloweringすることで torch.export.ExportedProgram を変換します。サポートされていないオペレーションは、カスタムloweringまたはカスタムMetalカーネルで実装できます。
生成された .aimodel は、未特化のモデルアセットです。アプリケーションがモデルを準備すると、Core AIは対象デバイス向けにモデルを特化します。アプリケーションでは、初回使用時に実行する、より早い段階で特化を要求する、または初期読み込み時間を短縮するために事前コンパイル済みモデルを同梱する、という選択ができます。
Swiftでは、アプリケーションがCore AIフレームワークでアセットを読み込み、推論関数を選択し、型付きの NDArray 入力を渡して、名前付き出力を受け取ります。これはCore MLモデルをVisionリクエストでラップする方法とは異なるため、Core AIを導入するには、.aimodel アセット向けに設計されたアプリケーションランタイムが必要です。
実装の詳細については、Appleの AIModel、モデルの特化とキャッシュ、事前コンパイル に関するドキュメントを参照してください。
YOLO26モデルをCore AIにエクスポート#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="coreai") # creates 'yolo26n.aimodel'
model.export(format="coreai", quantize=16) # FP16 asset
# Run the exported model
coreai_model = YOLO("yolo26n.aimodel")
results = coreai_model("https://ultralytics.com/images/bus.jpg")引数の完全な一覧については、エクスポートモード を参照してください。グラフは静的です。imgsz でトレースされ、export に渡されるため、同じサイズでpredictしてください。Ultralyticsのメタデータはアセット独自の metadata.json 内に保持されるため、クラス名、ストライド、タスクはラウンドトリップ後も維持されます。
ヘッドの選択#
nms=False を使用すると、YOLO26 はエンドツーエンドのヘッドをエクスポートし、グラフ内で検出結果を選択します。Core AI にはトップ k プリミティブがないため、その選択はフルソートに低下し、Apple Neural Engine のパーティション境界で固定コスト(max_det に関係なく約 1.7 ms)が課されます。nms=None でエクスポートすると、代わりに生の (1, 84, 8400) 予測が出力され、非最大値抑制はプレディクターに残されます。
yolo export model=yolo26n.pt format=coreai nms=None quantize=16iOS 27.0 を実行する iPhone 17 Pro では、YOLO26n(640)は、ヘッドがグラフ内にある場合は 3.01 ms、ヘッドがない場合は 1.28 ms(FP16、事前コンパイル済み、50 イテレーションの 3 つのインターリーブブロック)を測定します。両方とも推論のために YOLO(...) を経由してラウンドトリップします。単一のグラフ呼び出しで完了した検出結果を返す必要がある場合は nms=False を使用し、外部 NMS の場合はデフォルトの nms=None を維持します。
iOS 27またはmacOS 27では、アプリケーションはAppleのCore AI Swift APIを介してエクスポート済みアセットを読み込み、実行します。エクスポート済みアセットはエントリポイント main を使用し、形状 [batch, 3, imgsz, imgsz] の単一の images 入力を受け取り、output0 を返します。
import CoreAI
let modelURL = Bundle.main.url(forResource: "yolo26n", withExtension: "aimodel")!
let model = try await AIModel(contentsOf: modelURL)
guard let function = try model.loadFunction(named: "main") else {
throw AppError.missingInferenceFunction
}
let outputs = try await function.run(inputs: ["images": imageTensor])現在の Core MLとVisionのワークフロー とは異なり、将来のCore AIパスでは、画像の前処理、NDArray の構築、モデルメタデータ、出力デコードを Ultralytics iOS SDK で定義する必要があります。Appleは Core AIフレームワークのドキュメント で最新のAPI詳細を、Core AIモデルリポジトリ で動作するモデル例を提供しています。
Core AIの利点#
Core AIは、将来のUltralyticsデプロイに向けて、いくつかの有望な利点を提供します。
- 最新のPyTorchエクスポートパス: 変換は
torch.exportから開始されるため、多くの既存エクスポーターで使用されるトレースワークフローよりも表現力の高いPyTorchグラフを保持できます。 - きめ細かなランタイム制御: アプリケーションは、特化、コンパイル済みモデルのキャッシュ、推論関数、メモリ、計算配置を管理できます。
- 高度なモデルサポート: ステートフル実行、動的形状、1つのアーティファクト内の複数関数、カスタムMetalカーネルは、最新のビジョンおよび生成アーキテクチャ向けに設計されています。
- 専用の開発者ツール: Core AI Debuggerはグラフとテンソル値を検査し、それらを元のPythonコードまで追跡できます。XcodeとInstrumentsはランタイムプロファイリングを提供します。
- ゼロコピーの可能性: Core AIは、カメラ、グラフィックス、推論ワークロード間のコピー削減を目的としたストレージおよびバッファ制御を公開します。
- Appleシリコン最適化: デバイス特化により、Appleは特定のデバイスで利用可能なCPU、GPU、Neural Engine向けにモデルを最適化できます。
- 柔軟な圧縮: AppleのCore AI Optimizationツールは、低ビット重み形式を含む量子化、パレタイズ、プルーニングをサポートします。
これらの機能は、動的実行、より大規模なマルチモーダルコンポーネント、または既存のCore MLオペレーションに適切にマッピングできないカスタムオペレーションを備えた将来のYOLOモデルで、特に有用になる可能性があります。
現在の欠点と制限事項#
Core AIは現在、プロダクション向けのCore MLパスに取って代わるものではありません。
- 新しいOSが必要: 公開フレームワークの対象はiOS 27およびmacOS 27世代ですが、Core MLははるかに大規模な既存インストールベースをサポートしています。
- ベータソフトウェア: AppleのCore AIフレームワークとPythonツールチェーンの一部はまだ初期段階であり、安定版リリースまでに変更される可能性があります。
- より狭いエクスポート環境:
coreai-torchは現在、Python 3.11以降かつ3.14未満に加え、最近のPyTorchバージョンを必要とするため、UltralyticsがサポートするPythonおよびPyTorchの範囲よりも大幅に狭くなっています。 - エクスポートはmacOSでのみ実行:
coreai-coreはmacosx_26_0_arm64ホイールのみを公開するため、format=coreaiにはmacOS 26以降を実行するAppleシリコン搭載Macが必要です。 - Ultralyticsのアプリケーションランタイムはまだありません: 公式の YOLO iOSアプリ と Flutterプラグイン は現在、
MLModelとVisionを介してCore MLアーティファクトを読み込みます。 - アプリケーションの移行が必要:
.aimodelを.mlpackageの代わりに使用することはできません。モデルの読み込み、前処理、推論呼び出し、メタデータ処理、出力デコードにはCore AI実装が必要です。 - プロダクションでの証拠が限定的: パフォーマンス、電力使用量、初回特化時間、精度、圧縮について、サポート対象のYOLOタスクとデバイスの組み合わせ全体で検証する必要があります。
- NMS なしパイプライン: Core ML は、古い YOLO 検出モデル用の NMS ステージをパッケージ化できます。Core AI はデフォルトで生の 1対多の予測をエクスポートします。YOLO26 の NMS なしヘッドには
nms=Falseを使用してください。埋め込み NMS(nms=True)とdynamic=Trueはサポートされていません。coreai-torchにはtorchvision::nmsのローリングがないため、NMS はホストに残ります。 - 入力サイズは固定: エクスポート済みグラフは1つの
imgszでトレースされ、動的形状を持たないため、エクスポート時のサイズでpredictしてください。 - FP16アセットは読み込み時に異常終了する可能性があります: 一部のFP16
.aimodelアセットではApple Neural Engineプログラムの読み込みに失敗し、MPSGraphがアサーション失敗を発生させます。この場合はフォールバックせずプロセスが終了します。これはAppleのランタイム内部で発生し、Ultralyticsのコードが実行される前に起こります。同じアセットはCPUのみの特化では読み込めます。上流で修正されるまではFP32を推奨します。
どのApple形式を使用すべきですか?#
次の要件がある場合は、現在はCore MLを使用してください:
- 現在および旧バージョンのApple OS全体へのデプロイ
- Ultralytics iOS SDKまたはFlutter SDKとの統合
- Visionフレームワークによる画像処理
- 検証済みのFP16およびINT8 YOLOデプロイ
- 互換性のあるレガシー検出モデル向けの組み込みNMS
iOS 27またはmacOS 27を要件にでき、次の要件がある場合は、Core AIを評価してください:
- 最新のAppleオンデバイスニューラルネットワークランタイム
- 明示的な特化およびキャッシュ管理
- 高度な動的またはステートフルモデル実行
- カスタムCore AIオペレーションまたはMetalカーネル
- 詳細なCore AIグラフデバッグとランタイムプロファイリング
アプリケーションが移行する間、Core MLとCore AIは共存すると予想されます。両者ではデプロイ対象とアプリケーションの契約が異なるため、Core AIをサポートしても、直ちにCore MLが不要になるわけではありません。
Ultralyticsのロードマップ#
専用の coreai エクスポートターゲットは実装済みです。エクスポートと数値検証はサポート対象のYOLO26タスクモデルを対象としており、macOS 26上のUltralytics CIで継続的に実行され、FP16レイテンシーはデバイス上で測定されます。Core AIがCore MLパスと同等になるまでの残りのロードマップは次のとおりです。
- Ultralytics iOS SDKでのCore AIモデルの読み込みと前処理。
- Flutter統合と、iOS 27未満のデバイス向け互換性戦略。
- Appleフレームワークおよび変換ツールの安定版リリース(iOS 27およびmacOS 27世代は現在ベータ版です)。
- サポート対象のデバイスマトリックス全体でのメモリ、電力、特化ベンチマーク。
Ultralytics iOS SDKまたはFlutter SDKが必要なアプリケーション、またはiOS 27未満をカバーする必要があるアプリケーションには、引き続きCore MLを推奨します。残りの項目については、Ultralyticsのロードマップ とリリースノートを確認してください。
追加リソース#
- Apple Core AIの概要
- Core AIフレームワークのドキュメント
- Core AI PyTorch Extensions
- Core AI Optimization
- Apple Core AIモデルリポジトリ
- Ultralytics Core ML統合
FAQ#
はい。macOS 26以降を実行しているAppleシリコン搭載Macでは、
model.export(format="coreai")またはyolo export format=coreaiを使用してエクスポートできます。エクスポートされた.aimodelはiOS 27およびmacOS 27で実行されます。UltralyticsのiOSおよびFlutter SDK、ならびにそれより前の世代のオペレーティングシステムでは、format="coreml"を使用してCore MLの.mlpackageファイルをエクスポートしてください。すぐに取って代わるわけではありません。Core AIは最新のニューラルネットワーク向けのAppleの新しい実行基盤であり、Core MLは引き続きサポートされ、より広範なオペレーティングシステムへの対応、Visionとの統合、ニューラルネットワーク以外のモデルのサポートを提供します。
いいえ。これらは異なるモデル表現を含み、それぞれ異なるフレームワークによって読み込まれます。変換は、適切なAppleツールチェーンを通じてソースモデルから開始する必要があります。
初期の統合はCore MLと併存する見込みです。将来的に置き換えるかどうかは、オペレーティングシステムの普及、ツールの安定性、パフォーマンス、そしてその後のiOSおよびFlutterのサポートによって決まります。