Core MLとは何か、フレームワークのアーキテクチャとモデル統合

著者: IT Sectr 公開日: 2026-07-17 読了時間: 10 分

Core MLはAppleの機械学習フレームワークで、予めトレーニングされたMLモデルをiOS、iPadOS、macOS、watchOS、tvOSアプリケーションに直接統合できます。このフレームワークは、ニューラルネットワーク、ディシジョンツリー、線形回帰、アンサンブル法をサポートし、TensorFlow、PyTorch、Keras、ONNXからApple独自のフォーマットへのモデル変換もサポートします。Apple Machine Learning Research (2025)によると、Core MLはデバイス上で完全に推論を実行し、データプライバシーを確保し、多くのモデルにと10ミリ秒未満のレイテンシーを実現します。

メインポイント

  • Core MLは、サーバー処理なしでデバイス上でMLモデルを実行するためのApple独自のフレームワークです。
  • TensorFlow、PyTorch、Keras、ONNX、その他人気のフォーマットからのモデル変換をサポートします。
  • 推論はNeural Engine、GPUまたはCPUで実行され、最適なコンピューティングバックエンドを自動選択します。
  • フレームワークには、量子化 (Float16, Int8)、プルーニング、加速のためのレイヤー融合などの最適化が含まれています。
  • Core ML 5 (2024)は.mlpackageパッケージ、動的ニューラルネットワーク、オンデバイス監督付き学習をサポートしました。

Core MLとは?

Core MLはAppleの機械学習エコシステムの重要なコンポーネントで、WWDC 2017で発表されました。Core ML以前、iOS開発者はサードパーティのライブラリ (TensorFlow Mobile, Caffe2) やカスタムソリューションを使ってデバイス上でMLモデルを実行していました。Core MLは、古典的な回帰から深层ニューラルネットワークまで、すべてのモデルタイプに対する単一の統一インターフェースを提供し、特定のデバイスに対するローレベルの最適化を担当しました。

開発履歴

Core ML (2017)の初版は、固定サイズの入力をもつ静的なモデルのみをサポートしていました。Core ML 2 (2018)はバッチ予測とリアルタイムのモデル更新をサポートしました。Core ML 3 (2019)はオンデバイストレーニングと新たなニューラルネットワークレイヤーをサポートしました。Core ML 4 (2021)は多出力モデルと改善された画像処理をサポートしました。Core ML 5 (2024)は動的ニューラルネットワークと新しいMLレイヤーを使用したオンデバイス監督付き学習をサポートしました。

オンデバイスMLのメリット

デバイス上で機械学習を実行すると、3つの主なメリットがあります: プライバシー — データがデバイスから外に出ることがない (GDPR・HIPAAの要件を満たします)、速さ — 推論がネットワークレイテンシーなしでミリ秒単位で完了する、オフライン利用可能 — インターネットに接続せずにモデルが動作する。Apple Privacy Report (2025)によると、Appleプラットフォーム上のML推論の90%以上がCore MLによりデバイス上で実行されています。

Core MLのアーキテクチャとコンピューティングバックエンド

Core MLのアーキテクチャは多層プリンシプルに基づいています: 上位レベルには開発者API (MLModel, MLFeatureProvider, MLPredictionOptions)、中位レベルには.mlpackageフォーマットのモデル、下位レベルにはコンピューティングバックエンド: Apple Neural Engine (ANE)、GPU (Metal Shaders)、CPU (BNNS, Accelerate framework)があります。Core MLは、モデルとデバイスハードウェアに応じて最適なバックエンドを自動的に選択します。

バックエンドデバイスパフォーマンス
Neural EngineiPhone Xs+, iPad A12+, Mac M1+最大 (TOPS)
GPU (Metal)すべてのAppleデバイス高い (並列計算)
CPU (BNNS)すべてのAppleデバイス基本的 (互換性)

Apple Neural Engine

Neural Engine (ANE)はApple A12+およびM1+チップに組み込まれた専用ニューラルプロセッサーです。ANEは、A17 Proで最大15.8 TOPS、M4で最大38 TOPSのパフォーマンスで、卷き込みニューラルネットワーク (CNN) 操作と行列乗算に最適化されています。Core MLは、モデルがANEで実行できるかどうかを自動的に判別し、できる場合はそこにロードします。モデルがANEでサポートされていない操作を含む場合、Core MLは計算をGPUとCPUに分散します。

Metal Performance Shaders

GPUでの計算には、Core MLはMetal Performance Shaders Graph (MPSGraph)を使用します。MPSGraphはGPU上で計算グラフを構築および実行するためのフレームワークです。MPSGraphはCore MLからニューラルネットワークグラフを取り、特定のGPUアーキテクチャ (7コアA17 GPUまたは40コアM4 Ultra GPU) に最適化されたMetal Shadersにコンパイルします。MPSGraphの自動最適化には、レイヤー融合、余分な操作の削除、最適データフォーマットの選択が含まれます。

サポートされるモデルタイプとフォーマット

Core MLは、主な機械学習モデルタイプをすべてサポートし、3つのカテゴリに分けられています: ニューラルネットワーク (卷き込みCNN、後退RNN/LSTM、トランスフォーマー)、アンサンブルモデル (Random Forest、Gradient Boosting、XGBoost、ディシジョンツリー)、回帰モデル (線形回帰、SVM、CRF)。各モデルタイプには独自のMLModelTypeサブプロトコルがあり、Core MLが適切なバックエンドと実行フォーマットを自動選択します。

サポートされるニューラルネットワークレイヤー

Core MLは150種類以上のニューラルネットワークレイヤーをサポートしています: Convolution (1D/2D/3D)、BatchNormalization、Pooling (Max/Average)、Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU)、Recurrent (LSTM/GRU/SimpleRNN)、Transformers (MultiHeadAttention, LayerNorm)、Metal固有レイヤー。サポートされていないレイヤーには、Core MLはカスタムレイヤーメカニズムを提供します — Metal Shading LanguageまたはSwiftでレイヤー実装を書くことができます。

swift
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)

モデルファイルフォーマット

2021年以前、Core MLは.mlmodelフォーマットを使用していました — すべてのモデル資重とメタデータを含む二進ファイルです。Xcode 13およびCore ML 4から、Appleは新しい.mlpackageフォーマットを導入しました — モデル、メタデータ、入力/出力説明、JSONの前/後処理ファイルを含むディレクトリベースのパッケージ構造です。mlpackageはgitバージョン管理をサポートし、チーム開発を簡素化します。.mlmodelから.mlpackageへの変換は、Xcode Model Compilerユーティリティまたはcoremltools Pythonスクリプトで実行できます。

Core MLへのモデル変換

変換はPythonのcoremltoolsライブラリを使って実行されます。coremltoolsはTensorFlow 1.x/2.x (SavedModel, PB, HDF5)、PyTorch (TorchScript, traced/scriptedモデル)、Keras (H5)、ONNX、Create MLからのモデルインポートをサポートしています。標準変換パイプラインは3つのステップからなります: 元のフォーマットでモデルをロードする、MIL (Model Intermediate Language) — Core MLの内部表現 — に変換する、.mlpackageにエクスポートする。

python
import coremltools as ct

model = ct.converters.pytorch.convert(
    source = "model.pt",
    inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")

変換後のモデル検証

変換後は、同じデータで元のモデルと変換後のCore MLモデルの予測を比較してモデルの精度を検証する必要があります。許容される偏差はFloat32では1e-3 (0.1%)以下、Float16/Int8では1e-2 (1%)以下です。coremltoolsは自動比較のためのct.utils.compare_models()ユーティリティを提供しています。偏差が基準を超える場合、サポートされていない操作が問題の可能性があります — カスタムレイヤーに置き換えるか、モデルを簡素化する必要があります。

Core MLのパフォーマンス最適化

最適化は、精度を大きく損なわずにモデルサイズを削減し、推論速度を向上させるプロセスです。AppleはcoremltoolsとXcodeに組み込まれたいくつかの最適化ツールを提供しています: 量子化 (資重の精度を下げる)、プルーニング (不要なニューロンを削除する)、余分なレイヤーを削除する、グラフを軽量化するためのレイヤー融合。

Float16とInt8への量子化

量子化では、Float32と比べてモデルサイズが約2倍 (Float16) または4倍 (Int8) に減少します。Core MLは3つの量子化モードをサポートしています: キャリブレーションデータセットを用いた学習後量子化 (PTQ)、coremltoolsによる変換中の量子化、量子化懂得学習 (QAT)。コンピュータビジョンモデルの多くでは、PTQによるFloat16への変換で、推論速度が倍化する一方、精度の悪化は0.5%未満です。

Xcodeでのモデルプロファイリング

XcodeはCore ML Model Profilerツールを提供し、シミュレータまたは実機でさまざまなデバイス上でのモデルパフォーマンスを測定できます。プロファイラーは、各レイヤーの実行時間、バックエンド負荷 (ANE/GPU/CPU)、ピークメモリ使用量、モデルのボトルネックを表示します。Apple Performance Optimization Guideによると、80%以上のモデルには、他のレイヤーよりも情報に遅く動作するレイヤーが少なくとも1つ存在し、置き換えまたは融合で最適化できます。

Core ML統合の実践例

Swiftを使ってiOSアプリにトレーニング済みCore MLモデルを統合する例を見てみましょう。.mlpackageファイルをXcodeプロジェクトに追加 (ドラッグまたはSwift Package Manager経由) すると、Xcodeがタイプ指定された入力と出力をもつSwiftモデルクラスを自動生成します。開発者は入力データを手動で解析する必要がありません — 生成されたクラスは、モデルのメタデータに応じてUIImage、MLMultiArray、Stringまたは他のタイプを受け付けます。

swift
import CoreML
import Vision

guard let model = try? VNCoreMLModel(
    for: MyImageClassifier().model
) else { return }

let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results
        as? [VNClassificationObservation]
    else { return }

    if let topResult = results.first {
        print("Class: \(topResult.identifier)")
        print("Confidence: \(topResult.confidence)")
    }
}

