mlmodel — فرمت فایل مدل یادگیری ماشین برای چارچوب Core ML اپل است، که پیش از ظهور فرمت .mlpackage برای ذخیره مدلهای آموزشدیده استفاده میشد. فایل .mlmodel یک بسته دودویی در فرمت protobuf بود که شامل توصیف مدل، وزنهای شبکه عصبی، فرادادهها و اطلاعات ورودی/خروجی بود. به گزارش Apple Core ML Release Notes (2025)، از Xcode 13 و Core ML 4 به بعد، فرمت قدیمی .mlmodel به نفع .mlpackage منسوخ اعلام شده است.
نکات کلیدی
mlmodel — یک فرمت فایل دودویی است که توسط Apple در سال 2017 همراه با چارچوب Core ML در WWDC 2017 معرفی شد. این فرمت بر اساس فناوری سریالیسازی protobuf (Protocol Buffers) گوگل استوار دارد.
فرمت .mlmodel تنها فرمت Core ML از 2017 تا 2021 بود. در این مدت میلیونها مدل از TensorFlow، Keras، PyTorch، Caffe، scikit-learn و سایر کتابخانهها از طریق coremltools تبدیل شدند.
فایل mlmodel مدل را در یک نمایش دودویی کامپاکت ذخیره میکند. اندازه از چندین کیلوبایت تا چند گیگابایت متغیر است. فرمت از همه انواع مدلهای Core ML پشتیبانی میکند.
| ویژگی | mlmodel |
|---|---|
| فرمت | دودویی (protobuf) |
| قابلیت خوانش | غیرقابل خوانش |
| ورزیونکردن | ندارد |
| فراداده | در سخم protobuf |
| سازگار با git | نخیر |
ساختار داخلی فایل .mlmodel توسط سخم protobuf تعریف شده است. بخشهای اصلی: modelDescription، modelParameters، preprocessing، postprocessing.
بخش modelDescription (MLModelDescription) شامل نام مدل، نویسنده، ورزیون، توصیف، لایسانس و توصیف تمام پارامترهای ورودی و خروجی است: نام، نوع داده (Float32، Int32، String، Image)، ابعاد، فرمت تصویر (BGR، RGB).
بخش modelParameters شامل وزنها و پارامترهای واقعی مدل آموزشدیده است. برای شبکههای عصبی، این یک آرایه از NeuralNetworkLayer است.
بخش preprocessing مراحل پیشپردازش دادههای ورودی را توصیف میکند: Scaler، ImagePreprocessing، OneHotEncoder، FeatureVectorizer.
mlpackage — فرمت نسل جدید برای مدلهای Core ML است که در WWDC 2021 معرفی شد. .mlpackage یک پوشه (پکیج) با ساختار فایلی است که دادههای مدل را در فایلهای JSON قابل خوانش و فایلهای دودویی جداگانه برای وزنها ذخیره میکند.
| پارامتر | mlmodel | mlpackage |
|---|---|---|
| نوع | فایل دودویی تکی | پوشه (پکیج) |
| فراداده | protobuf دودویی | JSON |
| Git diff | بیفایده | قابل استفاده |
| ورزیونکردن | دستی | خودکار |
| Custom layers | ندارد | پشتیبانی |
| وضعیت | منسوخ | فعال |
پوشه .mlpackage شامل: ModelCI/، Data/ (SharedWeights.bin)، Metadata.json، Model.json، Manifests/ است.
تبدیل .mlmodel به .mlpackage به دو روش انجام میشود: خودکار در Xcode و دستی از طریق coremltools در Python.
import coremltools as ct
model = ct.models.MLModel(
"OldModel.mlmodel"
)
model.author = "IT Sectr"
model.short_description = "Converted from mlmodel"
model.version = "2.0"
model.save("NewModel.mlpackage")
با افزودن فایل .mlmodel به پروژه Xcode، سیستم خودکار Model Compiler را در زمان ساخت اجرا میکند.
coremltools ct.utils.compare_models() را برای مقایسه پیشبینیها ارائه میدهد. تفاوت مجاز برای Float32 1e-5 است.
سازگاری به عقب .mlmodel در تمام نسخههای فعلی iOS و macOS تأمین شده است.
از iOS 18 به بعد، Core ML دیگر از بارگیری مستقیم .mlmodel پشتیبانی نمیکند.
پشتیبانی کامل در iOS 20-21 (2026-2027) پایان مییابد.
.mlmodel هنوز در پروژههای موجود و برخی سناریوها یافت میشود.
پروژههای شروعشده قبل از 2021 میتوانند دهها مدل .mlmodel داشته باشند.
خطوط لوله CI/CD از coremltools 4.x برای خروجی .mlmodel استفاده میکنند.
کتابخانههای منتشرشده قبل از 2021 میتوانند شامل مدلهای .mlmodel باشند.
کار با فرمت منسوخ .mlmodel چند مشکل رایج دارد.
در Xcode 13+ هشداری نمایش داده میشود: «'mlmodel' format is deprecated. Use 'mlpackage' instead.»
فایل .mlmodel قدیمی ممکن است در iOS 16+ به دلیل تغییرات protobuf باز نشود.
مدلهای .mlmodel با custom layers قابل تبدیل مستقیم نیستند.
سوالات متداول
mlmodel — یک فرمت فایل دودویی منسوخ برای مدلهای Core ML است.
mlmodel — فایل دودویی تکی. mlpackage — پوشه با metadata JSON.
از طریق Xcode، coremltools (Python) یا Netron.
توصیه میشود. Xcode خودکار تبدیل میکند، اما ویژگیهای جدید Core ML برای .mlmodel در دسترس نیست.
iOS 18+ .mlmodel را تنها در حالت سازگاری به عقب پشتیبانی میکند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید