mlmodelc: bu nima, kompilyatsiya qilingan model formati va kompilyatsiya

Muallif: IT Sectr Nashr etilgan: 2026-07-17 O'qish vaqti: 7 daq

mlmodelc — bu Apple qurilmalarida iOS, macOS va iPadOS tizimlarida bajarish uchun optimallashtirilgan Core ML modelining kompilyatsiya qilingan versiyasidir. Asl .mlmodel formatidan farqli o‘laroq, mlmodelc fayli kompilyatsiya bosqichidan o‘tadi, bunda model Core ML Runtime uchun tushunarli bo‘lgan ichki ko‘rinishga o‘tkaziladi. Apple Developer Documentation, 2025 ma’lumotlariga ko‘ra, kompilyatsiya Xcode-da ilovani yig‘ish paytida avtomatik ravishda, shuningdek tarmoqdan model yuklab olingandan so‘ng qurilmada amalga oshiriladi. mlmodelc interpretatsiya qilinadigan formatga nisbatan tezroq ishga tushirish va kamroq xotira sarfini ta’minlaydi.

Asosiy ma’lumotlar

  • mlmodelc — Apple qurilmalarida bajarish uchun Core ML modelining kompilyatsiya qilingan formati.
  • .mlmodel ni mlmodelc ga kompilyatsiya qilish Xcode tomonidan ilovani yig‘ish paytida yoki qurilmada MLModel.compile() orqali amalga oshiriladi.
  • Format Model Description, MIL-da ikkilik hisoblash grafi va weights.bin faylini o‘z ichiga oladi.
  • mlmodelc grafni oldindan optimallashtirish hisobiga ishga tushirishni tezlashtirishni 30–60% ga ta’minlaydi.
  • Core ML Runtime orqali Apple Neural Engine, GPU va CPU qo‘llab-quvvatlanadi.

mlmodelc nima va u .mlmodel dan qanday farq qiladi

mlmodelc — bu Apple qurilmalarida to‘g‘ridan-to‘g‘ri bajarish uchun mo‘ljallangan Core ML modelining kompilyatsiya qilingan ikkilik formatidir. Asl .mlmodel formati protobuf-da model tavsifi, massivlar ko‘rinishidagi og‘irliklar va JSON-da metama’lumotlarni o‘z ichiga olgan paketdir. Kompilyatsiya paytida bu struktura ma’lum bir apparat platformasi uchun optimallashtirilgan ixcham ikkilik ko‘rinishga o‘tkaziladi.

mlmodelc ning asosiy farqi — inferens vaqtida interpretatsiya bosqichining yo‘qligi. Core ML Runtime protobuf sxemasini tahlil qilmaydi va hisoblash grafini dinamik qurmaydi — barcha bu qadamlar kompilyatsiya bosqichida bajarilgan. Bu arxitektura murakkabligiga qarab modelni birinchi ishga tushirish vaqtidan 30% dan 60% gacha tejash imkonini beradi.

WWDC 2023 „Core ML Tools va modellarni optimallashtirish” sessiyasiga ko‘ra, kompilyatsiya suzuvchi nuqtali operatsiyalarni optimallashtirish, ketma-ket qatlamlarni birlashtirish va Apple Neural Engine uchun tushunarli formatga o‘tkazishni o‘z ichiga oladi. Dasturchi bu jarayonni qo‘lda boshqarishi shart emas — Xcode yig‘ish bosqichida kompilyatsiyani avtomatik ravishda amalga oshiradi.

mlmodelc va .mlmodel solishtirish

Xususiyat.mlmodelmlmodelc
Saqlash formatiPaket (protobuf + og‘irliklar)Ikkilik, platformaga xos
Bajarishga tayyorlikKompilyatsiya talab qiladiInferensga tayyor
Diskdagi hajmiAsl hajm10–20% kichik
Birinchi ishga tushirish tezligiSekinroq (tahlil + kompilyatsiya)Bir zumda ishga tushirish
ANE qo‘llab-quvvatlashiQo‘shimcha optimallashtirish talab qiladiAvtomatik

mlmodelc kompilyatsiya jarayoni qanday ishlaydi

Modelni mlmodelc ga kompilyatsiya qilish uch bosqichdan o‘tadi. Birinchi bosqichda Core ML Tools .mlmodel protobuf spetsifikatsiyasini o‘qib, MIL (Model Intermediate Language) formatida ichki hisoblash grafini quradi. Asbob har bir operatsiyaning maqsadli qurilma bilan mosligini tekshiradi va qo‘llab-quvvatlanmaydigan qatlamlarni CPU-da bajarish uchun belgilaydi.

Ikkinchi bosqichda grafni optimallashtirish amalga oshiriladi: ketma-ket qatlamlarni birlashtirish (convolution + batch norm → fused convolution), o‘lik tugunlarni olib tashlash, og‘irliklarni FP32 dan FP16 yoki INT8 ga kvantlash. Apple Engineering Report „Core ML Optimization Pipeline” (2024) ma’lumotlariga ko‘ra, qatlamlarni birlashtirish inferens operatsiyalari sonini 40% gacha kamaytiradi.

Uchinchi bosqich — ikkilik ko‘rinishni yaratish. Optimallashtirilgan graf Core ML Runtime ning xususiy formatiga seriyalanadi. Og‘irliklar protsessor kesh liniyalariga moslashtirilgan holda saqlanadi, metama’lumotlar esa tez kirish uchun alohida indeksda saqlanadi. Natija — .mlmodelc kengaytmali papka, ilova paketiga qo‘shishga tayyor.

mlmodelc ning ichki arxitekturasi

mlmodelc strukturasi uchta asosiy komponentni o‘z ichiga oladi. Model Description — model metama’lumotlari: kirish va chiqish turlari, ularning o‘lchamlari, tensor nomlari, oldindan ishlov berish parametrlari. Ushbu bo‘lim Core ML API bilan moslik uchun JSON-ga o‘xshash formatda saqlanadi.

Program — ichki MIL tilidagi hisoblash grafining ikkilik ko‘rinishi. Apple MIL dan TensorFlow-dagi MLIR yoki ONNX kabi oraliq ko‘rinish sifatida foydalanadi. MIL dasturi operatsiyalardan iborat bo‘lib, har biri turga, kirish va chiqish tensorlariga hamda atributlarga ega. MIL formati Apple Neural Engine da samarali bajarish uchun optimallashtirilgan.

Uchinchi komponent — weights.bin — modelning barcha o‘rganilgan og‘irliklarini o‘z ichiga olgan fayl. Og‘irliklar keshga optimal yuklash uchun 64 baytga moslashtirilgan holda saqlanadi. Agar kompilyatsiya paytida kvantlash ko‘rsatilgan bo‘lsa, og‘irliklar FP16 yoki INT8 formatida saqlanadi, bu fayl hajmini kamaytiradi va ushbu formatlarni apparat qo‘llab-quvvatlaydigan Apple A17 va M4 chiplarida inferensni tezlashtiradi.

mlmodelc ni ilovada qo‘llash usullari

Apple mlmodelc ni ilovaga qo‘shishning uchta usulini qo‘llab-quvvatlaydi. Birinchisi — paketga statik qo‘shish: mlmodelc fayli Xcode loyihasiga qo‘shiladi va yig‘ish paytida .app ichiga tushadi. Bu usul 100 MB gacha bo‘lgan kichik modellar uchun optimal bo‘lib, birinchi ishga tushirish uchun tarmoq ulanishini talab qilmaydi.

Ikkinchi usul — MLModel.compile(at:) orqali tarmoqdan yuklab, qurilmada kompilyatsiya qilish. Dasturchi .mlmodel ni yuklab oladi, uni vaqtinchalik papkaga joylashtiradi va Core ML kompilyatorini chaqiradi. Natija — keyingi ishga tushirishlar uchun keshga olinadigan mlmodelc. Core ML uchun Apple HIG ga ko‘ra, bu yondashuv 100 MB dan katta modellar va ilovaning yangi versiyasini chop etmasdan dinamik yangilash uchun tavsiya etiladi.

Uchinchi usul — talab bo‘yicha yuklanadigan modellar uchun On-Demand Resources. Apple ODR mlmodelc ni bulutda saqlash va faqat kerak bo‘lganda yuklash imkonini beradi. Bu foydalanuvchi faqat bir nechtasini ishlatadigan o‘nlab modellari bo‘lgan ilovalar uchun mashhur stsenariydir.

Qurilmada asinxron kompilyatsiya

Tarmoqdan model yuklab olinganda kompilyatsiya vaqtini hisobga olish muhimdir. MLModel.compile(at:) sinxron ravishda bajariladi va A12 va undan eski qurilmalarda o‘rta hajmdagi modellar uchun interfeysni 5–10 soniyagacha bloklashi mumkin. Kompilyatsiyani fon tarmog‘ida bajarish va foydalanuvchini yuklash indikatori orqali xabardor qilish tavsiya etiladi.

mlmodelc ning ishlash afzalliklari

mlmodelc ning asosiy afzalligi modelni yuklash tezligidir. Apple Performance Benchmarks (2024) ma’lumotlariga ko‘ra, 100 MB hajmdagi ResNet-50 modeli mlmodelc formatida .mlmodel ga nisbatan 58% tezroq yuklanadi. Bu, ayniqsa, ketma-ket bir nechta modellar bilan ishlaydigan ilovalar uchun muhimdir.

Ikkinchi afzallik — cho‘qqi xotira sarfini kamaytirish. .mlmodel yuklashda Core ML Runtime protobuf tahlili uchun bufer va graf kompilyatsiyasi uchun ikkinchi bufer ajratadi. mlmodelc to‘g‘ridan-to‘g‘ri ishga tushadi, bu bosqichlarni chetlab o‘tadi. Kompyuter ko‘rish modellari uchun cho‘qqi xotira sarfi 30–45% ga kamayadi.

Uchinchisi — apparat optimallashtirish. coremlc kompilyatori yig‘ish bosqichida maqsadli qurilmani tahlil qiladi va ANE, GPU va CPU o‘rtasida operatsiyalarning optimal taqsimotini tanlaydi. Agar yig‘ish universal bo‘lsa, kompilyatsiya birinchi ishga tushirishda qurilmaga o‘tkaziladi va natija keyingi seanslar uchun keshga olinadi.

Swift kodida mlmodelc bilan ishlash misollari

Ilova paketidan kompilyatsiya qilingan modelni yuklash misoli. Modelning URL ini ko‘rsatish va MLModel.load(contentsOf:) ni chaqirish kifoya. Core ML Runtime avtomatik ravishda kengaytma bo‘yicha mlmodelc formatini aniqlaydi va ishga tushirishni amalga oshiradi.

swift
import CoreML

guard let modelURL = Bundle.main.url(
    forResource: "MyModel",
    withExtension: "mlmodelc"
) else { return }

let model = try await MLModel.load(contentsOf: modelURL)
let prediction = try await model.prediction(from: input)

Qurilmada .mlmodel ni kompilyatsiya qilish va keyinchalik keshga olish misoli. Vaqtinchalik mlmodelc yo‘lini olish uchun MLModel.compile(at:) dan foydalaning, so‘ng uni kesh papkasiga nusxalang.

swift
let sourceURL = FileManager.default.temporaryDirectory
    .appendingPathComponent("MyModel.mlmodel")

let compiledURL = try await MLModel.compile(at: sourceURL)

let cacheURL = FileManager.default.urls(
    for: .cachesDirectory, in: .userDomainMask
)[0].appendingPathComponent("MyModel.mlmodelc")

try FileManager.default.copyItem(at: compiledURL, to: cacheURL)

Tez-tez beriladigan savollar

mlmodelc ni iOS simulyatorida ishlatish mumkinmi?

Ha, mlmodelc iOS simulyatorida ishlaydi, lekin ANE tezlashtirishsiz, chunki Neural Engine Mac-da mavjud bo‘lmagan apparat komponentidir. Inferens Accelerate framework orqali CPU-da bajariladi.

mlmodelc .mlpackage dan qanday farq qiladi?

mlmodelc — bajarish uchun kompilyatsiya qilingan format. .mlpackage — Xcode 15+ uchun asl model va bir nechta konfiguratsiyalarni birlashtiruvchi konteyner. .mlpackage ilovani yig‘ish paytida mlmodelc ga kompilyatsiya qilinadi.

Modelning mlmodelc ga kompilyatsiya qilinganligini qanday tekshirish mumkin?

Fayl kengaytmasini tekshiring: .mlmodelc. Agar model kengaytmasi .mlmodel bo‘lsa, u kompilyatsiya qilinmagan. Xcode da yig‘ishdan so‘ng tayyor mlmodelc ilovaning DerivedData papkasida joylashadi.

mlmodelc ni .mlmodel ga qayta dekodlash mumkinmi?

Yo‘q, teskari dekompilyatsiya mavjud emas. mlmodelc Apple-ning xususiy ikkilik formatidir. Asl .mlmodel versiyalarni boshqarish tizimida alohida saqlanadi.

mlmodelc INT8 kvantlangan modellarni qo‘llab-quvvatlaydimi?

Ha, mlmodelc Core ML Tools orqali INT8 kvantlashni qo‘llab-quvvatlaydi. Kompilyatsiya paytida og‘irliklar FP32 dan INT8 ga o‘tkaziladi, bu hajmni to‘rt baravar kamaytiradi va ANE da 2x gacha tezlashtirishni ta’minlaydi.

Xulosa

  • mlmodelc — Apple qurilmalarida bajarish uchun optimallashtirilgan Core ML modelining kompilyatsiya qilingan formati.
  • Kompilyatsiya grafni optimallashtirish, qatlamlarni birlashtirish va og‘irliklarni maqsadli platforma uchun kvantlashni o‘z ichiga oladi.
  • Format yuklash vaqtini 30–60% ga kamaytirish va cho‘qqi xotira sarfini 30–45% ga kamaytirishni ta’minlaydi.
  • Qo‘llash statik paket, tarmoqdan yuklab kompilyatsiya qilish yoki On-Demand Resources orqali mumkin.
  • mlmodelc Core ML Runtime orqali Apple Neural Engine, GPU va CPU da bajarishni qo‘llab-quvvatlaydi.
  • Yuklash uchun fon tarmog‘ida xato boshqaruvi bilan MLModel.load(contentsOf:) dan foydalaning.
  • Modellarning ishlash monitoringi Core ML andozi bilan Instruments orqali amalga oshiriladi.

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.

Loyihani muhokama qilish

Shuningdek o'qing