mlmodelc হল Core ML মডেলের একটি কম্পাইলড সংস্করণ, যা iOS, macOS এবং iPadOS চালিত Apple ডিভাইসে এক্সিকিউশনের জন্য অপ্টিমাইজ করা। মূল .mlmodel ফরম্যাটের থেকে ভিন্ন, mlmodelc ফাইলটি একটি কম্পাইলেশন ধাপ অতিক্রম করে যার সময় মডেলটি একটি অভ্যন্তরীণ উপস্থাপনায় রূপান্তরিত হয় যা Core ML Runtime বুঝতে পারে। Apple Developer Documentation, 2025 অনুসারে, Xcode-এ অ্যাপ্লিকেশন বিল্ড করার সময় স্বয়ংক্রিয়ভাবে কম্পাইলেশন ঘটে, সেইসাথে নেটওয়ার্ক থেকে মডেল ডাউনলোড করার পরে ডিভাইসেও ঘটে। mlmodelc ইন্টারপ্রেটেবল ফরম্যাটের তুলনায় দ্রুত স্টার্টআপ এবং কম মেমরি খরচ নিশ্চিত করে।
মূল পয়েন্ট
mlmodelc হল একটি কম্পাইলড বাইনারি Core ML মডেল ফরম্যাট যা Apple ডিভাইসে সরাসরি এক্সিকিউশনের জন্য তৈরি। মূল .mlmodel ফরম্যাটটি একটি প্যাকেজ যা protobuf মডেল বর্ণনা, অ্যারে হিসেবে ওজন এবং JSON-এ মেটাডেটা ধারণ করে। কম্পাইলেশনের সময়, এই কাঠামোটি নির্দিষ্ট হার্ডওয়্যার প্ল্যাটফর্মের জন্য অপ্টিমাইজ করা একটি কমপ্যাক্ট বাইনারি উপস্থাপনায় রূপান্তরিত হয়।
mlmodelc-এর মূল পার্থক্য হল ইনফারেন্সের সময় ইন্টারপ্রিটেশন ধাপের অনুপস্থিতি। Core ML Runtime protobuf স্কিমা পার্স করে না বা dynamically গণনা গ্রাফ তৈরি করে না — এই সমস্ত ধাপ কম্পাইলেশনের সময় সম্পাদিত হয়। এটি আর্কিটেকচারের জটিলতার উপর নির্ভর করে মডেলের প্রথম লোড সময়ে 30% থেকে 60% পর্যন্ত উন্নতি দেয়।
WWDC 2023 সেশন “Core ML Tools এবং মডেল অপ্টিমাইজেশন” অনুসারে, কম্পাইলেশনের মধ্যে ফ্লোটিং-পয়েন্ট অপারেশন অপ্টিমাইজেশন, ক্রমিক স্তরগুলির একীকরণ এবং Apple Neural Engine-এর বোধগম্য ফরম্যাটে রূপান্তর অন্তর্ভুক্ত রয়েছে। ডেভেলপারকে এই প্রক্রিয়াটি ম্যানুয়ালি পরিচালনা করার প্রয়োজন নেই — Xcode বিল্ড সময়ে স্বয়ংক্রিয়ভাবে কম্পাইলেশন সম্পাদন করে।
| বৈশিষ্ট্য | .mlmodel | mlmodelc |
|---|---|---|
| স্টোরেজ ফরম্যাট | প্যাকেজ (protobuf + ওজন) | বাইনারি, প্ল্যাটফর্ম-নির্দিষ্ট |
| এক্সিকিউশনের জন্য প্রস্তুতি | কম্পাইলেশন প্রয়োজন | ইনফারেন্সের জন্য প্রস্তুত |
| ডিস্কে আকার | মূল আকার | 10–20% ছোট |
| প্রথম লঞ্চের গতি | ধীর (পার্সিং + কম্পাইলেশন) | তাৎক্ষণিক স্টার্টআপ |
| ANE সমর্থন | অতিরিক্ত অপ্টিমাইজেশন প্রয়োজন | স্বয়ংক্রিয় |
মডেলের 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 কাঠামোতে তিনটি মূল উপাদান রয়েছে। 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 চিপে ইনফারেন্স ত্বরান্বিত করে।
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-এর প্রধান সুবিধা হল মডেল লোডিং গতি। Apple Performance Benchmarks (2024) অনুসারে, 100 MB-এর ResNet-50 মডেল .mlmodel-এর তুলনায় mlmodelc ফরম্যাটে 58% দ্রুত লোড হয়। এটি বিশেষত সেই অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ যা ক্রমিকভাবে একাধিক মডেলের সাথে কাজ করে।
দ্বিতীয় সুবিধা হল পিক মেমরি খরচ হ্রাস। .mlmodel লোড করার সময়, Core ML Runtime protobuf পার্স করার জন্য একটি বাফার এবং গ্রাফ কম্পাইলেশনের জন্য দ্বিতীয় বাফার বরাদ্দ করে। mlmodelc সরাসরি শুরু হয়, এই ধাপগুলি এড়িয়ে। কম্পিউটার ভিশন মডেলের জন্য পিক মেমরি খরচ 30–45% হ্রাস পায়।
তৃতীয়টি হল হার্ডওয়্যার অপ্টিমাইজেশন। coremlc কম্পাইলার বিল্ড সময়ে লক্ষ্য ডিভাইস বিশ্লেষণ করে এবং ANE, GPU এবং CPU-এর মধ্যে অপারেশনের সর্বোত্তম বিভাজন নির্বাচন করে। যদি বিল্ড ইউনিভার্সাল হয়, তাহলে কম্পাইলেশন প্রথম লঞ্চে ডিভাইসে স্থানান্তরিত হয় এবং ফলাফল পরবর্তী সেশনের জন্য ক্যাশ করা হয়।
অ্যাপ্লিকেশন বান্ডেল থেকে কম্পাইলড মডেল লোড করার উদাহরণ। কেবল মডেলের URL নির্দিষ্ট করুন এবং MLModel.load(contentsOf:) কল করুন। Core ML Runtime স্বয়ংক্রিয়ভাবে এক্সটেনশন দ্বারা mlmodelc ফরম্যাট সনাক্ত করবে এবং আরম্ভ করবে।
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:) ব্যবহার করুন, তারপর এটি ক্যাশ ডিরেক্টরিতে কপি করুন।
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)
প্রায়শই জিজ্ঞাসিত প্রশ্ন
হ্যাঁ, mlmodelc iOS সিমুলেটরে কাজ করে, কিন্তু ANE ত্বরণ ছাড়া, কারণ Neural Engine একটি হার্ডওয়্যার উপাদান যা Mac-এ অনুপস্থিত। ইনফারেন্স Accelerate ফ্রেমওয়ার্কের মাধ্যমে CPU-তে সম্পাদিত হয়।
mlmodelc এক্সিকিউশনের জন্য একটি কম্পাইলড ফরম্যাট। .mlpackage Xcode 15+-এর জন্য একটি কন্টেইনার যা মূল মডেল এবং একাধিক কনফিগারেশন একত্রিত করে। অ্যাপ্লিকেশন বিল্ড করার সময় .mlpackage mlmodelc-এ কম্পাইল হয়।
ফাইল এক্সটেনশন পরীক্ষা করুন: .mlmodelc। যদি মডেলের এক্সটেনশন .mlmodel হয়, তবে এটি কম্পাইল করা হয়নি। Xcode-এ বিল্ড করার পর, প্রস্তুত mlmodelc অ্যাপ্লিকেশনের DerivedData ফোল্ডারে অবস্থিত।
না, বিপরীত ডিকম্পাইলেশন বিদ্যমান নেই। mlmodelc হল Apple-এর বাইনারি মালিকানাধীন ফরম্যাট। মূল .mlmodel সংস্করণ নিয়ন্ত্রণে আলাদাভাবে সংরক্ষণ করা হয়।
হ্যাঁ, mlmodelc Core ML Tools-এর মাধ্যমে INT8 কোয়ান্টাইজেশন সমর্থন করে। কম্পাইলেশনের সময়, ওজনগুলি FP32 থেকে INT8-এ রূপান্তরিত হয়, যা আকার চারগুণ হ্রাস করে এবং ANE-তে 2x পর্যন্ত গতি বাড়ায়।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন