mlmodel — ce este, structura fișierului și conversia în mlpackage

Autor: IT Sectr Publicat: 2026-07-17 Timp de citire: 10 min

mlmodel — este formatul de fișier al modelului de învățare automată pentru framework-ul Core ML de la Apple, folosit pentru stocarea modelelor antrenate înainte de apariția formatului .mlpackage. Fișierul .mlmodel era un pachet binar în format protobuf, care conținea descrierea modelului, greutățile rețelei neuronale, metadate și informații despre intrări/ieșiri. Conform Apple Core ML Release Notes (2025), începând cu Xcode 13 și Core ML 4, vechiul format .mlmodel a fost declarat depreciat în favoarea .mlpackage.

Principalele puncte

  • mlmodel — format de fișier Core ML depreciat pentru stocarea modelelor ML antrenate în format binar protobuf.
  • Conținea greutățile modelului, metadate, descrierea datelor de intrare/ieșire și configurarea pre/postprocesării.
  • Fișierul .mlmodel era convertit automat de Xcode în .mlpackage la compilarea aplicației.
  • Începând cu Xcode 13 (2021), Apple recomandă utilizarea formatului .mlpackage ca fiind mai modern.
  • Conversia .mlmodel în .mlpackage se face prin Xcode Model Compiler sau scriptul coremltools în Python.

Ce este mlmodel?

mlmodel — este un format de fișier binar prezentat de Apple în 2017 împreună cu framework-ul Core ML la WWDC 2017. Formatul se bazează pe tehnologia de serializare protobuf (Protocol Buffers) de la Google.

Istoria formatului

Formatul .mlmodel a fost singurul format Core ML din 2017 până în 2021. În acest timp, milioane de modele din TensorFlow, Keras, PyTorch, Caffe, scikit-learn și alte biblioteci au fost convertite prin coremltools.

Caracteristici principale

Fișierul mlmodel stochează modelul într-o reprezentare binară compactă. Dimensiunea variază de la zeci de kiloocteți la gigaocteți. Formatul suportă toate tipurile de modele Core ML: NeuralNetwork, NeuralNetworkClassifier, NeuralNetworkRegressor, TreeEnsemble, GradientBoosting, LinearRegression, SVM și pipeline-uri de pre/postprocesare.

Caracteristicămlmodel
FormatBinar (protobuf)
LizibilitateIlizibil
VersionareNu
MetadateÎn schema protobuf
Git-friendlyNu

Structura fișierului mlmodel

Structura internă a fișierului .mlmodel este definită de schema protobuf din CoreML.framework. Secțiuni principale: modelDescription, modelParameters, preprocessing, postprocessing.

Secțiunea modelDescription

Secțiunea modelDescription (MLModelDescription) conține numele modelului, autorul, versiunea, descrierea, licența și descrierea detaliată a tuturor parametrilor de intrare/ieșire.

Secțiunea modelParameters

Secțiunea modelParameters conține greutățile și parametrii efectivi ai modelului antrenat. Pentru rețele neuronale, acesta este un array de NeuralNetworkLayer.

Secțiunea preprocessing

Secțiunea preprocessing descrie pașii de preprocesare a datelor de intrare: Scaler, ImagePreprocessing, OneHotEncoder, FeatureVectorizer.

mlmodel vs mlpackage: analiză comparativă

mlpackage — este formatul de nouă generație pentru modelele Core ML, prezentat la WWDC 2021. .mlpackage este un director (pachet) cu structură de fișiere: conținutul modelului este stocat ca fișiere JSON lizibile și fișiere binare separate pentru greutăți.

Parametrumlmodelmlpackage
TipFișier binar unicDirector (pachet)
Metadateprotobuf binarJSON
Git diffInutilFuncționează
VersionareManualăAutomată
Custom layersNuSuportă
StareDepreciatActual

Structura fișierelor mlpackage

Pachetul .mlpackage conține: ModelCI/, Data/ (SharedWeights.bin), Metadata.json, Model.json, Manifests/.

Cum să convertim mlmodel în mlpackage

Conversia .mlmodel în .mlpackage se realizează în două moduri: automat la compilare în Xcode sau manual prin coremltools în 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")

Conversia automată în Xcode

La adăugarea fișierului .mlmodel în proiectul Xcode, sistemul rulează automat Model Compiler la compilare.

Verificarea după conversie

coremltools oferă utilitarul ct.utils.compare_models() pentru compararea predicțiilor. Diferența admisibilă pentru Float32 este de maximum 1e-5.

Compatibilitate inversă și suport

Compatibilitatea inversă .mlmodel este asigurată pe toate versiunile actuale de iOS și macOS.

Suportul în iOS 18+ și macOS 15+

Începând cu iOS 18, Core ML nu mai suportă încărcarea directă a .mlmodel.

Termenele de încetare a suportului

Suportul complet pentru .mlmodel se așteaptă să se încheie în iOS 20-21 (2026-2027).

Când mai este actual mlmodel

.mlmodel încă apare în proiectele existente și unele scenarii.

Proiecte vechi

Proiectele începute înainte de 2021 pot conține zeci de modele .mlmodel.

Pipeline-uri CI/CD cu coremltools

Pipeline-urile CI/CD care folosesc coremltools 4.x exportă implicit în .mlmodel.

Biblioteci și Pod-uri

Bibliotecile terțe publicate înainte de 2021 pot conține modele în format .mlmodel.

Probleme tipice cu mlmodel

Lucrul cu formatul depreciat .mlmodel prezintă câteva probleme tipice.

Avertismentul Xcode privind deprecierea

La adăugarea .mlmodel în Xcode 13+ apare avertismentul: „'mlmodel' format is deprecated. Use 'mlpackage' instead.”

Eroarea „Model file is not valid”

Fișierele .mlmodel create cu versiuni vechi de coremltools pot să nu se deschidă pe iOS 16+.

Probleme cu straturile personalizate

Modelele .mlmodel care conțin custom layers nu pot fi convertite direct.

Întrebări frecvente

Ce este mlmodel?

mlmodel — format de fișier binar depreciat pentru modelele Core ML, bazat pe protobuf.

Cu ce se deosebește mlmodel de mlpackage?

mlmodel — fișier binar unic. mlpackage — pachet cu metadate JSON.

Cum deschidem un fișier mlmodel?

Prin Xcode, coremltools (Python) sau Netron.

Este necesară convertirea mlmodel în mlpackage?

Recomandat. Xcode convertește automat, dar noile funcții Core ML nu sunt disponibile pentru .mlmodel.

Este mlmodel suportat pe iOS 18?

iOS 18+ suportă .mlmodel doar în mod de compatibilitate inversă.

Concluzii

  • mlmodel — format binar depreciat (protobuf) pentru modelele Core ML.
  • Trei secțiuni: modelDescription, modelParameters, preprocessing.
  • .mlpackage — format nou cu metadate JSON lizibile.
  • Conversie: Xcode (automat) sau coremltools (Python).
  • iOS 18+ suportă .mlmodel doar prin conversie automată Xcode.
  • Probleme principale: avertisment depreciere, erori protobuf, custom layers.
  • Apple recomandă migrarea la .mlpackage la următoarea actualizare.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și