Core ML — bu Apple tomonidan oldindan o'qitilgan ML modellarini to'g'ridan-to'g'ri iOS, iPadOS, macOS, watchOS va tvOS ilovalariga integratsiyalash imkonini beruvchi mashinani o'rganish freymvorkidir. Freymvork neyron tarmoqlar, qaror daraxtlari, chiziqli regressiyalar va ansambl usullarini, shuningdek TensorFlow, PyTorch, Keras va ONNX dan modellarni Apple-ning o'z formatiga konvertatsiya qilishni qo'llab-quvvatlaydi. Apple Machine Learning Research (2025) ma'lumotlariga ko'ra, Core ML inferensni to'liq qurilmada amalga oshiradi, ma'lumotlarning maxfiyligini va ko'pchilik modellar uchun 10 millisekunddan kam kechikishni ta'minlaydi.
Asosiy
Core ML — bu Apple mashinani o'rganish ekosistemasining asosiy komponenti bo'lib, WWDC 2017 da taqdim etilgan. Core ML dan oldin iOS dasturchilari ML modellarini qurilmada ishga tushirish uchun uchinchi tomon kutubxonalaridan (TensorFlow Mobile, Caffe2) yoki o'z yechimlaridan foydalanardilar. Core ML klassik regressiyalardan tortib chuqur neyron tarmoqlargacha bo'lgan barcha model turlari uchun yagona interfeysni taqdim etdi va ma'lum qurilma uchun past darajadagi optimallashtirishni o'z zimmasiga oldi.
Core ML ning birinchi versiyasi (2017) faqat belgilangan kirish hajmiga ega statik modellarni qo'llab-quvvatlardi. Core ML 2 (2018) batch prediction va modellarni “o'z joyida” yangilashni qo'llab-quvvatladi. Core ML 3 (2019) qurilmada o'rganish va o'nlab yangi neyron tarmoq qatlamlarini qo'llab-quvvatladi. Core ML 4 (2021) bir nechta chiqishlarga ega modellarni va yaxshilangan tasvirni qayta ishlashni qo'llab-quvvatladi. Core ML 5 (2024) yangi ML qatlamlaridan foydalangan holda dinamik neyron tarmoqlar va qurilmada nazoratli o'rganishni qo'llab-quvvatladi.
Mashinani o'rganishni qurilmada bajarish uchta asosiy afzallikni beradi: maxfiylik — ma'lumotlar qurilmadan chiqmaydi (GDPR va HIPAA talablariga javob beradi), tezlik — inferens tarmoq orqali ma'lumot uzatish kechikishisiz millisekundlarda amalga oshiriladi, ofline mavjudlik — model internetga ulanmasdan ishlaydi. Apple Privacy Report (2025) ma'lumotlariga ko'ra, Apple platformalarida ML inferenslarining 90% dan ortig'i Core ML tufayli qurilmada bajariladi.
Core ML arxitekturasi ko'p darajali printsip asosida qurilgan: yuqori darajada — dasturchi uchun API (MLModel, MLFeatureProvider, MLPredictionOptions), o'rta darajada — .mlpackage formatidagi model, pastki darajada — hisoblash mexanizmlari: Apple Neural Engine (ANE), GPU (Metal Shaders) va CPU (BNNS, Accelerate framework). Core ML model va qurilma jihozlariga qarab avtomatik ravishda eng yaxshi mexanizmni tanlaydi.
| Mexanizm | Qurilmalar | Ishlash |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | Maksimal (TOPS) |
| GPU (Metal) | Barcha Apple qurilmalari | Yuqori (parallel hisoblash) |
| CPU (BNNS) | Barcha Apple qurilmalari | Asosiy (moslik) |
Neural Engine (ANE) — bu Apple A12+ va M1+ chiplariga o'rnatilgan ixtisoslashtirilgan neyroprotsessordir. ANE konvolyutsion neyron tarmoqlar (CNN) va matritsalarni ko'paytirish operatsiyalarini A17 Pro da 15.8 TOPS va M4 da 38 TOPS gacha unumdorlik bilan bajarish uchun optimallashtirilgan. Core ML avtomatik ravishda modelni ANE da bajarish mumkinligini aniqlaydi va agar mumkin bo'lsa, uni o'sha yerga yuklaydi. Agar model ANE tomonidan qo'llab-quvvatlanmaydigan operatsiyalarni o'z ichiga olsa, Core ML hisob-kitoblarni GPU va CPU o'rtasida taqsimlaydi.
GPU da hisob-kitoblar uchun Core ML Metal Performance Shaders Graph (MPSGraph) — GPU da hisoblash graflarini qurish va bajarish uchun freymvorkdan foydalanadi. MPSGraph Core ML dan neyron tarmoq grafigini oladi va uni ma'lum GPU arxitekturasi (7 yadroli A17 GPU yoki 40 yadroli M4 Ultra GPU) uchun optimallashtirilgan Metal Shaders ga kompilyatsiya qiladi. MPSGraph avtomatik optimallashtirishlari qatlamlarni birlashtirish, ortiqcha operatsiyalarni yo'q qilish va optimal ma'lumot formatini tanlashni o'z ichiga oladi.
Core ML uch toifaga bo'lingan barcha asosiy mashinani o'rganish model turlarini qo'llab-quvvatlaydi: neyron tarmoqlar (konvolyutsion CNN, rekurrent RNN/LSTM, transformerlar), ansambl modellar (Random Forest, Gradient Boosting, XGBoost, Decision Trees) va regressiya modellari (chiziqli regressiya, SVM, CRF). Har bir model turi o'z MLModelType pastki protokoliga ega va Core ML avtomatik ravishda tegishli mexanizm va bajarish formatini tanlaydi.
Core ML 150 dan ortiq neyron tarmoq qatlami turlarini qo'llab-quvvatlaydi: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), Metal-ga xos qatlamlar. Qo'llab-quvvatlanmaydigan qatlamlar uchun Core ML custom layer mexanizmini taqdim etadi — qatlamni Metal Shading Language yoki Swift da amalga oshirish imkoniyati.
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 yilgacha Core ML .mlmodel formatidan — modelning barcha og'irliklari va metama'lumotlarini o'z ichiga olgan ikkilik fayldan foydalanardi. Xcode 13 va Core ML 4 dan boshlab, Apple yangi .mlpackage formatini taqdim etdi — modelni, metama'lumotlarni, kirish/chiqish tavsifini va JSON formatidagi oldingi va keyingi ishlov berish fayllarini o'z ichiga olgan katalogga asoslangan paket tuzilmasi. mlpackage git versiyalashni qo'llab-quvvatlaydi, bu jamoa ishini osonlashtiradi. .mlmodel ni .mlpackage ga konvertatsiya qilish Xcode Model Compiler yoki Python dagi coremltools skripti bilan amalga oshiriladi.
Modellarni uchinchi tomon freymvorklaridan Core ML ga konvertatsiya qilish Python dagi coremltools kutubxonasi yordamida amalga oshiriladi. coremltools TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, traced/scripted modellar), Keras (H5), ONNX va Create ML yordamida yaratilgan modellarni import qilishni qo'llab-quvvatlaydi. Standart konvertatsiya quvur liniyasi uch bosqichni o'z ichiga oladi: modelni asl formatda yuklash, MIL (Model Intermediate Language) — Core ML ichki ko'rinishiga konvertatsiya qilish va .mlpackage ga eksport qilish.
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")
Konvertatsiyadan so'ng bir xil ma'lumotlarda asl model va konvertatsiya qilingan Core ML modelining bashoratlarini solishtirib model aniqligini tekshirish kerak. Ruxsat etilgan farq — Float32 uchun 1e-3 (0.1%) va Float16/Int8 uchun 1e-2 (1%) dan ko'p emas. coremltools avtomatik taqqoslash uchun ct.utils.compare_models() yordamchi dasturini taqdim etadi. Agar farq me'yordan oshsa, muammo qo'llab-quvvatlanmaydigan operatsiyalarda bo'lishi mumkin — ular custom layers bilan almashtirilishi yoki model soddalashtirilishi kerak.
Core ML modelini optimallashtirish — bu sezilarli aniqlik yo'qotmasdan model hajmini kamaytirish va inferens tezligini oshirish jarayonidir. Apple coremltools va Xcode ga o'rnatilgan bir nechta optimallashtirish vositalarini taqdim etadi: kvantizatsiya (og'irliklar aniqligini kamaytirish), pruning (ahamiyatsiz neyronlarni olib tashlash), ortiqcha qatlamlarni olib tashlash va hisoblash grafigini kamaytirish uchun qatlamlarni birlashtirish (fusion).
Kvantizatsiya model hajmini Float32 bilan solishtirganda taxminan 2 barobar (Float16) yoki 4 barobar (Int8) kamaytiradi. Core ML uch xil kvantizatsiya rejimini qo'llab-quvvatlaydi: kalibrlash ma'lumotlar to'plami bilan o'qitishdan keyingi kvantizatsiya (PTQ), coremltools orqali konvertatsiya paytida va kvantizatsiyani hisobga olgan holda o'qitish (QAT). Kompyuter ko'rish modellarining aksariyati uchun Float16 ga PTQ inferens tezligini ikki baravar oshirish bilan 0.5% dan kam aniqlik yo'qotilishini beradi.
Xcode Core ML Model Profiler vositasini taqdim etadi, bu modelning ishlashini turli qurilmalarda simulyatorda yoki haqiqiy qurilmada o'lchash imkonini beradi. Profiler har bir qatlamning bajarilish vaqti, mexanizm yuklamasi (ANE/GPU/CPU), eng yuqori xotira sarfi va modelning tor bo'g'inlarini ko'rsatadi. Apple Performance Optimization Guide ma'lumotlariga ko'ra, modellarning 80% dan ortig'i boshqalarga qaraganda sezilarli darajada sekin ishlaydigan kamida bitta qatlamga (qatlam anomaliyasi) ega bo'lib, uni almashtirish yoki birlashtirish orqali optimallashtirish mumkin.
Swift da iOS ilovasiga o'qitilgan Core ML modelining integratsiyasini ko'rib chiqaylik. .mlpackage faylini Xcode loyihasiga qo'shgandan so'ng (sudrab tashlash yoki Swift Package Manager orqali), Xcode avtomatik ravishda Swift da model sinfini yaratadi, jumladan tiplangan kirish va chiqishlarni. Dasturchi kirish ma'lumotlarini qo'lda tahlil qilishi shart emas — yaratilgan sinf modelning metama'lumotlariga qarab UIImage, MLMultiArray, String yoki boshqa turlarni qabul qiladi.
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 integratsiyasi paytida xatolarni boshqarishni oldindan ko'rish kerak: model qurilmaga mos kelmasligi (juda eski iOS versiyasi), xotira yetishmasligi yoki model faylining shikastlanishi sababli yuklanmasligi mumkin. Fallback mantiqini amalga oshirish tavsiya etiladi: agar model kvantlangan Int8 formatida yuklanmasa, Float16 versiyasini yuklang, agar u ham yuklanmasa — Float32. Apple Crash Analytics ma'lumotlariga ko'ra, ML ilovalarining 5% dan ortiq qulashlari modelning noto'g'ri yuklanishidan kelib chiqadi.
Core ML va Create ML — bu Apple ML ekosistemasining bir-birini to'ldiruvchi ikkita vositasidir. Core ML modellarni qurilmada bajarish (inferens) uchun javobgar, Create ML esa modellarni o'qitish (trening) uchun javobgar. Create ML da yaratilgan modellar ilovalarga keyingi integratsiya uchun aynan Core ML formatiga (.mlpackage) eksport qilinadi. Veb-ishlab chiqish bilan o'xshatish adigan bo'lsak, Core ML brauzer (ijro), Create ML esa kod yozish uchun IDE (o'rganish) dir.
| Parametr | Core ML | Create ML |
|---|---|---|
| Maqsad | Modellarni bajarish (inferens) | Modellarni o'qitish (trening) |
| Platforma | iOS, iPadOS, macOS, watchOS, tvOS | macOS (faqat) |
| Format | .mlpackage (iste'mol qiladi) | .mlpackage (yaratadi) |
| Kod | Swift / Objective-C API | UI (Xcode) yoki Swift API |
| Foydalanuvchi | Ilova dasturchisi | Dasturchi / Data scientist |
Ko'p beriladigan savollar
Core ML — bu Apple tomonidan oldindan o'qitilgan ML modellarini iOS, iPadOS, macOS, watchOS va tvOS qurilmalarida bajarish uchun mashinani o'rganish freymvorkidir. Neyron tarmoqlar, qaror daraxtlari va regressiyalarni qo'llab-quvvatlaydi, avtomatik ravishda optimal hisoblash mexanizmini (Neural Engine, GPU yoki CPU) tanlaydi.
TensorFlow — bu serverlar va mobil qurilmalarda modellarni o'qitish va bajarish uchun universal freymvorkdir. Core ML — bu modellarni faqat Apple qurilmalarida maksimal unumdorlik bilan bajarish (o'qitish emas) uchun ixtisoslashtirilgan mexanizm bo'lib, ma'lum jihozlar (ANE, GPU, Metal) uchun optimallashtirish tufayli. TensorFlow Mobile endi iOS da qo'llab-quvvatlanmaydi — Apple o'z platformalarida barcha ML vazifalari uchun Core ML ni tavsiya qiladi.
Konvertatsiya Python da coremltools kutubxonasi yordamida amalga oshiriladi: PyTorch modelini TorchScript (torch.jit.trace) ga eksport qiling, so'ngra .mlpackage yaratish uchun ct.converters.pytorch.convert() dan foydalaning. coremltools avtomatik ravishda PyTorch qatlamlarini qo'llab-quvvatlanadigan Core ML qatlamlariga xaritalaydi va grafikni ANE uchun optimallashtiradi.
Core ML iOS 11 va undan yangi barcha iPhone larda ishlaydi. Biroq, ishlash apparat jihozlariga bog'liq: iPhone 5s/6 — faqat CPU (sekin inferens), iPhone 8/X — GPU (Metal), iPhone Xs va undan yangilari — Neural Engine (A17 Pro da 15.8 TOPS gacha maksimal unumdorlik). Eng yaxshi ishlashga erishish uchun minimal iOS 12+ versiyasini ko'rsatish tavsiya etiladi.
Zamonaviy format — .mlpackage (model, metama'lumotlar va kirish/chiqish tavsifini o'z ichiga olgan katalog). Eskirgan format — .mlmodel (yagona ikkilik fayl). Xcode kompilyatsiya paytida .mlmodel ni avtomatik ravishda .mlpackage ga konvertatsiya qiladi, ammo yangi loyihalar uchun to'g'ridan-to'g'ri .mlpackage dan foydalanish tavsiya etiladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.
Shuningdek o'qing