يؤدي تشغيل نماذج التعلم الآلي (Machine Learning) مباشرة على الجهاز إلى التخلص من مشاكل التأخير ومخاطر الخصوصية المرتبطة بطلبات واجهة برمجة التطبيقات (API) من الخوادم. تتيح تقنية CoreML من شركة Apple للمطورين تدريب نماذج مخصصة باستخدام بيانات واقعية وتشغيلها محلياً على أجهزة نظام iOS. يُمكّن هذا النهج التطبيقات من التنبؤ بسلوك المستخدم، مثل احتمالية شراء ترقية مدفوعة، بناءً على إشارات محلية مثل مستوى البطارية وحالة الشحن.
يُعد هذا المسار العملي مثالياً لمطوري نظام iOS ومهندسي البيانات لدمج الميزات التنبؤية دون الحاجة إلى خبرة سابقة في علوم البيانات الخلفية. يساهم تنفيذ التعلم الآلي على الجهاز (On-device ML) في تقليل تكاليف الخوادم، ويضمن بقاء بيانات المستخدم خاصة، ويسمح للتطبيقات بالعمل بسلاسة حتى عند عدم الاتصال بالإنترنت.
كيفية تدريب ونشر نموذج CoreML الخاص بك
- حمّل البيانات المسجلة في إطار بيانات pandas باستخدام لغة Python. يُجهّز هذا الإجراء مجموعة البيانات الخام، مثل نتائج المستخدم ومستويات البطارية، لعملية المعالجة.
import pandas as pd
rows = [
['Dismissed', 0.90, False],
['Dismissed', 0.10, False],
['Purchased', 0.24, True],
['Dismissed', 0.13, True]
]
data = pd.DataFrame(rows, columns=['Outcome', 'Battery Level', 'Phone Charging?'])
print(data)- قسّم البيانات إلى مجموعة تدريب ومجموعة اختبار باستخدام مكتبة sklearn. يضمن ذلك امتلاك بيانات معزولة لتقييم دقة النموذج بعد التدريب، وهو مفهوم مشروح بتفصيل أكبر في مقطع فيديو CGP.
from sklearn.model_selection import train_test_split
X = data.drop("Outcome", axis=1)
Y = data["Outcome"]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, shuffle=True)- درّب النموذج باستخدام مصنف RandomForest الأساسي. يبني هذا الخطوة المنطق التنبؤي بناءً على بيانات التدريب ويُنشئ تقرير التصنيف للتحقق من الدقة.
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
classifier = RandomForestClassifier()
classifier.fit(X_train, Y_train)
Y_pred = classifier.predict(X_test)
print(classification_report(Y_test, Y_pred, zero_division=1))- صدّر المصنف المُدرّب إلى ملف.mlmodel باستخدام أدوات CoreMLTools من شركة Apple. يُحوّل هذا الإجراء نموذج Python إلى تنسيق أصلي مُحسّن لشرائح التعلم الآلي من Apple.
import coremltools
coreml_model = coremltools.converters.sklearn.convert(classifier, input_features="input")
coreml_model.short_description = "My first model"
coreml_model.save("MyFirstCustomModel.mlmodel")- ادمج ملف CoreML عن طريق سحبه وإفلاته مباشرة في مشروع تطبيق Xcode. يسمح ذلك لبيئة Xcode بإنشاء فئة Swift تلقائياً بناءً على مدخلات ومخرجات النموذج.
- نفّذ نموذج التعلم الآلي على الجهاز عبر تمرير المعلمات إلى فئة Swift المُنشأة. يُشغّل هذا التنبؤ محلياً، مما يُرجع احتمالية اتخاذ المستخدم لإجراء معين دون أي تأخير في الشبكة.
let batteryLevel = UIDevice.current.batteryLevel
let batteryCharging = UIDevice.current.batteryState == .charging || UIDevice.current.batteryState == .full
do {
let modelInput = MyFirstCustomModelInput(input: [
Double(batteryLevel),
Double(batteryCharging ? 1.0 : 0.0)
])
let result = try MyFirstCustomModel(configuration: MLModelConfiguration()).prediction(input: modelInput)
let classProbabilities = result.featureValue(for: "classProbability")?.dictionaryValue
let upsellProbability = classProbabilities?["Purchased"]?.doubleValue ?? -1
print("Chances of Upsell: \(upsellProbability)")
} catch {
print("Error running CoreML file: \(error)")
}التحول نحو الذكاء المحلي
يمثل الانتقال من المعالجة القائمة على الخوادم إلى الاستدلال (Inference) على الجهاز تحولاً جذرياً في كيفية تعامل تطبيقات الأجهزة المحمولة مع بيانات المستخدمين. ورغم أن هذا الدليل يوضح تنفيذاً أساسياً باستخدام مدخلين فقط، فإن بيئات الإنتاج الفعلي توسع هذا المفهوم بشكل هائل. تقوم منصات مثل ContextSDK حالياً بمعالجة أكثر من 180 إشارة مختلفة في وقت واحد، مما يثبت أن شرائح Apple الحديثة قادرة تماماً على التعامل مع نماذج تنبؤية معقدة ومتعددة المتغيرات دون استنزاف البطارية.
بالنظر إلى المستقبل، لن يكون التحدي الحقيقي للمطورين هو تدريب النماذج، بل إدارة دورة حياتها. يُعد دمج النماذج الثابتة داخل حزمة التطبيق نقطة انطلاق جيدة، لكنه يحد من المرونة. الخطوة المنطقية التالية للفرق التي تتبنى هذه البنية هي تنفيذ التحديثات عبر الهواء (OTA) لملفات CoreML. يتيح ذلك للمطورين نشر نماذج مُحسّنة، وإدارة اختبارات A/B المعقدة، وتعديل معلمات الإدخال الديناميكية عبر ملايين الأجهزة فوراً، متجاوزين بذلك دورة المراجعة التقليدية لمتجر التطبيقات (App Store) عند تحديث المنطق البرمجي.