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 — 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.
| Xarakteristika | .mlmodel | mlmodelc |
|---|---|---|
| Saxlama formatı | Paket (protobuf + çəkilər) | Ikili, platforma spesifik |
| Icra hazırlığı | Kompilyasiya tələb edir | Inferens üçün hazır |
| Diskdə ölçüsü | Orijinal ölçü | 10–20% kiçik |
| Ilk işə düşmə sürəti | Yavaş (təhlil + kompilyasiya) | Ani işə düşmə |
| ANE dəstəyi | Əlavə optimallaşdırma tələb edir | Avtomatik |
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 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.
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.
Şə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 ə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.
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.
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.
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
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 — 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.
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.
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.
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ə
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