mlmodelc: derlenmiş model formatı ve derleme nedir

Yazar: IT Sectr Yayınlanma: 2026-07-17 Okuma süresi: 7 dk

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 yürütme için derlenmiş bir Core ML model formatıdır.
  • .mlmodel'den mlmodelc'ye derleme, uygulama derlemesi sırasında Xcode tarafından veya cihazda MLModel.compile() aracılığıyla gerçekleştirilir.
  • Format, Model Description, MIL'de ikili hesaplama grafiği ve weights.bin dosyasını içerir.
  • mlmodelc, ön grafik optimizasyonu sayesinde %30–60 başlatma hızlanması sağlar.
  • Core ML Runtime aracılığıyla Apple Neural Engine, GPU ve CPU desteklenir.

mlmodelc nedir ve .mlmodel'den farkı nedir

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.

mlmodelc ve .mlmodel karşılaştırması

Özellik.mlmodelmlmodelc
Depolama FormatıPaket (protobuf + ağırlıklar)İkili, platforma özgü
Yürütmeye HazırlıkDerleme gerektirirÇıkarım için hazır
Disk BoyutuOrijinal boyut%10–20 daha küçük
İlk Başlatma HızıDaha yavaş (ayrıştırma + derleme)Anında başlatma
ANE DesteğiEk optimizasyon gerektirirOtomatik

mlmodelc derleme süreci nasıl çalışır

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'nin iç mimarisi

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.

Bir uygulamada mlmodelc dağıtma yöntemleri

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.

Cihazda asenkron derleme

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 performans avantajları

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.

Swift'te mlmodelc ile çalışmak için kod örnekleri

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.

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)

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.

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)

Sıkça Sorulan Sorular

mlmodelc iOS simülatöründe kullanılabilir mi?

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'nin .mlpackage'den farkı nedir?

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.

Bir modelin zaten mlmodelc'ye derlenip derlenmediği nasıl kontrol edilir?

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.

mlmodelc tekrar .mlmodel'e derlenebilir mi?

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.

mlmodelc INT8'de nicemlenmiş modelleri destekler mi?

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

  • mlmodelc, Apple cihazlarında yürütme için optimize edilmiş derlenmiş bir Core ML model formatıdır.
  • Derleme, hedef platform için grafik optimizasyonu, katman birleştirme ve ağırlık nicelemesini içerir.
  • Format, yükleme süresinde %30–60 azalma ve tepe bellek tüketiminde %30–45 azalma sağlar.
  • Dağıtım, statik paket, derleme ile ağdan indirme veya İsteğe Bağlı Kaynaklar aracılığıyla mümkündür.
  • mlmodelc, Core ML Runtime aracılığıyla Apple Neural Engine, GPU ve CPU'da yürütmeyi destekler.
  • Yüklemek için, hata yönetimiyle birlikte bir arka plan iş parçacığında MLModel.load(contentsOf:) kullanın.
  • Modellerin performans izlemesi, Core ML şablonuyla Instruments aracılığıyla yapılır.

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.

Projeyi tartış

Ayrıca okuyun