Core ML هو إطار التعلم الآلي من Apple الذي يسمح لك بدمج نماذج التعلم الآلي المدربة مسبقًا مباشرة في تطبيقات iOS، iPadOS، macOS، watchOS و tvOS. يدعم الإطار الشبكات العصبية، أشجار القرار، الانحدارات الخطية وطرق المجموعات، بالإضافة إلى تحويل النماذج من TensorFlow، PyTorch، Keras و ONNX إلى تنسيق Apple الخاص. وفقًا لأبحاث Apple Machine Learning Research (2025)، ينفذ Core ML الاستنتاج بالكامل على الجهاز، مما يضمن خصوصية البيانات وزمن استجابة أقل من 10 ميلي ثانية لمعظم النماذج.
النقاط الرئيسية
Core ML هو مكون رئيسي في نظام Apple البيئي للتعلم الآلي، تم تقديمه في WWDC 2017. قبل Core ML، كان مطورو iOS يستخدمون مكتبات خارجية (TensorFlow Mobile، Caffe2) أو حلولاً مخصصة لتشغيل نماذج التعلم الآلي على الجهاز. وفر Core ML واجهة موحدة واحدة لجميع أنواع النماذج — من الانحدارات الكلاسيكية إلى الشبكات العصبية العميقة — وتولى التحسين المنخفض المستوى للجهاز المحدد.
النسخة الأولى من Core ML (2017) كانت تدعم فقط النماذج الثابتة بأحجام مدخلات ثابتة. Core ML 2 (2018) أضاف دعم التنبؤ بالدفعة وتحديثات النموذج أثناء التشغيل. Core ML 3 (2019) جلب التدريب على الجهاز ودعم عشرات الطبقات الجديدة للشبكات العصبية. Core ML 4 (2021) قدم دعم النماذج متعددة المخرجات ومعالجة الصور المحسنة. Core ML 5 (2024) أضاف دعم الشبكات العصبية الديناميكية والتعلم الموجه على الجهاز باستخدام طبقات ML جديدة.
يوفر تشغيل التعلم الآلي على الجهاز ثلاث مزايا رئيسية: الخصوصية — لا تغادر البيانات الجهاز (تلبي متطلبات GDPR و HIPAA)، السرعة — يكتمل الاستنتاج خلال ميلي ثانية دون تأخير الشبكة، التوافر بدون اتصال — يعمل النموذج دون اتصال بالإنترنت. وفقًا لتقرير Apple Privacy Report (2025)، أكثر من 90% من عمليات استنتاج التعلم الآلي على منصات Apple تتم على الجهاز بفضل Core ML.
معمارية Core ML مبنية على مبدأ متعدد الطبقات: في المستوى العلوي — API للمطور (MLModel، MLFeatureProvider، MLPredictionOptions)، في المستوى الأوسط — النموذج بتنسيق .mlpackage، في المستوى الأدنى — بيئات الحساب: Apple Neural Engine (ANE)، GPU (Metal Shaders)، CPU (BNNS، Accelerate framework). يختار Core ML تلقائيًا أفضل بيئة حسابية حسب النموذج وجهاز الجهاز.
| البيئة | الأجهزة | الأداء |
|---|---|---|
| Neural Engine | iPhone Xs+، iPad A12+، Mac M1+ | أقصى (TOPS) |
| GPU (Metal) | جميع أجهزة Apple | عالي (حساب متوازي) |
| CPU (BNNS) | جميع أجهزة Apple | أساسي (توافق) |
Neural Engine (ANE) هو معالج عصبي متخصص مضمن في رقائق Apple A12+ و M1+. ANE محسن لتنفيذ عمليات الشبكات العصبية التلفيفية (CNN) ومضاعفات المصفوفات بأداء يصل إلى 15.8 TOPS على A17 Pro و 38 TOPS على M4. يحدد Core ML تلقائيًا ما إذا كان النموذج يمكن أن يعمل على ANE، وإذا كان كذلك، يقوم بتحميله هناك. إذا كان النموذج يحتوي على عمليات غير مدعومة من ANE، يقوم Core ML بتوزيع الحساب بين GPU و CPU.
للحسابات على GPU، يستخدم Core ML Metal Performance Shaders Graph (MPSGraph)، وهو إطار لبناء وتنفيذ الرسوم البيانية على GPU. يأخذ MPSGraph رسم الشبكة العصبية من Core ML ويجمعه في Metal Shaders محسنة لهندسة GPU المحددة (GPU A17 بـ 7 نواة أو GPU M4 Ultra بـ 40 نواة). تشمل التحسينات التلقائية لـ MPSGraph دمج الطبقات، إزالة العمليات الزائدة واختيار تنسيق البيانات الأمثل.
يدعم Core ML جميع الأنواع الرئيسية لنماذج التعلم الآلي، مقسمة إلى ثلاث فئات: الشبكات العصبية (CNN تلفيفية، RNN/LSTM متكررة، محولات)، نماذج المجموعات (Random Forest، Gradient Boosting، XGBoost، أشجار القرار) و نماذج الانحدار (انحدار خطي، SVM، CRF). كل نوع نموذج له بروتوكوله الفرعي MLModelType، ويختار Core ML تلقائيًا البيئة المناسبة وتنسيق التنفيذ.
يدعم Core ML أكثر من 150 نوعًا من طبقات الشبكات العصبية: التلفيف (1D/2D/3D)، BatchNormalization، Pooling (Max/Average)، التنشيط (ReLU، Sigmoid، Tanh، LeakyReLU، PReLU)، المتكررة (LSTM/GRU/SimpleRNN)، المحولات (MultiHeadAttention، LayerNorm)، طبقات خاصة بـ Metal. للطبقات غير المدعومة، يوفر Core ML آلية الطبقة المخصصة — القدرة على كتابة تنفيذ طبقة بلغة Metal Shading Language أو 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 يتم باستخدام مكتبة coremltools في Python. تدعم coremltools استيراد النماذج من TensorFlow 1.x/2.x (SavedModel، PB، HDF5)، PyTorch (TorchScript، نماذج متعقبة/مبرمجة)، Keras (H5)، ONNX وتلك المنشأة باستخدام Create ML. يتكون خط أنابيب التحويل القياسي من ثلاث خطوات: تحميل النموذج بتنسيقه الأصلي، التحويل إلى MIL (Model Intermediate Language) — التمثيل الداخلي لـ Core ML، والتصدير إلى .mlpackage.
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() للمقارنة التلقائية. إذا تجاوز الانحراف المعيار، فقد يكون هناك مشكلة في عمليات غير مدعومة — يجب استبدالها بطبقات مخصصة أو تبسيط النموذج.
تحسين نموذج Core ML هو عملية تقليل حجم النموذج وزيادة سرعة الاستنتاج دون فقدان كبير في الدقة. توفر Apple عدة أدوات تحسين مضمنة في coremltools و Xcode: الكمم (تقليل دقة الأوزان)، التقليم (إزالة الخلايا العصبية غير المهمة)، إزالة الطبقات الزائدة ودمج الطبقات لتقليل الرسم البياني الحسابي.
الكمم يقلل حجم النموذج بتقريب 2 مرات (Float16) أو 4 مرات (Int8) مقارنة بـ Float32. يدعم Core ML ثلاثة أوضاع للكمم: الكمم بعد التدريب (PTQ) مع مجموعة بيانات معايرة، أثناء التحويل عبر coremltools والتدريب مراعي الكمم (QAT). لمعظم نماذج رؤية الكمبيوتر، يؤدي PTQ إلى Float16 إلى فقدان دقة أقل من 0.5% مع مضاعفة سرعة الاستنتاج.
يوفر Xcode أداة Core ML Model Profiler، التي تسمح لك بقياس أداء النموذج على أجهزة مختلفة في المحاكي أو على جهاز حقيقي. يظهر المحلل وقت تنفيذ كل طبقة، حمل البيئة (ANE/GPU/CPU)، ذروة استخدام الذاكرة واخناقات النموذج. وفقًا لدليل Apple Performance Optimization Guide، أكثر من 80% من النماذج لديها طبقة واحدة على الأقل تعمل بشكل أبطأ كبير من باقي الطبقات (شذوذ الطبقة)، ويمكن تحسينها بالاستبدال أو الدمج.
لننظر إلى دمج نموذج Core ML مدرب في تطبيق iOS باستخدام Swift. بعد إضافة ملف .mlpackage إلى مشروع Xcode (عن طريق السحب أو عبر Swift Package Manager)، يقوم Xcode بتوليد فئة نموذج Swift تلقائيًا مع مدخلات ومخرجات محددة الأنواع. لا يحتاج المطور إلى تحليل بيانات الإدخال يدويًا — الفئة المولدة تقبل UIImage، MLMultiArray، String أو أنواع أخرى حسب بيانات النموذج الوصفية.
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، أكثر من 5% من أعطال تطبيقات التعلم الآلي ناجمة عن تحميل غير صحيح للنموذج.
Core ML و Create ML هما أداتان متكاملتان في نظام Apple ML البيئي. Core ML يتولى تنفيذ النماذج على الجهاز (الاستنتاج)، بينما Create ML يتولى تدريب النماذج. تم تصدير النماذج المنشأة في Create ML خصيصًا بتنسيق Core ML (.mlpackage) لدمجها لاحقًا في التطبيقات. بمصطلحات تطوير الويب، Core ML هو المتصفح (تنفيذ)، و Create ML هو IDE لكتابة الكود (تدريب).
| المعلمة | Core ML | Create ML |
|---|---|---|
| الغرض | تنفيذ النماذج (الاستنتاج) | تدريب النماذج |
| المنصة | iOS، iPadOS، macOS، watchOS، tvOS | macOS (فقط) |
| التنسيق | .mlpackage (يستهلك) | .mlpackage (ينشئ) |
| الكود | API Swift / Objective-C | واجهة Xcode أو API Swift |
| المستخدم | مطور التطبيق | مطور / عالم بيانات |
الأسئلة الشائعة
Core ML هو إطار التعلم الآلي من Apple لتشغيل نماذج التعلم الآلي المدربة مسبقًا على أجهزة iOS، iPadOS، macOS، watchOS و tvOS. يدعم الشبكات العصبية وأشجار القرار والانحدارات، مختارًا تلقائيًا أفضل بيئة حسابية (Neural Engine، GPU أو CPU).
TensorFlow هو إطار عالمي لتدريب وتنفيذ النماذج على الخوادم والأجهزة المحمولة. Core ML هو محرك متخصص لتنفيذ (ليس التدريب) النماذج حصريًا على أجهزة Apple بأقصى أداء من خلال التحسين الموجه للعتاد (ANE، GPU، Metal). TensorFlow Mobile غير مدعوم بعد على iOS — توصي Apple باستخدام Core ML لجميع مهام التعلم الآلي على منصاتها.
يتم التحويل باستخدام مكتبة coremltools في Python: قم بتصدير نموذج PyTorch إلى TorchScript (torch.jit.trace)، ثم استخدم ct.converters.pytorch.convert() لإنشاء .mlpackage. coremltools تقوم تلقائيًا بتعيين طبقات PyTorch إلى طبقات Core ML المدعومة وتحسين الرسم البياني لـ ANE.
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+ كحد أدنى.
التنسيق الحديث هو .mlpackage (دليل يحتوي على النموذج والبيانات الوصفية وأوصاف المدخلات/المخرجات). التنسيق القديم هو .mlmodel (ملف ثنائي واحد). يقوم Xcode بتحويل .mlmodel إلى .mlpackage تلقائيًا أثناء البناء، ولكن للمشاريع الجديدة يوصى باستخدام .mlpackage مباشرة.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.