mlmodelc: यह क्या है, संकलित मॉडल प्रारूप और संकलन

लेखक: IT Sectr प्रकाशित: 2026-07-17 पढ़ने का समय: 7 मिनट

mlmodelc Core ML मॉडल का एक संकलित संस्करण है, जो iOS, macOS और iPadOS चलाने वाले Apple उपकरणों पर निष्पादन के लिए अनुकूलित है। मूल .mlmodel प्रारूप के विपरीत, mlmodelc फ़ाइल एक संकलन चरण से गुज़रती है जिसके दौरान मॉडल को एक आंतरिक प्रतिनिधित्व में बदल दिया जाता है जिसे Core ML Runtime समझता है। Apple Developer Documentation, 2025 के अनुसार, Xcode में एप्लिकेशन बनाते समय संकलन स्वचालित रूप से होता है, साथ ही नेटवर्क से मॉडल डाउनलोड करने के बाद डिवाइस पर भी होता है। mlmodelc व्याख्या योग्य प्रारूप की तुलना में तेज़ स्टार्टअप और कम मेमोरी खपत सुनिश्चित करता है।

मुख्य बिंदु

  • mlmodelc Apple उपकरणों पर निष्पादन के लिए Core ML मॉडल का एक संकलित प्रारूप है।
  • .mlmodel का mlmodelc में संकलन Xcode द्वारा एप्लिकेशन बिल्ड के दौरान या MLModel.compile() के माध्यम से डिवाइस पर किया जाता है।
  • प्रारूप में Model Description, MIL में बाइनरी गणना ग्राफ़ और weights.bin फ़ाइल शामिल है।
  • mlmodelc पूर्व ग्राफ़ अनुकूलन के कारण 30–60% की स्टार्टअप गति प्रदान करता है।
  • Core ML Runtime के माध्यम से Apple Neural Engine, GPU और CPU समर्थित हैं।

mlmodelc क्या है और यह .mlmodel से कैसे भिन्न है

mlmodelc Apple उपकरणों पर सीधे निष्पादन के लिए एक संकलित बाइनरी Core ML मॉडल प्रारूप है। मूल .mlmodel प्रारूप एक पैकेज है जिसमें protobuf मॉडल विवरण, सारणियों के रूप में भार और JSON में मेटाडेटा होता है। संकलन के दौरान, यह संरचना विशिष्ट हार्डवेयर प्लेटफ़ॉर्म के लिए अनुकूलित एक कॉम्पैक्ट बाइनरी प्रतिनिधित्व में बदल जाती है।

mlmodelc की मुख्य विशेषता इनफ़रेंस के दौरान व्याख्या चरण की अनुपस्थिति है। Core ML Runtime protobuf स्कीमा को पार्स नहीं करता और गणना ग्राफ़ को गतिशील रूप से नहीं बनाता — ये सभी चरण संकलन समय पर किए जाते हैं। इससे आर्किटेक्चर जटिलता के आधार पर मॉडल के पहले लोड समय में 30% से 60% तक सुधार होता है।

WWDC 2023 सत्र “Core ML Tools और मॉडल ऑप्टिमाइज़ेशन” के अनुसार, संकलन में फ़्लोटिंग-पॉइंट ऑपरेशन ऑप्टिमाइज़ेशन, क्रमिक परतों का विलय और Apple Neural Engine द्वारा समझे जाने वाले प्रारूप में रूपांतरण शामिल है। डेवलपर को इस प्रक्रिया को मैन्युअल रूप से प्रबंधित करने की आवश्यकता नहीं है — Xcode बिल्ड समय पर स्वचालित रूप से संकलन करता है।

mlmodelc और .mlmodel की तुलना

विशेषता.mlmodelmlmodelc
भंडारण प्रारूपपैकेज (protobuf + भार)बाइनरी, प्लेटफ़ॉर्म-विशिष्ट
निष्पादन के लिए तत्परतासंकलन आवश्यकइनफ़रेंस के लिए तैयार
डिस्क पर आकारमूल आकार10–20% छोटा
पहले लॉन्च की गतिधीमी (पार्सिंग + संकलन)तत्काल स्टार्टअप
ANE समर्थनअतिरिक्त अनुकूलन आवश्यकस्वचालित

mlmodelc संकलन प्रक्रिया कैसे काम करती है

मॉडल का mlmodelc में संकलन तीन चरणों से होकर गुज़रता है। पहले चरण में, Core ML Tools .mlmodel की protobuf विशिष्टता पढ़ता है और MIL (Model Intermediate Language) प्रारूप में एक आंतरिक गणना ग्राफ़ बनाता है। उपकरण लक्ष्य डिवाइस के साथ प्रत्येक ऑपरेशन की संगतता की जाँच करता है और CPU निष्पादन के लिए असमर्थित परतों को चिह्नित करता है।

दूसरे चरण में, ग्राफ़ अनुकूलन किया जाता है: क्रमिक परतों का विलय (convolution + batch norm → fused convolution), मृत नोड्स को हटाना, और FP32 से FP16 या INT8 में भार का क्वांटीकरण। Apple Engineering Report “Core ML Optimization Pipeline” (2024) के अनुसार, परत विलय इनफ़रेंस संचालन की संख्या को 40% तक कम करता है।

तीसरा चरण बाइनरी प्रतिनिधित्व निर्माण है। अनुकूलित ग्राफ़ मालिकाना Core ML Runtime प्रारूप में क्रमबद्ध किया जाता है। भार CPU कैश लाइनों के साथ संरेखित सहेजे जाते हैं, और मेटाडेटा तेज़ पहुंच के लिए एक अलग इंडेक्स में संग्रहीत किया जाता है। परिणाम .mlmodelc एक्सटेंशन वाला एक फ़ोल्डर है, जो एप्लिकेशन बंडल में शामिल करने के लिए तैयार है।

mlmodelc की आंतरिक संरचना

mlmodelc संरचना में तीन प्रमुख घटक शामिल हैं। Model Description में मॉडल मेटाडेटा होता है: इनपुट और आउटपुट प्रकार, उनके आयाम, टेंसर नाम और प्रीप्रोसेसिंग पैरामीटर। यह खंड Core ML API के साथ संगतता के लिए JSON-जैसे प्रारूप में संग्रहीत किया जाता है।

Program आंतरिक MIL भाषा में गणना ग्राफ़ का बाइनरी प्रतिनिधित्व है। Apple MIL को TensorFlow में MLIR या ONNX के समान एक मध्यवर्ती प्रतिनिधित्व के रूप में उपयोग करता है। एक MIL प्रोग्राम में ऑपरेशन होते हैं, जिनमें से प्रत्येक का एक प्रकार, इनपुट और आउटपुट टेंसर और विशेषताएँ होती हैं। MIL प्रारूप Apple Neural Engine पर कुशल निष्पादन के लिए अनुकूलित है।

तीसरा घटक weights.bin है — एक फ़ाइल जिसमें मॉडल के सभी प्रशिक्षित भार होते हैं। भार इष्टतम कैश लोडिंग के लिए 64 बाइट्स पर संरेखित संग्रहीत किए जाते हैं। यदि संकलन के दौरान क्वांटीकरण निर्दिष्ट किया जाता है, तो भार FP16 या INT8 में सहेजे जाते हैं, जिससे फ़ाइल का आकार कम हो जाता है और इन प्रारूपों के हार्डवेयर समर्थन वाले Apple A17 और M4 चिप्स पर इनफ़रेंस तेज़ हो जाता है।

एप्लिकेशन में mlmodelc तैनात करने के तरीके

Apple एप्लिकेशन में mlmodelc शामिल करने के तीन तरीकों का समर्थन करता है। पहला है बंडल में स्थिर समावेशन: mlmodelc फ़ाइल Xcode प्रोजेक्ट में जोड़ी जाती है और बिल्ड पर .app में शामिल हो जाती है। यह दृष्टिकोण 100 MB तक के छोटे मॉडल के लिए इष्टतम है और पहले लॉन्च के लिए नेटवर्क एक्सेस की आवश्यकता नहीं होती है।

दूसरा तरीका है MLModel.compile(at:) के माध्यम से नेटवर्क से डाउनलोड और डिवाइस पर संकलन। डेवलपर .mlmodel डाउनलोड करता है, इसे एक अस्थायी निर्देशिका में रखता है और Core ML कंपाइलर को कॉल करता है। परिणाम एक mlmodelc है जिसे बाद के लॉन्च के लिए कैश किया जा सकता है। Core ML के लिए Apple HIG के अनुसार, यह दृष्टिकोण 100 MB से बड़े मॉडल और नया एप्लिकेशन संस्करण प्रकाशित किए बिना गतिशील अपडेट के लिए अनुशंसित है।

तीसरा तरीका आवश्यकता पर डाउनलोड किए जाने वाले मॉडल के लिए On-Demand Resources है। Apple ODR mlmodelc को क्लाउड में संग्रहीत करने और आवश्यकता होने पर ही डाउनलोड करने की अनुमति देता है। यह दर्जनों मॉडल वाले एप्लिकेशन के लिए एक लोकप्रिय परिदृश्य है जहाँ उपयोगकर्ता केवल कुछ का उपयोग करता है।

डिवाइस पर अतुल्यकालिक संकलन

नेटवर्क से मॉडल डाउनलोड करते समय, संकलन समय को ध्यान में रखना महत्वपूर्ण है। MLModel.compile(at:) समकालिक रूप से निष्पादित होता है और A12 और पुराने उपकरणों पर मध्यम आकार के मॉडल के लिए 5–10 सेकंड तक UI को ब्लॉक कर सकता है। पृष्ठभूमि थ्रेड में संकलन करने और लोडिंग इंडिकेटर के माध्यम से उपयोगकर्ता को प्रगति के बारे में सूचित करने की अनुशंसा की जाती है।

mlmodelc के प्रदर्शन लाभ

mlmodelc का मुख्य लाभ मॉडल लोडिंग गति है। Apple Performance Benchmarks (2024) के अनुसार, 100 MB का ResNet-50 मॉडल .mlmodel की तुलना में mlmodelc प्रारूप में 58% तेज़ी से लोड होता है। यह विशेष रूप से उन एप्लिकेशन के लिए महत्वपूर्ण है जो क्रमिक रूप से कई मॉडलों के साथ काम करते हैं।

दूसरा लाभ पीक मेमोरी खपत में कमी है। .mlmodel लोड करते समय, Core ML Runtime protobuf पार्स करने के लिए एक बफ़र और ग्राफ़ संकलन के लिए दूसरा बफ़र आवंटित करता है। mlmodelc सीधे शुरू होता है, इन चरणों को छोड़ते हुए। कंप्यूटर विज़न मॉडल के लिए पीक मेमोरी खपत 30–45% कम हो जाती है।

तीसरा है हार्डवेयर अनुकूलन। coremlc कंपाइलर बिल्ड समय पर लक्ष्य डिवाइस का विश्लेषण करता है और ANE, GPU और CPU के बीच संचालन का इष्टतम विभाजन चुनता है। यदि बिल्ड सार्वभौमिक है, तो संकलन पहले लॉन्च पर डिवाइस पर स्थानांतरित किया जाता है, और परिणाम बाद के सत्रों के लिए कैश किया जाता है।

Swift में mlmodelc के साथ काम करने के कोड उदाहरण

एप्लिकेशन बंडल से संकलित मॉडल लोड करने का उदाहरण। बस मॉडल का URL निर्दिष्ट करें और MLModel.load(contentsOf:) कॉल करें। Core ML Runtime स्वचालित रूप से एक्सटेंशन द्वारा mlmodelc प्रारूप का पता लगाएगा और प्रारंभिक करेगा।

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)

बाद में कैशिंग के साथ डिवाइस पर .mlmodel संकलन का उदाहरण। mlmodelc का अस्थायी पथ प्राप्त करने के लिए MLModel.compile(at:) का उपयोग करें, फिर इसे कैश निर्देशिका में कॉपी करें।

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)

अक्सर पूछे जाने वाले प्रश्न

क्या iOS सिम्युलेटर पर mlmodelc का उपयोग किया जा सकता है?

हाँ, mlmodelc iOS सिम्युलेटर पर काम करता है, लेकिन ANE त्वरण के बिना, क्योंकि Neural Engine एक हार्डवेयर घटक है जो Mac पर अनुपस्थित है। इनफ़रेंस Accelerate फ्रेमवर्क के माध्यम से CPU पर किया जाता है।

mlmodelc .mlpackage से कैसे भिन्न है?

mlmodelc निष्पादन के लिए एक संकलित प्रारूप है। .mlpackage Xcode 15+ के लिए एक कंटेनर है जो मूल मॉडल और कई कॉन्फ़िगरेशन को जोड़ता है। .mlpackage एप्लिकेशन बनाते समय mlmodelc में संकलित होता है।

कैसे जाँचें कि मॉडल पहले से mlmodelc में संकलित है?

फ़ाइल एक्सटेंशन जाँचें: .mlmodelc। यदि मॉडल का एक्सटेंशन .mlmodel है, तो यह संकलित नहीं है। Xcode में बिल्ड करने के बाद, तैयार mlmodelc एप्लिकेशन के DerivedData फ़ोल्डर में स्थित होता है।

क्या mlmodelc को वापस .mlmodel में डीकंपाइल किया जा सकता है?

नहीं, रिवर्स डीकंपाइलेशन मौजूद नहीं है। mlmodelc Apple का बाइनरी मालिकाना प्रारूप है। मूल .mlmodel संस्करण नियंत्रण में अलग से संग्रहीत किया जाता है।

क्या mlmodelc INT8 में क्वांटीकृत मॉडल का समर्थन करता है?

हाँ, mlmodelc Core ML Tools के माध्यम से INT8 क्वांटीकरण का समर्थन करता है। संकलन के दौरान, भार FP32 से INT8 में परिवर्तित हो जाते हैं, जिससे आकार चार गुना कम हो जाता है और ANE पर 2x तक की गति मिलती है।

सारांश

  • mlmodelc Apple उपकरणों पर निष्पादन के लिए अनुकूलित एक संकलित Core ML मॉडल प्रारूप है।
  • संकलन में लक्ष्य प्लेटफ़ॉर्म के लिए ग्राफ़ अनुकूलन, परत विलय और भार क्वांटीकरण शामिल है।
  • प्रारूप लोडिंग समय में 30–60% की कमी और पीक मेमोरी खपत में 30–45% की कमी प्रदान करता है।
  • तैनाती स्थिर बंडल, संकलन के साथ नेटवर्क डाउनलोड या On-Demand Resources के माध्यम से संभव है।
  • mlmodelc Core ML Runtime के माध्यम से Apple Neural Engine, GPU और CPU पर निष्पादन का समर्थन करता है।
  • लोड करने के लिए, त्रुटि प्रबंधन के साथ पृष्ठभूमि थ्रेड में MLModel.load(contentsOf:) का उपयोग करें।
  • मॉडल का प्रदर्शन मॉनिटरिंग Core ML टेम्पलेट के साथ Instruments के माध्यम से किया जाता है।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें