Core ML — bu Apple-ın maşın öyrənmə freymvorkudur, əvvəlcədən öyrədilmiş ML modellərini birbaşa iOS, iPadOS, macOS, watchOS və tvOS tətbiqlərinə inteqrasiya etməyə imkan verir. Freymvork neyron şəbəkələri, qərar ağacları, xətti reqressiyalar və ansambl metodlarını, həmçinin TensorFlow, PyTorch, Keras və ONNX-dən modellərin Apple-ın öz formatına konvertasiyasını dəstəkləyir. Apple Machine Learning Research (2025) məlumatlarına görə, Core ML inferensi tamamilə cihazda yerinə yetirir, məlumatların məxfiliyini və modellərin əksəriyyəti üçün 10 millisaniyədən az gecikmə təmin edir.
Başlıca
Core ML — bu Apple maşın öyrənmə ekosisteminin açar komponentidir, WWDC 2017-də təqdim edilmişdir. Core ML-dən əvvəl iOS tərtibatçıları ML modellərini cihazda işlətmək üçün üçüncü tərəf kitabxanalarından (TensorFlow Mobile, Caffe2) və ya öz həllərindən istifadə edirdilər. Core ML klassik reqressiyalardan dərin neyron şəbəkələrə qədər bütün model növləri üçün vahid interfeys təmin etdi və xüsusi cihaz üçün aşağı səviyyəli optimallaşdırmanı üzərinə götürdü.
Core ML-in birinci versiyası (2017) yalnız sabit giriş ölçüsü olan statik modelləri dəstəkləyirdi. Core ML 2 (2018) batch prediction və modellərin “yerinə yetmə” yenilənməsini dəstəklədi. Core ML 3 (2019) cihazda öyrənmə və onlarla yeni neyron şəbəkə təbəqəsini dəstəklədi. Core ML 4 (2021) çox çıxışlı modelləri və təkmilləşmiş görüntü emalını dəstəklədi. Core ML 5 (2024) yeni ML təbəqələrindən istifadə edərək dinamik neyron şəbəkələrini və cihazda nəzarətli öyrənməni dəstəklədi.
Maşın öyrənməsini cihazda yerinə yetirmək üç əsas üstünlük verir: məxfilik — məlumatlar cihazı tərk etmir (GDPR və HIPAA tələblərinə cavab verir), sürət — inferens şəbəkə məlumat ötürmə gecikməsi olmadan millisaniyələrdə yerinə yetirilir, offline əlçatanlıq — model internet bağlantısı olmadan işləyir. Apple Privacy Report (2025) məlumatlarına görə, Apple platformalarında ML inferenslərinin 90%-dən çoxu Core ML sayəsində cihazda yerinə yetirilir.
Core ML arxitekturası çoxsəviyyəli prinsip üzrə qurulmuşdur: yuxarı səviyyədə — tərtibatçı üçün API (MLModel, MLFeatureProvider, MLPredictionOptions), orta səviyyədə — .mlpackage formatında model, aşağı səviyyədə — hesablama mühərrikləri: Apple Neural Engine (ANE), GPU (Metal Shaders) və CPU (BNNS, Accelerate framework). Core ML model və cihaz avadanlığından asılı olaraq avtomatik olaraq ən yaxşı mühərriki seçir.
| Mühərrik | Cihazlar | Performans |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | Maksimal (TOPS) |
| GPU (Metal) | Bütün Apple cihazları | Yüksək (paralel hesablama) |
| CPU (BNNS) | Bütün Apple cihazları | Əsas (uyğunluq) |
Neural Engine (ANE) — bu Apple A12+ və M1+ çiplərinə daxil edilmiş ixtisaslaşdırılmış neyroprosessordur. ANE konvolyusiya neyron şəbəkələri (CNN) və matris vurma əməliyyatlarını A17 Pro-da 15.8 TOPS və M4-də 38 TOPS performansla yerinə yetirmək üçün optimallaşdırılmışdır. Core ML avtomatik olaraq modelin ANE-də yerinə yetirilə biləcəyini məyyənləşdirir və mümkündərsə onu oraya yükləyir. Əgər model ANE tərəfindən dəstəklənməyən əməliyyatlar ehtiva edirsə, Core ML hesablamaları GPU və CPU arasında bölüşdürür.
GPU-da hesablamalar üçün Core ML Metal Performance Shaders Graph (MPSGraph) — GPU-da hesablama qraflarını qurmaq və yerinə yetirmək üçün freymvorkdan istifadə edir. MPSGraph Core ML-dən neyron şəbəkə qrafını götürür və onu xüsusi GPU arxitekturası (7-nüvəli A17 GPU və ya 40-nüvəli M4 Ultra GPU) üçün optimallaşdırılmış Metal Shaders-ə kompilə edir. MPSGraph avtomatik optimallaşdırmaları təbəqə birləşməsi, artıq əməliyyatların aradan qaldırılması və optimal məlumat formatının seçimini əhatə edir.
Core ML üç kateqoriyaya bölünmüş bütün əsas maşın öyrənmə model növlərini dəstəkləyir: neyron şəbəkələr (konvolyusiya CNN, rekurent RNN/LSTM, transformerlər), ansambl modellər (Random Forest, Gradient Boosting, XGBoost, Decision Trees) və reqressiya modelləri (xətti reqressiya, SVM, CRF). Hər model növü öz MLModelType altprotokoluna malikdir və Core ML avtomatik olaraq müvafiq mühərrik və icra formatını seçir.
Core ML 150-dən çox neyron şəbəkə təbəqəsi növünü dəstəkləyir: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), Metal-üzərə xüsusi təbəqələr. Dəstəklənməyən təbəqələr üçün Core ML custom layer mexanizmi təmin edir — təbəqənin Metal Shading Language və ya Swift-də tətbiqini yazmaq imkanı.
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-ci ilə qədər Core ML .mlmodel formatından — modelin bütün çəkilərini və metadatalarını ehtiva edən ikili fayldan istifadə edirdi. Xcode 13 və Core ML 4-dən başlayaraq, Apple yeni format .mlpackage təqdim etdi — modeli, metadataları, giriş/çıxış təsvirini və JSON formatında pre- və post-emal fayllarını ehtiva edən kataloq əsaslı paket strukturu. mlpackage git versiyalaşdırmasını dəstəkləyir, bu da komanda işini asanlaşdırır. .mlmodel-in .mlpackage-ə konvertasiyası Xcode Model Compiler və ya Python-da coremltools skripti ilə yerinə yetirilir.
Modellərin üçüncü tərəf freymvorklardan Core ML-ə konvertasiyası Python-da coremltools kitabxanası ilə yerinə yetirilir. coremltools TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, traced/scripted modellər), Keras (H5), ONNX və Create ML ilə yaradılmış modellərin idxalını dəstəkləyir. Standart konvertasiya kəməri üç addımdan ibarətdir: modelin orijinal formatda yüklənməsi, MIL (Model Intermediate Language) — Core ML daxili təsvirinə konvertasiya və .mlpackage-ə ixrac.
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")
Konvertasiyadan sonra eyni məlumatlar üzərində orijinal modelin və konvertasiya edilmiş Core ML modelinin proqnozlarını müqayisə edərək model dəqiqliyini yoxlamaq lazımdır. İcazə verilən fərq — Float32 üçün 1e-3 (0,1%) və Float16/Int8 üçün 1e-2 (1%)-dən çox deyil. coremltools avtomatik müqayisə üçün ct.utils.compare_models() utilitini təqdim edir. Əgər fərq normadan çox olarsa, problem dəstəklənməyən əməliyyatlarda ola bilər — onlar custom layers ilə əvəz edilməli və ya model sadələşdirilməlidir.
Core ML modelinin optimallaşdırılması — bu model ölçüsünü azaltma və dəqiqliyi əhəmiyyətli itirmədən inferens sürətini artırma prosesidir. Apple coremltools və Xcode-da daxili olan bir neçə optimallaşdırma vasitəsi təqdim edir: kvantlaşdırma (çəki dəqiqliyinin azaldılması), budama (əhəmiyyətsiz neyronların silinməsi), artıq təbəqələrin silinməsi və hesablama qrafını azaltmaq üçün təbəqə birləşməsi (fusion).
Kvantlaşdırma model ölçüsünü Float32 ilə müqayisədə təxminən 2 dəfə (Float16) və ya 4 dəfə (Int8) azaldır. Core ML üç kvantlaşdırma rejimini dəstəkləyir: kalibrasiya məlumatları dəsti ilə təlimdən sonra kvantlaşdırma (PTQ), coremltools vasitəsilə konvertasiya zamanı və kvantlaşdırma nəzərə alınmaqla təlim (QAT). Kompüter görmü modellərinin əksəriyyəti üçün Float16-ya PTQ inferens sürətini iki dəfə artırarkən 0,5%-dən az dəqiqlik itkisi verir.
Xcode Core ML Model Profiler alətini təqdim edir, bu da modelin performansını müxtəlif cihazlarda simulyatorda və ya real cihazda ölçməyə imkan verir. Profiler hər təbəqənin icra müddətini, mühərrik yüklənməsini (ANE/GPU/CPU), pik yaddaş istehlakını və modelin darboğazlarını göstərir. Apple Performance Optimization Guide məlumatlarına görə, modellərin 80%-dən çoxu ən azı bir dəfə digərlərindən əhəmiyyətli dərəcədə yavaş işləyən təbəqəyə (təbəqə anomaliyası) malikdir və bu təbəqə dəyişdirilərək və ya birləşdirilərək optimallaşdırıla bilər.
Swift-də iOS tətbiqinə öyrədilmiş Core ML modelinin inteqrasiyasını nəzərdən keçirək. .mlpackage faylını Xcode layihəsinə əlavə etdikdən sonra (sürükləmə və ya Swift Package Manager vasitəsilə), Xcode avtomatik olaraq Swift-də model sinfini yaradır, o cümledən tipləşdirilmiş giriş və çıxışları. Tərtibatçı giriş məlumatlarını əllə pars etməlidir — yaradılan sinif modelin metadatalarından asılı olaraq UIImage, MLMultiArray, String və ya digər tipləri qəbul edir.
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 inteqrasiyası zamanı xəta idarəsini nəzərdə tutmaq lazımdır: model cihazla uyğunsuzluq (çox köhnə iOS versiyası), yaddaş çatışmazlığı və ya model faylının zədələnməsi səbəbindən yüklənməyə bilər. Fallback məntiqi tətbiq etmək tövsiyə olunur: əgər model kvantlaşdırılmış Int8 formatında yüklənmədisə, Float16 versiyasını yükləyin, əgər o da yüklənmədisə — Float32. Apple Crash Analytics məlumatlarına görə, ML tətbiqlərinin çökmələrinin 5%-dən çoxu modelin səhv yüklənməsindən qaynaqlanır.
Core ML və Create ML — bunlar Apple ML ekosisteminin bir-birini tamamlayan iki alətidir. Core ML modelləri cihazda yerinə yetirməyə (inferens) cavabdehdir, Create ML isə modellərin öyrədilməsinə (təlim). Create ML-də yaradılan modellər tətbiqlərə inteqrasiya üçün məhz Core ML formatına (.mlpackage) ixrac edilir. Veb inkişafı ilə analogiya aparsaq, Core ML brauzerdir (icra), Create ML isə kod yazmaq üçün IDE-dir (öyrənmə).
| Parametr | Core ML | Create ML |
|---|---|---|
| Təyinat | Modellərin icrası (inferens) | Modellərin öyrədilməsi (təlim) |
| Platforma | iOS, iPadOS, macOS, watchOS, tvOS | macOS (yalnız) |
| Format | .mlpackage (istehlak edir) | .mlpackage (yaradır) |
| Kod | Swift / Objective-C API | UI (Xcode) və ya Swift API |
| İstifadəçi | Tətbiq tərtibatçısı | Tərtibatçı / Data scientist |
Tez-tez verilən suallar
Core ML — bu Apple-ın əvvəlcədən öyrədilmiş ML modellərini iOS, iPadOS, macOS, watchOS və tvOS cihazlarında yerinə yetirmək üçün maşın öyrənmə freymvorkudur. Neyron şəbəkələri, qərar ağacları və reqressiyaları dəstəkləyir, avtomatik olaraq optimal hesablama mühərriki seçir (Neural Engine, GPU və ya CPU).
TensorFlow — serverlərdə və mobil cihazlarda modelləri öyrətmək və yerinə yetirmək üçün universal freymvorkdur. Core ML — modelləri yalnız Apple cihazlarında maksimal performansla yerinə yetirmək (təlim yox) üçün ixtisaslaşdırılmış mühərrikdir, xüsusi avadanlıq (ANE, GPU, Metal) üçün optimallaşdırma sayəsində. TensorFlow Mobile artıq iOS-da dəstəklənmir — Apple öz platformalarında bütün ML tapşırıqları üçün Core ML-i tövsiyə edir.
Konvertasiya Python-da coremltools kitabxanası ilə yerinə yetirilir: PyTorch modelini TorchScript-ə (torch.jit.trace) ixrac edin, sonra .mlpackage yaratmaq üçün ct.converters.pytorch.convert() istifadə edin. coremltools avtomatik olaraq PyTorch təbəqələrini dəstəklənən Core ML təbəqələrinə xəritələyir və qrafı ANE üçün optimallaşdırır.
Core ML iOS 11 və daha yeni olan bütün iPhone-larda işləyir. Lakin performans avadanlıqdan asılıdır: iPhone 5s/6 — yalnız CPU (yavaş inferens), iPhone 8/X — GPU (Metal), iPhone Xs və daha yeniləri — Neural Engine (A17 Pro-da 15.8 TOPS-a qədər maksimal performans). Ən yaxşı performans əldə etmək üçün minimum iOS 12+ versiyasını göstərmək tövsiyə olunur.
Müasir format — .mlpackage (modeli, metadataları və giriş/çıxış təsvirini ehtiva edən kataloq). Köhnəlmiş format — .mlmodel (tək ikili fayl). Xcode kompilə zamanı .mlmodel-i avtomatik olaraq .mlpackage-ə konvertasiya edir, lakin yeni layihələr üçün birbaşa .mlpackage istifadə etmək tövsiyə olunur.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun