mlmodel — این چیست، ساختار فایل و تبدیل به mlpackage

نویسنده: IT Sectr منتشر شده: 2026-07-17 زمان مطالعه: 10 دقیقه

mlmodel — فرمت فایل مدل یادگیری ماشین برای چارچوب Core ML اپل است، که پیش از ظهور فرمت .mlpackage برای ذخیره مدل‌های آموزش‌دیده استفاده می‌شد. فایل .mlmodel یک بسته دودویی در فرمت protobuf بود که شامل توصیف مدل، وزن‌های شبکه عصبی، فراداده‌ها و اطلاعات ورودی/خروجی بود. به گزارش Apple Core ML Release Notes (2025)، از Xcode 13 و Core ML 4 به بعد، فرمت قدیمی .mlmodel به نفع .mlpackage منسوخ اعلام شده است.

نکات کلیدی

  • mlmodel — فرمت فایل منسوخ Core ML برای ذخیره مدل‌های ML آموزش‌دیده در فرمت دودویی protobuf.
  • شامل وزن‌های مدل، فراداده‌ها، توصیف داده‌های ورودی/خروجی و پیکربندی پیش/پس از پردازش بود.
  • فایل .mlmodel توسط Xcode به طور خودکار در زمان ساخت برنامه به .mlpackage تبدیل می‌شد.
  • از Xcode 13 (2021)، Apple استفاده از فرمت .mlpackage را به عنوان یک فرمت مدرن‌تر توصیه می‌کند.
  • تبدیل .mlmodel به .mlpackage از طریق Xcode Model Compiler یا اسکریپت coremltools در Python انجام می‌شود.

mlmodel چیست؟

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

ساختار داخلی فایل .mlmodel توسط سخم protobuf تعریف شده است. بخش‌های اصلی: modelDescription، modelParameters، preprocessing، postprocessing.

بخش modelDescription

بخش modelDescription (MLModelDescription) شامل نام مدل، نویسنده، ورزیون، توصیف، لایسانس و توصیف تمام پارامترهای ورودی و خروجی است: نام، نوع داده (Float32، Int32، String، Image)، ابعاد، فرمت تصویر (BGR، RGB).

بخش modelParameters

بخش modelParameters شامل وزن‌ها و پارامترهای واقعی مدل آموزش‌دیده است. برای شبکه‌های عصبی، این یک آرایه از NeuralNetworkLayer است.

بخش preprocessing

بخش preprocessing مراحل پیش‌پردازش داده‌های ورودی را توصیف می‌کند: Scaler، ImagePreprocessing، OneHotEncoder، FeatureVectorizer.

mlmodel در مقایسه با mlpackage

mlpackage — فرمت نسل جدید برای مدل‌های Core ML است که در WWDC 2021 معرفی شد. .mlpackage یک پوشه (پکیج) با ساختار فایلی است که داده‌های مدل را در فایل‌های JSON قابل خوانش و فایل‌های دودویی جداگانه برای وزن‌ها ذخیره می‌کند.

پارامترmlmodelmlpackage
نوعفایل دودویی تکیپوشه (پکیج)
فرادادهprotobuf دودوییJSON
Git diffبی‌فایدهقابل استفاده
ورزیون‌کردندستیخودکار
Custom layersنداردپشتیبانی
وضعیتمنسوخفعال

ساختار فایلی mlpackage

پوشه .mlpackage شامل: ModelCI/، Data/ (SharedWeights.bin)، Metadata.json، Model.json، Manifests/ است.

چگونه mlmodel را به mlpackage تبدیل کنیم

تبدیل .mlmodel به .mlpackage به دو روش انجام می‌شود: خودکار در Xcode و دستی از طریق coremltools در Python.

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")

تبدیل خودکار در Xcode

با افزودن فایل .mlmodel به پروژه Xcode، سیستم خودکار Model Compiler را در زمان ساخت اجرا می‌کند.

بررسی پس از تبدیل

coremltools ct.utils.compare_models() را برای مقایسه پیش‌بینی‌ها ارائه می‌دهد. تفاوت مجاز برای Float32 1e-5 است.

سازگاری به عقب و پشتیبانی

سازگاری به عقب .mlmodel در تمام نسخه‌های فعلی iOS و macOS تأمین شده است.

پشتیبانی در iOS 18+ و macOS 15+

از iOS 18 به بعد، Core ML دیگر از بارگیری مستقیم .mlmodel پشتیبانی نمی‌کند.

زمان‌بندی پایان پشتیبانی

پشتیبانی کامل در iOS 20-21 (2026-2027) پایان می‌یابد.

چه زمانی mlmodel هنوز مورد استفاده است

.mlmodel هنوز در پروژه‌های موجود و برخی سناریوها یافت می‌شود.

پروژه‌های قدیمی

پروژه‌های شروع‌شده قبل از 2021 می‌توانند ده‌ها مدل .mlmodel داشته باشند.

خط لوله CI/CD با coremltools

خطوط لوله CI/CD از coremltools 4.x برای خروجی .mlmodel استفاده می‌کنند.

کتابخانه‌ها و پادها

کتابخانه‌های منتشرشده قبل از 2021 می‌توانند شامل مدل‌های .mlmodel باشند.

مشکلات رایج mlmodel

کار با فرمت منسوخ .mlmodel چند مشکل رایج دارد.

هشدار Xcode درباره منسوخشدگی

در Xcode 13+ هشداری نمایش داده می‌شود: «'mlmodel' format is deprecated. Use 'mlpackage' instead.»

خطای «Model file is not valid»

فایل .mlmodel قدیمی ممکن است در iOS 16+ به دلیل تغییرات protobuf باز نشود.

مشکلات لایه‌های سفارشی

مدل‌های .mlmodel با custom layers قابل تبدیل مستقیم نیستند.

سوالات متداول

mlmodel چیست؟

mlmodel — یک فرمت فایل دودویی منسوخ برای مدل‌های Core ML است.

تفاوت mlmodel و mlpackage چیست؟

mlmodel — فایل دودویی تکی. mlpackage — پوشه با metadata JSON.

چگونه فایل mlmodel را باز کنیم؟

از طریق Xcode، coremltools (Python) یا Netron.

آیا تبدیل mlmodel به mlpackage ضروری است؟

توصیه می‌شود. Xcode خودکار تبدیل می‌کند، اما ویژگی‌های جدید Core ML برای .mlmodel در دسترس نیست.

آیا mlmodel در iOS 18 پشتیبانی می‌شود؟

iOS 18+ .mlmodel را تنها در حالت سازگاری به عقب پشتیبانی می‌کند.

خلاصه

  • mlmodel — فرمت دودویی منسوخ (protobuf) برای مدل‌های Core ML.
  • شامل سه بخش: modelDescription، modelParameters، preprocessing.
  • .mlpackage — فرمت جدید با metadata JSON قابل خوانش.
  • تبدیل: Xcode (خودکار) یا coremltools (Python).
  • iOS 18+ .mlmodel را تنها از طریق Xcode پشتیبانی می‌کند.
  • مشکلات: هشدار منسوخشدگی، خطاهای protobuf، custom layers.
  • Apple مهاجرت تمام .mlmodel به .mlpackage را توصیه می‌کند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید