mlmodelc: bu nədir, kompilyasiya olunmuş model formatı və kompilyasiya

Müəllif: IT Sectr Dərc olunub: 2026-07-17 Oxuma vaxtı: 7 dəq

mlmodelc — bu Apple cihazlarında iOS, macOS və iPadOS əməliyyat sistemlərində icra üçün optimallaşdırılmış Core ML modelinin kompilyasiya olunmuş versiyasıdır. Orijinal .mlmodel formatından fərqli olaraq, mlmodelc faylı kompilyasiya mərhələsindən keçir və bu zaman model Core ML Runtime üçün başa düşülən daxili təmsilata çevrilir. Apple Developer Documentation, 2025-ə əsasən, kompilyasiya Xcode-da tətbiqin yığılması zamanı avtomatik olaraq, həmçinin řəbəkədən model endirildikdən sonra cihazda yerinə yetirilir. mlmodelc şərh edilən formatla müqayisədə daha sürətli işə düşmə və daha az yaddaş istehlakı təmin edir.

Əsas məqamlar

  • mlmodelc — Apple cihazlarında icra üçün Core ML modelinin kompilyasiya olunmuş formatı.
  • .mlmodel-in mlmodelc-yə kompilyasiyası Xcode tərəfindən tətbiqin yığılması zamanı və ya cihazda MLModel.compile() vasitəsilə həyata keçirilir.
  • Format Model Description, MIL-də ikili hesablama qrafı və weights.bin faylını əhatə edir.
  • mlmodelc qrafın ilkin optimallaşdırılması sayəsində işə düşmə sürətini 30–60% artırır.
  • Core ML Runtime vasitəsilə Apple Neural Engine, GPU və CPU dəstəklənir.

mlmodelc nədir və .mlmodel-dən nə ilə fərqlənir

mlmodelc — bu Apple cihazlarında birbaşa icra üçün nəzərdə tutulmuş Core ML modelinin kompilyasiya olunmuş ikili formatıdır. Orijinal .mlmodel formatı protobuf-da model təsviri, massivlər şəklində çəkilər və JSON-da metadatadan ibarət paketdir. Kompilyasiya zamanı bu struktur müəyyən bir aparat platforması üçün optimallaşdırılmış yığcam ikili təmsilata çevrilir.

mlmodelc-in əsas fərqi — inferens zamanı şərh mərhələsinin olmaması. Core ML Runtime protobuf sxemini təhlil etmir və hesablama qrafını dinamik qurmur — bütün bu addımlar kompilyasiya mərhələsində yerinə yetirilir. Bu, arxitekturanın mürəkkəbliyindən asılı olaraq modelin ilk işə düşmə vaxtına 30% -dən 60% -dək qənaət edir.

WWDC 2023 „Core ML Tools və modellərin optimallaşdırılması” sessiyasına görə, kompilyasiya üzən nöqtəli əməliyyatların optimallaşdırılmasını, ardıcıl təbəqələrin birləşməsini və Apple Neural Engine üçün başa düşülən formata çevrilməni əhatə edir. Tərtibatçı bu prosesi əl ilə idarə etməli deyil — Xcode yığma mərhələsində kompilyasiyanı avtomatik yerinə yetirir.

mlmodelc və .mlmodel müqayisəsi

Xarakteristika.mlmodelmlmodelc
Saxlama formatıPaket (protobuf + çəkilər)Ikili, platforma spesifik
Icra hazırlığıKompilyasiya tələb edirInferens üçün hazır
Diskdə ölçüsüOrijinal ölçü10–20% kiçik
Ilk işə düşmə sürətiYavaş (təhlil + kompilyasiya)Ani işə düşmə
ANE dəstəyiƏlavə optimallaşdırma tələb edirAvtomatik

mlmodelc kompilyasiya prosesi necə işləyir

Modelin mlmodelc-yə kompilyasiyası üç mərhələdən keçir. Birinci mərhələdə Core ML Tools .mlmodel-in protobuf spesifikasiyasını oxuyur və MIL (Model Intermediate Language) formatında daxili hesablama qrafı qurur. Alət hər əməliyyatın hədəf cihazla uyğunluğunu yoxlayır və dəstəklənməyən təbəqələri CPU-da icra üçün qeyd edir.

Ikinci mərhələdə qrafın optimallaşdırılması aparılır: ardıcıl təbəqələrin birləşməsi (convolution + batch norm → fused convolution), ölü düyünlərin silinməsi, çəkilərin FP32-dən FP16 və ya INT8-ə kvantlaşdırılması. Apple Engineering Report „Core ML Optimization Pipeline” (2024)-a görə, təbəqələrin birləşməsi inferens əməliyyatlarının sayını 40% -dək azaldır.

Üçüncü mərhələ — ikili təmsilatın yaradılması. Optimallaşdırılmış qraf Core ML Runtime-ın xüsusi formatına seriyalaşdırılır. Çəkilər prosessorun keş xəttlərinə uyğunlaşdırılaraq, metadata isə sürətli çıxış üçün ayrı indeksdə saxlanılır. Nəticə .mlmodelc genişlənməli qovluqdur — tətbiq paketinə daxil edilməyə hazırdır.

mlmodelc-in daxili arxitekturası

mlmodelc strukturu üç əsas komponenti əhatə edir. Model Description — model metadatası: giriş və çıxış növləri, ölçüləri, tensor adları, ilkin emal parametrləri. Bu bölmə Core ML API-si ilə uyğunluq üçün JSON oxşar formatda saxlanılır.

Program — daxili MIL dilində hesablama qrafının ikili təmsilatı. Apple MIL-dən TensorFlow-da MLIR və ya ONNX kimi aralıq təmsilat kimi istifadə edir. MIL proqramı əməliyyatlardan ibarətdir, hər birinin növü, giriş və çıxış tensorları və atributları var. MIL formatı Apple Neural Engine-də səmərəli icra üçün optimallaşdırılmışdır.

Üçüncü komponent — weights.bin — modelin bütün öyrədilmiş çəkilərini ehtiva edən fayldır. Çəkilər keşə optimal yüklənmə üçün 64 baytlıq align ilə saxlanılır. Kompilyasiya zamanı kvantlaşdırma göstərilərsə, çəkilər FP16 və ya INT8 formatında saxlanılır ki, bu da fayl ölçüsünü azaldır və bu formatları aparat dəstəkləyən Apple A17 və M4 çiplərində inferensi sürətləndirir.

mlmodelc-in tətbiqdə yerləşdirilmə üsulları

Apple mlmodelc-in tətbiqə daxil edilməsi üçün üç üsul dəstəkləyir. Birincisi — paketə statik daxiletmə: mlmodelc faylı Xcode layihəsinə əlavə edilir və yığma zamanı .app daxilinə düşür. Bu üsul 100 MB-dək kiçik modellər üçün optimaldır və ilk işə salınma üçün şəbəkə girişi tələb etmir.

Ikinci üsul — MLModel.compile(at:) vasitəsilə şəbəkədən yükləmə və cihazda kompilyasiya. Tərtibatçı .mlmodel faylını endirir, müvəqqəti qovluğa yerləşdirir və Core ML kompilyatorunu çağırır. Nəticə — sonrakı işə salmalar üçün keşlənə bilən mlmodelc. Core ML üçün Apple HIG-a görə, bu yanaşma 100 MB-dən böyük modellər və tətbiqin yeni versiyasını dərc etmədən dinamik yeniləmə üçün tövsiyə olunur.

Üçüncü üsul — tələb üzrə yüklənən modellər üçün On-Demand Resources. Apple ODR mlmodelc-i buludda saxlamağa və yalnız lazım olduqda yükləməyə imkan verir. Bu, istifadəçinin yalnız bir neçəsini istifadə etdiyi onlarla modeli olan tətbiqlər üçün məşhur ssenaridir.

Cihazda asinxron kompilyasiya

Şəbəkədən model endirilərkən kompilyasiya vaxtını nəzərə almaq vacibdir. MLModel.compile(at:) sinxron şəkildə işləyir və A12 və daha köhnə cihazlarda orta ölçülü modellər üçün interfeysi 5–10 saniyəyədək bloklaya bilər. Kompilyasiyanın fon thread-də aparılması və istifadəçiyə yükləmə göstəricisi vasitəsilə məlumat verilməsi tövsiyə olunur.

mlmodelc-in performans üstünlükləri

mlmodelc-in əsas üstünlüyü modelin yüklənmə sürətidir. Apple Performance Benchmarks (2024)-a görə, 100 MB ölçüsündəki ResNet-50 modeli mlmodelc formatında .mlmodel ilə müqayisədə 58% daha sürətli yüklənir. Bu, xüsusilə ardıcıl olaraq bir neçə modellə işləyən tətbiqlər üçün vacibdir.

Ikinci üstünlük — pik yaddaş istehlakının azalması. .mlmodel yükləyərkən Core ML Runtime protobuf təhlili üçün bufer və qraf kompilyasiyası üçün ikinci bufer ayırır. mlmodelc birbaşa işə düşür, bu mərhələləri ötürür. Kompüter görmə modelləri üçün pik yaddaş istehlakı 30–45% azalır.

Üçüncü — aparat optimallaşdırılması. Coremlc kompilyatoru yığma mərhələsində hədəf cihazı təhlil edir və ANE, GPU və CPU arasında əməliyyatların optimal bölgüsünü seçir. Yığma universal olarsa, kompilyasiya ilk işə salmada cihaza ötürülür və nəticə sonrakı seanslar üçün keşlənir.

Swift kodunda mlmodelc ilə işləmə nümunələri

Tətbiq paketindən kompilyasiya olunmuş modelin yüklənməsi nümunəsi. Modelin URL-ini göstərmək və MLModel.load(contentsOf:) çağırmaq kifayətdir. Core ML Runtime avtomatik olaraq genişlənməyə görə mlmodelc formatını təyin edəcək və initallaşdırmanı yerinə yetirəcək.

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)

Cihazda .mlmodel-in kompilyasiyası və sonradan keşlənmə nümunəsi. Müvəqqəti mlmodelc yolunu əldə etmək üçün MLModel.compile(at:)-dən istifadə edin, sonra onu keş qovluğuna köçürün.

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 verilən suallar

mlmodelc iOS simulatorunda istifadə edilə bilərmi?

Bəli, mlmodelc iOS simulatorunda işləyir, lakin ANE sürətləndirilməsi olmadan, çünki Neural Engine Mac-da olmayan aparat komponentidir. Inferens Accelerate framework vasitəsilə CPU-da yerinə yetirilir.

mlmodelc .mlpackage-dən nə ilə fərqlənir?

mlmodelc — icra üçün kompilyasiya olunmuş formatdır. .mlpackage — Xcode 15+ üçün orijinal modeli və bir neçə konfiqurasiyanı birləşdirən konteynerdir. .mlpackage tətbiqin yığılması zamanı mlmodelc-yə kompilyasiya olunur.

Modelin artıq mlmodelc-yə kompilyasiya olunduğunu necə yoxlamaq olar?

Faylın genişlənməsini yoxlayın: .mlmodelc. Modelin genişlənməsi .mlmodel-dirsə, o kompilyasiya olunmayıb. Xcode-da yığmadan sonra hazır mlmodelc tətbiqin DerivedData qovluğunda yerləşir.

mlmodelc-i yenidən .mlmodel formatına dekompilyasiya etmək olarmı?

Xeyr, tərs dekompilyasiya mövcud deyil. mlmodelc Apple-ın xüsusi ikili formatıdır. Orijinal .mlmodel versiya idarəetmə sistemində ayrıca saxlanılır.

mlmodelc INT8-də kvantlaşdırılmış modelləri dəstəkləyirmi?

Bəli, mlmodelc Core ML Tools vasitəsilə INT8 kvantlaşdırmanı dəstəkləyir. Kompilyasiya zamanı çəkilər FP32-dən INT8-ə çevrilir ki, bu da ölçünü dörd dəfə azaldır və ANE-də 2x sürətlənmə təmin edir.

Nəticə

  • mlmodelc — Apple cihazlarında icra üçün optimallaşdırılmış Core ML modelinin kompilyasiya olunmuş formatı.
  • Kompilyasiya qrafın optimallaşdırılmasını, təbəqələrin birləşməsini və çəkilərin hədəf platforma üçün kvantlaşdırılmasını əhatə edir.
  • Format yüklənmə vaxtının 30–60% azalmasını və pik yaddaş istehlakının 30–45% azalmasını təmin edir.
  • Yerləşdirilmə statik paket, şəbəkədən yükləmə ilə kompilyasiya və ya On-Demand Resources vasitəsilə mümkündür.
  • mlmodelc Core ML Runtime vasitəsilə Apple Neural Engine, GPU və CPU-da icranı dəstəkləyir.
  • Yükləmə üçün səhv idarəetməsi ilə fonda MLModel.load(contentsOf:) istifadə edin.
  • Modellərin performans monitorinqi Core ML şablonu ilə Instruments vasitəsilə aparılır.

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.

Layihəni müzakirə et

Həm də oxuyun