let handler = VNImageRequestHandler(
    cgImage: image.cgImage!,
    options: [:]
)
try handler.perform([request])

エラー処理とフォールバック

Core MLを統合する際はエラー処理を実装する必要があります: デバイスの互換性がない (サポートされていない古いiOSバージョン)、メモリ不足、モデルファイルの破損などの理由でモデルがロードできない可能性があります。フォールバックロジックを実装することをお勧めします: 量子化されたInt8フォーマットでモデルがロードできない場合はFloat16バージョンをロードし、それも失敗した場合はFloat32をロードします。Apple Crash Analyticsによると、MLアプリのクラッシュの5%以上がモデル読み込みの失敗によるものです。

Core MLとCreate MLの違い

Core MLCreate MLはApple MLエコシステムの4つの補完的なツールです。Core MLはデバイス上でのモデル実行 (推論) を担当し、Create MLはモデルのトレーニングを担当します。Create MLで作成されたモデルは、アプリへの統合のために特にCore MLフォーマット (.mlpackage) でエクスポートされます。ウェブ開発の比喡で言えば、Core MLはブラウザ(実行)、Create MLはコードを書くためのIDE(トレーニング)です。

パラメータCore MLCreate ML
目的モデル実行 (推論)モデルトレーニング
プラットフォームiOS, iPadOS, macOS, watchOS, tvOSmacOS (のみ)
フォーマット.mlpackage (消費).mlpackage (生成)
コードSwift / Objective-C APIXcode UI または Swift API
ユーザーアプリ開発者開発者 / データサイエンティスト

よくある質問

Core MLとは?

Core MLはiOS, iPadOS, macOS, watchOS, tvOSデバイス上で予めトレーニングされたMLモデルを実行するためのAppleの機械学習フレームワークです。ニューラルネットワーク、ディシジョンツリー、回帰をサポートし、最適なコンピューティングバックエンド (Neural Engine, GPU, CPU) を自動選択します。

Core MLはTensorFlowとどう違いますか?

TensorFlowはサーバーおよびモバイルデバイス上でモデルをトレーニングおよび実行するための万能フレームワークです。Core MLは、ハードウェア固有の最適化 (ANE, GPU, Metal) により最大のパフォーマンスを得るために、Appleデバイスでのみモデルを実行 (トレーニングではない) するための専門エンジンです。TensorFlow MobileはiOSではもうサポートされていません — Appleは自社のプラットフォームでのすべてのMLタスクにCore MLを推奨しています。

PyTorchモデルをCore MLに変換するには?

変換はPythonのcoremltoolsライブラリを使って実行します: PyTorchモデルをTorchScript (torch.jit.trace) にエクスポートし、ct.converters.pytorch.convert() を使って.mlpackageを作成します。coremltoolsはPyTorchレイヤーをサポートされたCore MLレイヤーに自動マッピングし、ANE向けにグラフを最適化します。

Core MLはすべてのiPhoneで動作しますか?

Core MLはiOS 11以降のすべてのiPhoneで動作します。ただし、パフォーマンスはハードウェアに依存します: iPhone 5s/6 — CPUのみ(遅い推論)、iPhone 8/X — GPU (Metal)、iPhone Xs以降 — Neural Engine (A17 Proで最大15.8 TOPS)。最もよいパフォーマンスを得るには、最低iOSバージョンを12+ に設定することをお勧めします。

Core MLモデルのフォーマットは?

現代のフォーマットは.mlpackageです (モデル、メタデータ、入力/出力説明を含むディレクトリ)。レガシーフォーマットは.mlmodel (単一の二進ファイル)です。Xcodeはビルド中に.mlmodelを.mlpackageに自動変換しますが、新しいプロジェクトでは.mlpackageを直接使用することをお勧めします。

まとめ

  • Core MLは、エコシステム全プラットフォームで動作するオンデバイス機械学習のためのApple標準フレームワークです。
  • Pythonのcoremltoolsライブラリを介してTensorFlow、PyTorch、Keras、ONNXからの変換をサポートします。
  • 推論はNeural Engine (iPhone Xs+)、GPU (Metal) またはCPUで、自動バックエンド選択により実行されます。
  • Float16、Int8への量子化でモデルサイズが2-4倍減少し、精度の悪化は最小限です。
  • Create MLはCore ML向けにモデルを生成し、Core MLはそれを実行するだけです — これらは異なるツールです。
  • .mlpackageフォーマットがレガシーの.mlmodelに置き換わり、JSONでバージョン管理とメタデータを提供します。
  • XcodeのCore ML Profilerでボトルネックを特定し、レイヤー置き換えで最適化できます。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください