Apple Core AI統合#
coreai-coreはmacosx_26_0_arm64とmanylinux_2_34_x86_64のホイールを公開しているため、エクスポートはAppleシリコン搭載Macおよびglibc 2.34以降のx86_64 Linuxで実行できます。エクスポートされた.aimodelは、iOS 27およびmacOS 27で動作します。Ultralytics iOS SDK(8.9.15以降)とFlutterプラグイン(0.6.15以降)は、iOS 27デバイスでオプトイン方式として.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オペレーティングシステム。現在ベータ版です | 既存のAppleオペレーティングシステムで幅広くサポートされています |
| Ultralytics iOS SDKとFlutter SDK | iOS 27以降のデバイスでオプトイン方式で利用可能 | 完全にサポートされており、デフォルトです |
幅広いデバイスへの対応、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") # 'yolo26n.aimodel'を作成します
model.export(format="coreai", quantize=16) # FP16 asset
# エクスポートしたモデルを実行します
coreai_model = YOLO("yolo26n.aimodel")
results = coreai_model("https://ultralytics.com/images/bus.jpg")引数の一覧については、エクスポートモードをご覧ください。グラフは静的です。exportに指定したimgszのサイズでトレースされるため、同じサイズで予測してください。Ultralyticsのメタデータはアセット独自のmetadata.json内に保持されるため、クラス名、ストライド、タスクは変換後も維持されます。
ヘッドの選択#
nms=Falseの場合、YOLO26はエンドツーエンドヘッドをエクスポートし、グラフ内で検出結果を選択します。Core AIにはtop-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では、640サイズのYOLO26nは、ヘッドをグラフに含めた場合に3.01 ms、含めない場合に1.28 msです(FP16、事前コンパイル済み、50反復のブロックを3回交互に実行)。どちらも推論にはYOLO(...)を使用します。1回のグラフ呼び出しで完成した検出結果を返す必要がある場合はnms=Falseを使用し、外部NMSを使用する場合はデフォルトのnms=Noneを維持してください。
iOS 27またはmacOS 27では、アプリケーションはAppleのCore AI Swift APIを介してエクスポート済みアセットを読み込み、実行します。エクスポート済みアセットはエントリーポイントmainを使用し、形状が[batch, 3, imgsz, imgsz]のimages入力を1つ受け取り、output0を返します(インスタンスセグメンテーションモデルではoutput1も返します)。
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のワークフローとは異なり、Ultralytics iOS SDKのCore AI経路では、レターボックス前処理とNDArrayの構築を独自に行い、アセットのmetadata.jsonから同じUltralyticsメタデータを読み取り、Core ML出力デコーダーを再利用します。アプリが.aimodelパスまたは.aimodel.zip URLを渡すと読み込まれます。Appleは、Core AIフレームワークのドキュメントで最新のAPI詳細を、Core AIモデルリポジトリで動作するモデル例を提供しています。
実測パフォーマンス#
YOLO26n FP16(quantize=16)のCore MLおよびCore AIエクスポートについて、デフォルトのrawヘッド(nms=None)を使用したエンドツーエンドの単一画像推論を、16 GBメモリとmacOS 27.0を搭載したApple M4搭載Mac mini(Performance CPUコア4基、Efficiency CPUコア6基、10コアGPU、16コアNeural Engine)で測定しました。Core ML推論にはultralytics 8.4.168とcoremltools 9.0を、Python 3.13でのCore AI推論にはcoreai-torch 0.4.3とcoreai-core 1.0.0b3を使用しました。各セルには合計時間(前処理+推論+後処理)が表示され、その下に各ステージの内訳が示されています。
| モデル | タスク | サイズ (ピクセル) | Core ML CPUCPU_ONLY(ms) | Core ML CPU + ANE優先CPU_AND_NE(ms) | Core AI CPUcpu_only()(ms) | Core AI CPU + ANE優先neural_engine()(ms) |
|---|---|---|---|---|---|---|
| YOLO26n | Detect | 640 | 14.4 0.6 / 13.4 / 0.4 | 7.6 0.6 / 6.7 / 0.4 | 16.8 0.6 / 15.9 / 0.3 | 2.8 0.6 / 2.0 / 0.2 |
| YOLO26n-seg | Segment | 640 | 18.7 0.6 / 16.5 / 1.5 | 9.2 0.6 / 7.1 / 1.5 | 25.3 0.6 / 23.2 / 1.5 | 5.1 0.6 / 3.1 / 1.4 |
| YOLO26n-sem | セマンティック | 640 | 33.9 1.3 / 32.2 / 0.4 | 73.7 1.4 / 71.9 / 0.4 | 47.1 1.2 / 38.5 / 7.4 | 18.7 1.2 / 11.1 / 6.4 |
| YOLO26n-depth | 深度 | 640 | 36.8 0.8 / 35.5 / 0.5 | 12.1 0.9 / 10.7 / 0.5 | 40.2 0.8 / 39.0 / 0.5 | 7.5 0.7 / 6.3 / 0.5 |
| YOLO26n-cls | 分類 | 224 | 3.8 1.9 / 1.8 / 0.0 | 3.3 1.9 / 1.4 / 0.0 | 3.0 1.9 / 1.0 / 0.0 | 2.4 1.9 / 0.6 / 0.0 |
| YOLO26n-pose | 姿勢推定 | 640 | 15.5 0.6 / 14.6 / 0.3 | 7.0 0.6 / 6.2 / 0.3 | 17.8 0.5 / 17.0 / 0.3 | 2.7 0.5 / 2.0 / 0.2 |
| YOLO26n-obb | OBB | 640 | 32.7 1.3 / 31.1 / 0.2 | 16.9 1.5 / 15.2 / 0.2 | 37.2 1.1 / 35.9 / 0.2 | 5.7 1.3 / 4.3 / 0.1 |
- 速度の値は単一画像のバーストレイテンシです。Ultralytics Python APIを通じて、
bus.jpg上で各モデルと演算ユニットを新しいプロセスで実行し、3回のウォームアップ呼び出し後にpredictを15回呼び出した際の平均値です。CPUとアクセラレータの順序は、1回の逐次スイープでタスクごとに交互にしました。Core MLの行はcoremltools.ComputeUnit.CPU_ONLYまたはCPU_AND_NEで読み込まれます。Core AIの行はSpecializationOptions.cpu_only()またはSpecializationOptions.from_preferred_compute_unit_kind(ComputeUnitKind.neural_engine())でspecializeされ、最終的な演算の配置は各フレームワークによって制御されます。 - Detect、segment、classify、pose、OBBでは、すべての演算ユニットで両フォーマットの予測結果が一致しました。このMacでは、Core MLのFP16セマンティックモデルはNeural Engineを優先した場合、CPUのみの場合よりも遅くなります。また、Core AIのセマンティック後処理には6.4~7.4 msかかるのに対し、Core MLでは0.4 msです。
- iPhone 17 Pro上でのオンデバイス結果をCoreML統合で比較してください。
Core AIのメリット#
Core AIには、将来のUltralyticsのデプロイに役立つ可能性のあるメリットがいくつかあります。
- 最新のPyTorchエクスポートパス:変換は
torch.exportから開始され、多くの既存のエクスポーターで使用されるトレーシングワークフローよりも表現力の高いPyTorchグラフを保持します。 - きめ細かなランタイム制御:アプリケーションでは、specialization、コンパイル済みモデルのキャッシュ、推論関数、メモリ、演算の配置を管理できます。
- 高度なモデルサポート:ステートフル実行、動的シェイプ、1つのアーティファクト内の複数関数、カスタムMetalカーネルに対応しており、最新のビジョンモデルや生成モデル向けに設計されています。
- 専用の開発者ツール:Core AI Debuggerでは、グラフやテンソル値を調べ、元のPythonコードまで追跡できます。ランタイムのプロファイリングにはXcodeとInstrumentsを利用できます。
- ゼロコピーの可能性:Core AIはストレージとバッファを制御できるため、カメラ、グラフィックス、推論のワークロード間のコピーを削減できます。
- Appleシリコン向け最適化:デバイスのspecializationにより、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のバージョン範囲よりも大幅に狭い範囲です。 - エクスポート対応プラットフォームが限定的:
coreai-coreが公開しているのはmacosx_26_0_arm64およびmanylinux_2_34_x86_64のホイールのみです。そのため、format=coreaiにはmacOS 26以降を搭載したAppleシリコンMac、またはglibc 2.34以降を搭載したx86_64 Linux(Ubuntu 22.04以降など)が必要です。.aimodelの実行には、引き続きApple製ハードウェアが必要です。 - Ultralytics SDKではオプトインであり、デフォルトではありません:iPhone 17 Proでのオンデバイス比較では、パイプライン全体でCore AIはCore MLを上回らず同等の結果で、セマンティック、深度、CPUのみの推論は低速です。また、FP16アセットのダウンロードサイズは約2倍です。そのため、iOS SDKとFlutterプラグインではCore MLをデフォルトにしています。
- SDKではraw headを使用:
nms=Falseでは、YOLO26nのCore AIでの実行時間はCore MLの約2倍(比較実行の1回では3.06 ms対1.53 ms)で、FP16のエンドツーエンド姿勢推定モデルは、iOS 27.0でCore AIのデフォルト配置を使用すると検出結果を返しません(apple/coreai-torch#115)。デフォルトのraw head(nms=None)ならどちらの問題も回避でき、SDKはSwiftでNMSを実行します。headの選択を参照してください。 - iOS Simulatorのランタイムはありません:iOS Simulator SDKにはCore AIが含まれていません。
- アプリケーションの移行が必要:
.aimodelを.mlpackageに置き換えることはできません。モデルの読み込み、前処理、推論呼び出し、メタデータ処理、出力のデコードには、Core AIの実装が必要です。Ultralytics SDKはその実装を提供します。 - 本番環境での実績が限定的:サポート対象のYOLOタスクとデバイスの組み合わせ全体で、パフォーマンス、消費電力、初回specialization時間、精度、圧縮を検証する必要があります。
- NMSパイプラインはありません:Core MLでは、古いYOLO検出モデル向けにNMSステージをパッケージ化できます。Core AIはデフォルトでraw one-to-many予測をエクスポートします。YOLO26のNMS-free headには
nms=Falseを使用してください。埋め込みNMS(nms=True)とdynamic=Trueには対応していません。coreai-torchにはtorchvision::nms向けのloweringがないため、NMSはホスト側で実行されます。 - 入力サイズは固定:エクスポートされたグラフは1つの
imgszでトレースされ、動的シェイプには対応していません。そのため、エクスポート時と同じサイズで推論してください。 - FP16アセットの読み込み時に異常終了する場合があります:一部のFP16
.aimodelアセットでは、Apple Neural Engineプログラムの読み込みに失敗し、MPSGraphがアサーション失敗を発生させます。フォールバックせずにプロセスが終了します。これはUltralyticsコードの実行前にAppleのランタイム内で発生しますが、同じアセットはCPUのみのspecializationでは読み込めます。アセットでこの問題が発生する場合は、FP32にフォールバックしてください。iPhone 17 Proで確認したFP16 SDKアセット(すべてのnanoモデル、各サイズのdetectモデル、各タスクの最大モデル)では、異常終了は発生しませんでした。
どのAppleフォーマットを選ぶべきですか?#
次の要件がある場合は、現時点ではCore MLを使用してください。
- 現在および旧世代のApple OSへのデプロイ
- Ultralytics iOS SDKまたはFlutter SDKのデフォルトパス
- Vision frameworkによる画像処理
- 検証済みのFP16およびINT8 YOLOデプロイ
- 互換性のある従来型の検出モデル向け埋め込みNMS
iOS 27またはmacOS 27を必須にでき、次の要件がある場合は、Core AIを評価してください。
- 最新のAppleオンデバイスニューラルネットワークランタイム
- 明示的なspecializationとキャッシュ管理
- 高度な動的またはステートフルなモデル実行
- カスタム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パスと同等になるまでに残されているロードマップ項目は次のとおりです。
- Apple Neural Engineでのエンドツーエンドのheadレイテンシの差を解消すること(apple/coreai-torch#66)、およびNeural Engineの正確性に関する問題を解決すること(apple/coreai-torch#115、#116)。
- INT8およびパレタイズ済みCore AIアセット。SDKアセットはFP16で、INT8のCore MLアセットと比べてダウンロードサイズが約2倍です。
- Appleフレームワークと変換ツールの安定版リリース(iOS 27およびmacOS 27世代は現在ベータ版です)。
- サポート対象のデバイス構成全体でのメモリ、電力、specializationのベンチマーク。
Ultralytics iOS SDKとFlutterプラグインでは、iOS 27以降でCore AIをオプトインとして読み込めます。iOS 27未満をカバーする場合は、引き続きCore MLがデフォルトかつ推奨のターゲットです。残りの項目については、Ultralyticsのロードマップとリリースノートをご確認ください。
その他のリソース#
- Apple Core AIの概要
- Core AIフレームワークのドキュメント
- Core AI PyTorch Extensions
- Core AI Optimization
- Apple Core AIモデルリポジトリ
- Ultralytics Core ML統合
よくある質問#
はい。macOS 26以降を搭載したAppleシリコンMac、またはglibc 2.34以降を搭載したx86_64 Linuxで、
model.export(format="coreai")またはyolo export format=coreaiを使用してエクスポートできます。エクスポートした.aimodelはiOS 27およびmacOS 27で動作します。Ultralytics iOS SDKとFlutter SDKでは、iOS 27デバイス上でオプトインとして読み込めます。デフォルトのパスとして、またこの世代より前のOS向けには、format="coreml"を使用してCore MLの.mlpackageファイルをエクスポートしてください。すぐには取って代わりません。Core AIは最新のニューラルネットワーク向けのAppleの新しいパスですが、Core MLも引き続きサポートされており、より広いOS範囲、Visionとの統合、ニューラルネットワーク以外のモデルのサポートを提供します。
いいえ。これらは異なるモデル表現を含み、異なるフレームワークで読み込まれます。適切なAppleツールチェーンを通じて、ソースモデルから変換する必要があります。
初期の統合はCore MLと併存する見込みです。将来的に置き換えるかどうかは、OSの普及状況、ツールの安定性、オンデバイスのパフォーマンスによって決まります。