mlmodelc: apa itu, format model yang dikompilasi dan kompilasi

Penulis: IT Sectr Diterbitkan: 2026-07-17 Waktu membaca: 7 mnt

mlmodelc adalah versi terkompilasi dari model Core ML, dioptimalkan untuk eksekusi pada perangkat Apple yang menjalankan iOS, macOS, dan iPadOS. Berbeda dengan format asli .mlmodel, file mlmodelc melalui tahap kompilasi di mana model diubah menjadi representasi internal yang dapat dipahami oleh Core ML Runtime. Menurut Apple Developer Documentation, 2025, kompilasi dilakukan secara otomatis saat membangun aplikasi di Xcode, serta pada perangkat setelah mengunduh model dari jaringan. mlmodelc memberikan startup yang lebih cepat dan konsumsi memori yang lebih rendah dibandingkan dengan format yang diinterpretasikan.

Poin Penting

  • mlmodelc — format terkompilasi dari model Core ML untuk eksekusi pada perangkat Apple.
  • Kompilasi .mlmodel ke mlmodelc dilakukan oleh Xcode saat membangun aplikasi atau pada perangkat melalui MLModel.compile().
  • Format ini mencakup Model Description, grafik komputasi biner dalam MIL, dan file weights.bin.
  • mlmodelc memberikan percepatan startup sebesar 30–60% berkat optimasi grafik sebelumnya.
  • Mendukung Apple Neural Engine, GPU, dan CPU melalui Core ML Runtime.

Apa itu mlmodelc dan perbedaannya dengan .mlmodel

mlmodelc adalah format biner terkompilasi dari model Core ML, yang dirancang untuk eksekusi langsung pada perangkat Apple. Format asli .mlmodel adalah paket yang berisi deskripsi model dalam protobuf, bobot dalam bentuk array, dan metadata dalam JSON. Saat kompilasi, struktur ini diubah menjadi representasi biner yang ringkas, dioptimalkan untuk platform perangkat keras tertentu.

Perbedaan utama mlmodelc adalah tidak adanya tahap interpretasi selama inferensi. Core ML Runtime tidak mengurai skema protobuf dan tidak membangun grafik komputasi secara dinamis — semua langkah ini telah dilakukan pada tahap kompilasi. Ini memberikan penghematan waktu startup pertama model sebesar 30% hingga 60% tergantung pada kompleksitas arsitektur.

Menurut sesi WWDC 2023 „Core ML Tools dan Optimasi Model”, kompilasi mencakup optimasi operasi floating-point, penggabungan lapisan berurutan, dan konversi ke format yang dapat dipahami oleh Apple Neural Engine. Pengembang tidak perlu mengelola proses ini secara manual — Xcode melakukan kompilasi secara otomatis pada tahap pembangunan.

Perbandingan mlmodelc dan .mlmodel

Karakteristik.mlmodelmlmodelc
Format penyimpananPaket (protobuf + bobot)Biner, spesifik platform
Kesiapan eksekusiMemerlukan kompilasiSiap untuk inferensi
Ukuran pada diskUkuran asli10–20% lebih kecil
Kecepatan startup pertamaLebih lambat (penguraian + kompilasi)Startup instan
Dukungan ANEMemerlukan optimasi tambahanOtomatis

Bagaimana proses kompilasi mlmodelc bekerja

Kompilasi model ke mlmodelc melalui tiga tahap. Pada tahap pertama, Core ML Tools membaca spesifikasi protobuf .mlmodel dan membangun grafik komputasi internal dalam format MIL (Model Intermediate Language). Alat ini memeriksa kompatibilitas setiap operasi dengan perangkat target dan menandai lapisan yang tidak didukung untuk eksekusi pada CPU.

Pada tahap kedua, dilakukan optimasi grafik: penggabungan lapisan berurutan (convolution + batch norm → fused convolution), penghapusan node mati, kuantisasi bobot dari FP32 ke FP16 atau INT8. Menurut Apple Engineering Report „Core ML Optimization Pipeline” (2024), penggabungan lapisan mengurangi jumlah operasi inferensi hingga 40%.

Tahap ketiga — generasi representasi biner. Grafik yang dioptimalkan diserialisasi ke format proprietary Core ML Runtime. Bobot disimpan dengan perataan pada jalur cache prosesor, dan metadata dalam indeks terpisah untuk akses cepat. Hasilnya — sebuah folder dengan ekstensi .mlmodelc, siap untuk dimasukkan ke dalam paket aplikasi.

Arsitektur internal mlmodelc

Struktur mlmodelc mencakup tiga komponen utama. Model Description — metadata model: tipe input dan output, dimensinya, nama tensor, parameter pra-pemrosesan. Bagian ini disimpan dalam format mirip JSON untuk kompatibilitas dengan API Core ML.

Program — representasi biner dari grafik komputasi dalam bahasa internal MIL. Apple menggunakan MIL sebagai representasi perantara, mirip dengan MLIR di TensorFlow atau ONNX. Program MIL terdiri dari operasi, masing-masing memiliki tipe, tensor input dan output, serta atribut. Format MIL dioptimalkan untuk eksekusi yang efisien pada Apple Neural Engine.

Komponen ketiga — weights.bin — file yang berisi semua bobot terlatih dari model. Bobot disimpan dengan perataan 64 byte untuk pemuatan optimal ke dalam cache. Jika kuantisasi ditentukan saat kompilasi, bobot disimpan dalam FP16 atau INT8, yang mengurangi ukuran file dan mempercepat inferensi pada chip Apple A17 dan M4 dengan dukungan perangkat keras untuk format ini.

Metode penerapan mlmodelc di aplikasi

Apple mendukung tiga metode untuk menyertakan mlmodelc ke dalam aplikasi. Pertama — penyertaan statis dalam paket: file mlmodelc ditambahkan ke proyek Xcode dan masuk ke .app saat pembangunan. Metode ini optimal untuk model kecil hingga 100 MB dan tidak memerlukan akses jaringan untuk startup pertama.

Kedua — unduhan dari jaringan dengan kompilasi pada perangkat melalui MLModel.compile(at:). Pengembang mengunduh .mlmodel, menempatkannya di direktori sementara, dan memanggil compiler Core ML. Hasilnya — mlmodelc, yang dapat di-cache untuk penggunaan berikutnya. Menurut Apple HIG untuk Core ML, pendekatan ini direkomendasikan untuk model yang lebih besar dari 100 MB dan untuk pembaruan dinamis tanpa menerbitkan versi aplikasi baru.

Ketiga — On-Demand Resources untuk model yang dimuat sesuai permintaan. Apple ODR memungkinkan penyimpanan mlmodelc di cloud dan memuat hanya saat diperlukan. Ini adalah skenario populer untuk aplikasi dengan puluhan model, di mana pengguna hanya menggunakan beberapa.

Kompilasi asinkron pada perangkat

Saat mengunduh model dari jaringan, penting untuk mempertimbangkan waktu kompilasi. MLModel.compile(at:) dijalankan secara sinkron dan dapat memblokir antarmuka pada perangkat dengan A12 dan yang lebih lama hingga 5–10 detik untuk model berukuran sedang. Disarankan untuk melakukan kompilasi di latar belakang dan memberi tahu pengguna tentang proses melalui indikator pemuatan.

Keuntungan kinerja mlmodelc

Keuntungan utama mlmodelc adalah kecepatan pemuatan model. Menurut Apple Performance Benchmarks (2024), model ResNet-50 berukuran 100 MB dimuat 58% lebih cepat dalam format mlmodelc dibandingkan dengan .mlmodel. Ini sangat penting untuk aplikasi yang bekerja dengan beberapa model secara berurutan.

Keuntungan kedua — pengurangan konsumsi memori puncak. Saat memuat .mlmodel, Core ML Runtime mengalokasikan buffer untuk mengurai protobuf dan buffer kedua untuk kompilasi grafik. mlmodelc langsung dijalankan, melewati tahap-tahap ini. Konsumsi memori puncak turun 30–45% untuk model visi komputer.

Ketiga — optimasi perangkat keras. Kompiler coremlc menganalisis perangkat target pada tahap pembangunan dan memilih pembagian operasi yang optimal antara ANE, GPU, dan CPU. Jika build bersifat universal, kompilasi dialihkan ke perangkat pada startup pertama, dan hasilnya di-cache untuk sesi berikutnya.

Contoh bekerja dengan mlmodelc dalam kode Swift

Contoh memuat model yang dikompilasi dari paket aplikasi. Cukup tentukan URL model dan panggil MLModel.load(contentsOf:). Core ML Runtime akan secara otomatis menentukan format mlmodelc dari ekstensi dan melakukan inisialisasi.

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)

Contoh kompilasi .mlmodel pada perangkat dengan caching berikutnya. Gunakan MLModel.compile(at:) untuk mendapatkan jalur sementara ke mlmodelc, lalu salin ke direktori cache.

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)

Pertanyaan yang Sering Diajukan

Bisakah mlmodelc digunakan pada simulator iOS?

Ya, mlmodelc berfungsi pada simulator iOS, tetapi tanpa percepatan ANE, karena Neural Engine adalah komponen perangkat keras yang tidak ada di Mac. Inferensi dilakukan pada CPU melalui Accelerate framework.

Apa perbedaan mlmodelc dengan .mlpackage?

mlmodelc — format terkompilasi untuk eksekusi. .mlpackage — wadah untuk Xcode 15+ yang menggabungkan model asli dan beberapa konfigurasi. .mlpackage dikompilasi ke mlmodelc saat membangun aplikasi.

Bagaimana cara memeriksa apakah model sudah dikompilasi ke mlmodelc?

Periksa ekstensi file: .mlmodelc. Jika model memiliki ekstensi .mlmodel, maka belum dikompilasi. Setelah pembangunan di Xcode, mlmodelc yang sudah jadi berada di folder DerivedData aplikasi.

Bisakah mlmodelc didekompilasi kembali ke .mlmodel?

Tidak, dekompilasi balik tidak ada. mlmodelc adalah format biner proprietary Apple. .mlmodel asli disimpan secara terpisah di sistem kontrol versi.

Apakah mlmodelc mendukung model terkuantisasi dalam INT8?

Ya, mlmodelc mendukung kuantisasi INT8 melalui Core ML Tools. Saat kompilasi, bobot diubah dari FP32 ke INT8, yang memberikan pengurangan ukuran empat kali lipat dan hingga 2x percepatan pada ANE.

Kesimpulan

  • mlmodelc — format terkompilasi dari model Core ML, dioptimalkan untuk eksekusi pada perangkat Apple.
  • Kompilasi mencakup optimasi grafik, penggabungan lapisan, dan kuantisasi bobot untuk platform target.
  • Format ini memberikan pengurangan waktu pemuatan sebesar 30–60% dan pengurangan konsumsi memori puncak sebesar 30–45%.
  • Penerapan dimungkinkan melalui paket statis, unduhan dari jaringan dengan kompilasi, atau On-Demand Resources.
  • mlmodelc mendukung eksekusi pada Apple Neural Engine, GPU, dan CPU melalui Core ML Runtime.
  • Untuk pemuatan, gunakan MLModel.load(contentsOf:) di latar belakang dengan penanganan kesalahan.
  • Pemantauan kinerja model dilakukan melalui Instruments dengan templat Core ML.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga