mlmodelc, iOS, macOS ve iPadOS çalıştıran Apple cihazlarında yürütme için optimize edilmiş, Core ML modelinin derlenmiş bir sürümüdür. Orijinal .mlmodel formatının aksine, mlmodelc dosyası, modelin Core ML Runtime tarafından anlaşılabilir bir iç temsile dönüştürüldüğü bir derleme aşamasından geçer. Apple Geliştirici Dokümantasyonu, 2025'e göre derleme, Xcode'da uygulama oluşturulurken ve ağdan model indirildikten sonra cihazda otomatik olarak gerçekleşir. mlmodelc, yorumlanabilir formata kıyasla daha hızlı başlatma ve daha düşük bellek tüketimi sağlar.
Önemli Noktalar
mlmodelc, Apple cihazlarında doğrudan yürütme için tasarlanmış derlenmiş bir ikili Core ML model formatıdır. Orijinal .mlmodel formatı, protobuf model tanımı, dizi olarak ağırlıklar ve JSON'da meta veriler içeren bir pakettir. Derleme sırasında bu yapı, belirli donanım platformu için optimize edilmiş kompakt bir ikili temsile dönüştürülür.
mlmodelc'nin temel farkı, çıkarım sırasında yorumlama aşamasının olmamasıdır. Core ML Runtime, protobuf şemasını ayrıştırmaz veya hesaplama grafiğini dinamik olarak oluşturmaz — tüm bu adımlar derleme zamanında gerçekleştirilir. Bu, mimari karmaşıklığına bağlı olarak modelin ilk yüklenme süresinde %30 ila %60 arasında bir iyileşme sağlar.
WWDC 2023 oturumu “Core ML Tools ve Model Optimizasyonu”na göre derleme, kayan nokta işlem optimizasyonu, ardışık katmanların birleştirilmesi ve Apple Neural Engine tarafından anlaşılabilir bir formata dönüştürmeyi içerir. Geliştiricinin bu süreci manuel olarak yönetmesi gerekmez — Xcode, derleme zamanında otomatik olarak derlemeyi gerçekleştirir.
| Özellik | .mlmodel | mlmodelc |
|---|---|---|
| Depolama Formatı | Paket (protobuf + ağırlıklar) | İkili, platforma özgü |
| Yürütmeye Hazırlık | Derleme gerektirir | Çıkarım için hazır |
| Disk Boyutu | Orijinal boyut | %10–20 daha küçük |
| İlk Başlatma Hızı | Daha yavaş (ayrıştırma + derleme) | Anında başlatma |
| ANE Desteği | Ek optimizasyon gerektirir | Otomatik |
Modelin mlmodelc'ye derlenmesi üç aşamadan geçer. İlk aşamada, Core ML Tools .mlmodel'in protobuf spesifikasyonunu okur ve MIL (Model Intermediate Language) formatında bir iç hesaplama grafiği oluşturur. Araç, her işlemin hedef cihazla uyumluluğunu kontrol eder ve desteklenmeyen katmanları CPU yürütmesi için işaretler.
İkinci aşamada, grafik optimizasyonu gerçekleştirilir: ardışık katmanların birleştirilmesi (evrişim + toplu normalleştirme → birleşik evrişim), ölü düğümlerin kaldırılması ve ağırlıkların FP32'den FP16 veya INT8'e nicemlenmesi. Apple Mühendislik Raporu “Core ML Optimization Pipeline” (2024)'e göre katman birleştirme, çıkarım işlemlerinin sayısını %40'a kadar azaltır.
Üçüncü aşama, ikili temsil oluşturmadır. Optimize edilmiş grafik, tescilli Core ML Runtime formatında serileştirilir. Ağırlıklar, CPU önbellek hatlarına hizalanarak kaydedilir ve meta veriler hızlı erişim için ayrı bir dizinde saklanır. Sonuç, uygulama paketine dahil edilmeye hazır, .mlmodelc uzantılı bir klasördür.
mlmodelc yapısı üç temel bileşen içerir. Model Description, model meta verilerini içerir: giriş ve çıkış türleri, boyutları, tensör adları ve ön işleme parametreleri. Bu bölüm, Core ML API ile uyumluluk için JSON benzeri bir formatta saklanır.
Program, iç MIL dilinde hesaplama grafiğinin ikili temsilidir. Apple, MIL'i TensorFlow'daki MLIR veya ONNX'e benzer bir ara temsil olarak kullanır. Bir MIL programı, her biri bir türe, giriş ve çıkış tensörlerine ve niteliklere sahip işlemlerden oluşur. MIL formatı, Apple Neural Engine üzerinde verimli yürütme için optimize edilmiştir.
Üçüncü bileşen, modelin tüm eğitilmiş ağırlıklarını içeren weights.bin dosyasıdır. Ağırlıklar, optimum önbellek yüklemesi için 64 bayta hizalanarak saklanır. Derleme sırasında niceleme belirtilirse, ağırlıklar FP16 veya INT8 olarak kaydedilir, bu da dosya boyutunu azaltır ve bu formatlar için donanım desteğine sahip Apple A17 ve M4 yongalarında çıkarımı hızlandırır.
Apple, bir uygulamaya mlmodelc dahil etmek için üç yöntemi destekler. Birincisi, pakete statik dahil etmedir: mlmodelc dosyası Xcode projesine eklenir ve derleme sırasında .app'in içine girer. Bu yaklaşım, 100 MB'a kadar küçük modeller için idealdir ve ilk başlatma için ağ erişimi gerektirmez.
İkinci yöntem, MLModel.compile(at:) aracılığıyla ağdan indirme ve cihazda derlemedir. Geliştirici .mlmodel'i indirir, geçici bir dizine koyar ve Core ML derleyicisini çağırır. Sonuç, sonraki başlatmalar için önbelleğe alınabilen bir mlmodelc'dir. Core ML için Apple HIG'e göre bu yaklaşım, 100 MB'den büyük modeller ve yeni bir uygulama sürümü yayınlamadan dinamik güncellemeler için önerilir.
Üçüncü yöntem, ihtiyaç halinde indirilen modeller için İsteğe Bağlı Kaynaklar (On-Demand Resources)'dır. Apple ODR, mlmodelc'nin bulutta saklanmasına ve yalnızca ihtiyaç duyulduğunda indirilmesine olanak tanır. Bu, kullanıcının yalnızca birkaçını kullandığı düzinelerce modele sahip uygulamalar için yaygın bir senaryodur.
Bir model ağdan indirilirken derleme süresini hesaba katmak önemlidir. MLModel.compile(at:) senkron olarak yürütülür ve A12 ve daha eski cihazlarda orta boy modeller için 5–10 saniyeye kadar kullanıcı arayüzünü bloke edebilir. Derlemenin bir arka plan iş parçacığında gerçekleştirilmesi ve kullanıcıya bir yükleme göstergesi aracılığıyla ilerleme hakkında bilgi verilmesi önerilir.
mlmodelc'nin ana avantajı model yükleme hızıdır. Apple Performans Karşılaştırmalarına (2024) göre, 100 MB'lık bir ResNet-50 modeli, .mlmodel'e kıyasla mlmodelc formatında %58 daha hızlı yüklenir. Bu, özellikle sırayla birden çok modelle çalışan uygulamalar için önemlidir.
İkinci avantaj, tepe bellek tüketiminin azalmasıdır. .mlmodel yüklenirken Core ML Runtime, protobuf'u ayrıştırmak için bir arabellek ve grafik derlemesi için ikinci bir arabellek ayırır. mlmodelc bu aşamaları atlayarak doğrudan başlar. Bilgisayarlı görme modelleri için tepe bellek tüketimi %30–45 oranında azalır.
Üçüncüsü, donanım optimizasyonudur. coremlc derleyicisi, derleme zamanında hedef cihazı analiz eder ve ANE, GPU ve CPU arasında optimum işlem bölümünü seçer. Derleme evrensel ise, derleme ilk başlatmada cihaza ertelenir ve sonuç sonraki oturumlar için önbelleğe alınır.
Uygulama paketinden derlenmiş bir modeli yükleme örneği. Modelin URL'sini belirtin ve MLModel.load(contentsOf:) öğesini çağırmanız yeterlidir. Core ML Runtime, uzantıya göre mlmodelc formatını otomatik olarak algılayacak ve başlatmayı gerçekleştirecektir.
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)
Sonraki önbelleğe alma ile cihazda .mlmodel derleme örneği. mlmodelc'ye geçici yolu almak için MLModel.compile(at:) kullanın, ardından önbellek dizinine kopyalayı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)
Sıkça Sorulan Sorular
Evet, mlmodelc iOS simülatöründe çalışır, ancak ANE hızlandırması olmadan, çünkü Neural Engine, Mac'te bulunmayan bir donanım bileşenidir. Çıkarım, Accelerate çerçevesi aracılığıyla CPU'da gerçekleştirilir.
mlmodelc yürütme için derlenmiş bir formattır. .mlpackage, orijinal modeli ve birden çok yapılandırmayı birleştiren Xcode 15+ için bir kapsayıcıdır. .mlpackage, uygulama derlenirken mlmodelc'ye derlenir.
Dosya uzantısını kontrol edin: .mlmodelc. Modelin uzantısı .mlmodel ise derlenmemiştir. Xcode'da derlemeden sonra, hazır mlmodelc uygulamanın DerivedData klasöründe bulunur.
Hayır, ters derleme mevcut değildir. mlmodelc, Apple'ın ikili tescilli formatıdır. Orijinal .mlmodel, sürüm kontrolünde ayrı olarak saklanır.
Evet, mlmodelc Core ML Tools aracılığıyla INT8 nicelemesini destekler. Derleme sırasında ağırlıklar FP32'den INT8'e dönüştürülür, bu da boyutu dört kat azaltır ve ANE'de 2 kata kadar hız sağlar.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun