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 — چارچوب انحصاری Apple برای اجرای مدل‌های ML روی دستگاه بدون پردازش سروری.
  • از تبدیل مدل‌ها از 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) پشتیبانی از batch prediction و به‌روزرسانی مدل‌ها در حال اجرا را اضافه کرد. Core ML 3 (2019) یادگیری روی دستگاه و پشتیبانی از ده‌ها لایه جدید شبکه عصبی را ارائه داد. Core ML 4 (2021) پشتیبانی از مدل‌های چند خروجی و پردازش تصویر بهبودیافته را معرفی کرد. Core ML 5 (2024) پشتیبانی از شبکه‌های عصبی پویا و یادگیری نظارت‌شده روی دستگاه با استفاده از لایه‌های جدید ML را اضافه کرد.

مزایای ML روی دستگاه

اجرای یادگیری ماشین روی دستگاه سه مزیت کلیدی ارائه می‌دهد: محرمانه بودن — داده‌ها دستگاه را ترک نمی‌کنند (مطابق با نیازهای GDPR و HIPAA)، سرعت — استنباط طی میلی‌ثانیه بدون تاخیر انتقال داده انجام می‌شود، دسترسی آفلاین — مدل بدون اتصال اینترنت کار می‌کند. به گزارش Apple Privacy Report (2025)، بیش از 90% استنباط‌های ML در پلتفرم‌های Apple به دلیل 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 برای انجام عملیات شبکه‌های عصبی التفافی (CNN) و ضرب ماتریس با عملکرد تا 15.8 TOPS در A17 Pro و 38 TOPS در M4 بهینه‌سازی شده است. Core ML به طور خودکار تشخیص می‌دهد که آیا مدل را می‌توان روی ANE اجرا کرد، و اگر بله، آن را آنجا بارگیری می‌کند. اگر مدل حاوی عملیاتی است که توسط ANE پشتیبانی نمی‌شود، Core ML محاسبات را بین GPU و CPU تقسیم می‌کند.

Metal Performance Shaders

برای محاسبات روی GPU، Core ML از Metal Performance Shaders Graph (MPSGraph) — چارچوبی برای ساخت و اجرای گراف‌های محاسباتی روی GPU استفاده می‌کند. MPSGraph گراف شبکه عصبی را از Core ML گرفته و آن را به Metal Shaders بهینه‌سازی شده برای معماری خاص GPU (A17 GPU 7 هسته‌ای یا M4 Ultra GPU 40 هسته‌ای) تبدیل می‌کند. بهینه‌سازی‌های خودکار MPSGraph شامل ادغام لایه‌ها، حذف عملیات اضافی و انتخاب فرمت داده بهینه است.

نوع‌های مدل و فرمت‌های پشتیبانی‌شده

Core ML از همه انواع اصلی مدل‌های یادگیری ماشین پشتیبانی می‌کند، که به سه دسته تقسیم می‌شوند: شبکه‌های عصبی (CNN التفافی، RNN/LSTM بازگشتی، ترانسفورمرها)، مدل‌های انسامبل (Random Forest، Gradient Boosting، XGBoost، Decision Trees) و مدل‌های رگرسیونی (رگرسیون خطی، 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 مکانیسم custom layer را فراهم می‌کند — امکان نوشتن پیاده‌سازی لایه در 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

تبدیل مدل‌ها از چارچوب‌های شخص ثالث به Core ML با استفاده از کتابخانه coremltools در Python انجام می‌شود. coremltools از ورود مدل‌ها از TensorFlow 1.x/2.x (SavedModel، PB، HDF5)، PyTorch (TorchScript، مدل‌های traced/scripted)، Keras (H5)، ONNX و ایجاد شده توسط Create ML پشتیبانی می‌کند. خط لوله تبدیل سام شامل سه مرحله است: بارگیری مدل در فرمت اصلی، تبدیل به 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 تبدیل‌شده روی داده‌های یکسان بررسی کرد. تفاوت مجاز — حداکثر 1e-3 (0.1%) برای Float32 و 1e-2 (1%) برای Float16/Int8. coremltools ابزار ct.utils.compare_models() را برای مقایسه خودکار فراهم می‌کند. اگر تفاوت از حد مجاز بیشتر باشد، مشکل می‌تواند در عملیات پشتیبانی نشده باشد — آنها باید با custom layers جایگزین شوند یا مدل ساده‌سازی شود.

بهینه‌سازی عملکرد Core ML

بهینه‌سازی مدل Core ML فرآیندی است برای کاهش اندازه مدل و افزایش سرعت استنباط بدون از دست دادن دقت قابل توجه. Apple چندین ابزار بهینه‌سازی را که در coremltools و Xcode ساخته شده‌اند ارائه می‌دهد: کوانتیزاسیون (کاهش دقت وزن‌ها)، هرس‌کردن (حذف نرون‌های کم اهمیت)، حذف لایه‌های اضافی و ادغام لایه‌ها (fusion) برای کاهش گراف محاسباتی.

کوانتیزاسیون به Float16 و Int8

کوانتیزاسیون اندازه مدل را تقریباً 2 برابر (Float16) یا 4 برابر (Int8) در مقایسه با Float32 کاهش می‌دهد. Core ML از سه حالت کوانتیزاسیون پشتیبانی می‌کند: کوانتیزاسیون پس از آموزش (PTQ) با داده‌های کالیبراسیونی، در حین تبدیل از طریق coremltools و آموزش با توجه به کوانتیزاسیون (QAT). برای اکثر مدل‌های بینایی کامپیوتری، PTQ به Float16 کمتر از 0.5% از دست دادن دقت را در حالی که سرعت استنباط را دو برابر می‌کند، ایجاد می‌کند.

پروفایل مدل در Xcode

Xcode ابزار Core ML Model Profiler را فراهم می‌کند که به شما امکان می‌دهد عملکرد مدل را روی دستگاه‌های مختلف در شبیه‌ساز یا دستگاه واقعی اندازه‌گیری کنید. پروفایلر زمان اجرای هر لایه، بار محاسبه‌گر (ANE/GPU/CPU)، مصرف حداکثر حافظه و گرفتگاه‌های مدل را نشان می‌دهد. به گزارش Apple Performance Optimization Guide، بیش از 80% مدل‌ها حاوی دست‌کم یک لایه هستند که به طور قابل توجهی کندتر از سایرین کار می‌کنند (انومالی لایه) که می‌توان آن را با جایگزینی یا ادغام بهینه‌سازی کرد.

مثال عملی یکپارچگی Core ML

یکپارچگی مدل Core ML آموزش‌دیده را در یک برنامه iOS به زبان Swift بررسی می‌کنیم. پس از افزودن فایل .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])

پیش‌بینی خطاها و fallback

در یکپارچگی Core ML باید پیش‌بینی خطا را در نظر بگیرید: مدل ممکن است به دلیل ناسازگاری با دستگاه (نسخه خیلی کهنه iOS)، کمبود حافظه یا آسیب دیدگی فایل مدل بارگیری نشود. پیشنهاد می‌شود منطق fallback پیاده‌سازی شود: اگر مدل در فرمت Int8 کوانتیزه شده بارگیری نشد، نسخه Float16 را بارگیری کنید، و اگر آن هم بارگیری نشد — Float32. به گزارش Apple Crash Analytics، بیش از 5% از خطاهای برنامه‌های ML در اثر بارگیری نادرست مدل است.

Core ML در مقابل Create ML: تفاوت چیست

Core ML و Create ML دو ابزار مکمل اکوسیستم Apple ML هستند. Core ML مسئول اجرای مدل‌ها روی دستگاه (استنباط) است، در حالی که Create ML مسئول آموزش مدل‌ها (ترینینگ) است. مدل‌های ایجاد شده در Create ML به فرمت Core ML (.mlpackage) برای یکپارچگی بعدی در برنامه‌ها صادر می‌شوند. اگر قیاس با توسعه وب انجام دهیم، Core ML مرورگر است (اجرا)، و Create ML ایدی برای نوشتن کد (آموزش) است.

پارامترCore MLCreate ML
کاربرداجرای مدل‌ها (استنباط)آموزش مدل‌ها (ترینینگ)
پلتفرمiOS، iPadOS، macOS، watchOS، tvOSmacOS (تنها)
فرمت.mlpackage (مصرف می‌کند).mlpackage (ایجاد می‌کند)
کدSwift / Objective-C APIUI (Xcode) یا Swift API
کاربرتوسعه‌دهنده برنامهتوسعه‌دهنده / دانشمند داده

سوالات متداول

Core ML چیست؟

Core ML — چارچوب یادگیری ماشین Apple است برای اجرای مدل‌های از پیش آموزش‌دیده ML روی دستگاه‌های iOS، iPadOS، macOS، watchOS و tvOS. از شبکه‌های عصبی، درخت‌های تصمیم و رگرسیون‌ها پشتیبانی می‌کند و به طور خودکار بهترین محاسبه‌گر (Neural Engine، GPU یا CPU) را انتخاب می‌کند.

تفاوت Core ML با TensorFlow چیست؟

TensorFlow — یک چارچوب جهانی برای آموزش و اجرای مدل‌ها روی سرورها و دستگاه‌های موبایل است. Core ML — یک موتور تخصصی برای اجرا (نه آموزش) مدل‌ها تنها روی دستگاه‌های Apple با حداکثر عملکرد است که به لطف بهینه‌سازی برای سخت‌افزار مشخص (ANE، GPU، Metal) است. TensorFlow Mobile دیگر در iOS پشتیبانی نمی‌شود — Apple Core ML را برای همه وظایف ML در پلتفرم‌های خود توصیه می‌کند.

چگونه مدل PyTorch را به Core ML تبدیل کنیم؟

تبدیل با استفاده از کتابخانه coremltools در Python انجام می‌شود: مدل PyTorch را به TorchScript (torch.jit.trace) صادر کنید، سپس از ct.converters.pytorch.convert() برای ایجاد .mlpackage استفاده کنید. coremltools به طور خودکار لایه‌های PyTorch را به لایه‌های پشتیبانی‌شده Core ML نقشه می‌کند و گراف را برای ANE بهینه‌سازی می‌کند.

آیا Core ML روی همه iPhone ها کار می‌کند؟

Core ML روی همه iPhone های با iOS 11 و بالاتر کار می‌کند. اما عملکرد به سخت‌افزار بستگی دارد: iPhone 5s/6 — تنها CPU (استنباط کند)، iPhone 8/X — GPU (Metal)، iPhone Xs و بالاتر — Neural Engine (حداکثر عملکرد تا 15.8 TOPS در A17 Pro). برای دستیابی به بهترین عملکرد، توصیه می‌شود حداقل نسخه iOS 12+ را مشخص کنید.

فرمت مدل‌های Core ML چیست؟

فرمت جدید — .mlpackage (پوشه‌ای شامل مدل، ابعاد و توصیف ورودی/خروجی). فرمت کهنه — .mlmodel (یک فایل دودویی تکی). Xcode به طور خودکار .mlmodel را در زمان کامپیل به .mlpackage تبدیل می‌کند، اما برای پروژه‌های جدید توصیه می‌شود مستقیماً از .mlpackage استفاده کنید.

نتیجه‌گیری

  • Core ML — چارچوب استاندارد Apple برای یادگیری ماشین روی دستگاه، که روی همه پلتفرم‌های اکوسیستم کار می‌کند.
  • از تبدیل از TensorFlow، PyTorch، Keras و ONNX از طریق کتابخانه coremltools در Python پشتیبانی می‌کند.
  • استنباط روی Neural Engine (iPhone Xs+)، GPU (Metal) یا CPU با انتخاب خودکار محاسبه‌گر انجام می‌شود.
  • کوانتیزاسیون به Float16 و Int8 اندازه مدل را 2-4 برابر با حداقل از دست دادن دقت کاهش می‌دهد.
  • Create ML مدل‌هایی برای Core ML تولید می‌کند و Core ML تنها آنها را اجرا می‌کند — این ابزارهای مختلفی هستند.
  • فرمت .mlpackage جایگزین .mlmodel کهنه شده و ورژن‌گیری و ابعاد در JSON را فراهم می‌کند.
  • Core ML Profiler در Xcode به شما امکان شناسایی گرفتگاه‌ها مدل و بهینه‌سازی آنها با جایگزینی لایه را می‌دهد.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید