mlmodel — bu nədir, fayl strukturu və mlpackage-ə konvertasiya

Müəllif: IT Sectr Dərc olunub: 2026-07-17 Oxuma vaxtı: 10 dəq

mlmodel — bu Apple-ın Core ML framework-ü üçün maşın öyrənmə model fayl formatıdır, .mlpackage formatı meydana çıxana qədər öyrədilmiş modelləri saxlamaq üçün istifadə edilirdi. .mlmodel faylı protobuf formatında ikili paket olub, model təsviri, neyron şəbəkə çəkiləri, metadata və giriş/çıxış məlumatlarını ehtiva edirdi. Apple Core ML Release Notes (2025) məlumatlarına görə, Xcode 13 və Core ML 4-dən başlayaraq köhnə .mlmodel formatı .mlpackage lehinə köhnəlmiş elan edilib, .mlpackage daha yaxşı versiyalaşdırma və metadatanın oxunaqlılığını təmin edir.

Əsas məqamlarlar

  • mlmodel — öyrədilmiş ML modellərini ikili protobuf formatında saxlamaq üçün köhnəlmiş Core ML fayl formatı.
  • Tərkibində model çəkiləri, metadata, giriş/çıxış məlumatlarının təsviri və ön/son emal konfiqurasiyası var idi.
  • .mlmodel faylı Xcode tərəfindən tətbiq qurularkən avtomatik olaraq .mlpackage-yə çevrilirdi.
  • Xcode 13-dən (2021) başlayaraq Apple daha müasir və versiyalaşdırma üçün əlverişli olan .mlpackage formatını tövsiyə edir.
  • .mlmodel-in .mlpackage-yə çevrilməsi Xcode Model Compiler və ya Python-da coremltools skripti ilə həyata keçirilir.

mlmodel nədir?

mlmodel — bu Apple tərəfindən 2017-ci ildə WWDC 2017-də Core ML framework-ü ilə birlikdə təqdim edilmiş ikili fayl formatıdır. Format Google-ın protobuf (Protocol Buffers) seriyalaşdırma texnologiyasına əsaslanır, bu da kompakt ölçü (Float32-də model çəkiləri) və yaddaşa səmərəli yüklənmə təmin edirdi.

Formatın tarixi

.mlmodel formatı 2017-ci ildən 2021-ci ilə qədər yeganə Core ML formatı idi. Bu müddət ərzində coremltools vasitəsilə TensorFlow, Keras, PyTorch, Caffe, scikit-learn və digər kitabxanalardan milyonlarla model çevrilmişdir.

Əsas xüsusiyyətlər

mlmodel faylı modeli kompakt ikili təsvirdə saxlayır. Ölçü onlarla kilobaytdan (xətti reqressiya) giqabaytlara qədər dəyişir (milyonlarla parametrli neyron şəbəkələr). Format Core ML-nin bütün model növlərini dəstəkləyir: NeuralNetwork, NeuralNetworkClassifier, NeuralNetworkRegressor, TreeEnsemble, GradientBoosting, LinearRegression, SVM, OneHotEncoder, FeatureVectorizer.

Xüsusiyyətmlmodel
FormatIkili (protobuf)
OxunaqlılıqOxunmaz (yalnız coremltools vasitəsilə)
VersiyalaşdırmaYox (tək ikili fayl)
MetadataProtobuf sxemində
Git-ə uyğunYox (binary diff səmərəsizdir)

mlmodel fayl strukturu

.mlmodel faylının daxili strukturu CoreML.framework framework-ündə təsvir edilmiş protobuf sxemi ilə müəyyən edilir. Əsas bölmələr: modelDescription, modelParameters, preprocessing, postprocessing.

modelDescription bölməsi

modelDescription (MLModelDescription) bölməsi modelin adını, müəllifini, versiyasını, təsvirini, lisenziyasını, həmçinin bütün giriş və çıxış parametrlərinin ətraflı təsvirini ehtiva edir: ad, məlumat növü (Float32, Int32, String, Image), ölçü, təsvir formatı (BGR, RGB). Bu bölmə Xcode tərəfindən Swift model sinifini yaratmaq üçün istifadə edilirdi.

modelParameters bölməsi

modelParameters bölməsi öyrədilmiş modelin faktiki çəkiləri və parametrlərini ehtiva edir. Neyron şəbəkələr üçün bu, hər biri növ (convolution, pooling, activation, innerProduct), çəkilər (weights), yerdəyişmə (bias), parametrlər (kernelSize, stride, padding) ehtiva edən NeuralNetworkLayer massividir.

preprocessing bölməsi

preprocessing bölməsi giriş məlumatlarının ön emal addımlarını təsvir edir. Core ML dəstəkləyir: Scaler (orta və standart kənar sapma ilə normallaşdırma), ImagePreprocessing (ölçünün dəyişdirilməsi, kəsmə, rəng kanallarının normallaşdırılması, BGR→RGB), OneHotEncoder, FeatureVectorizer.

mlmodel vs mlpackage: müqayisəli analiz

mlpackage — WWDC 2021-də təqdim edilmiş yeni nəsil Core ML model formatıdır. .mlpackage fayl strukturu olan bir kataloqu (paketi) təmsil edir: JSON faylları (metadata, konfiqurasiya) və çəkilər üçün ayrı ikili fayllar.

Parametrmlmodelmlpackage
NövTək ikili faylKataloq (paket)
MetadataIkili protobufJSON (oxunaqlı)
Git diffFaydasızİşləyir
VersiyalaşdırmaƏl iləAvtomatik
Custom layersYoxDəstəkləyir
StatusKöhnəlmişAktual

mlpackage fayl strukturu

.mlpackage paketi ehtiva edir: ModelCI/, Data/ (SharedWeights.bin), Metadata.json, Model.json, Manifests/. Metadata və konfiqurasiya git-də izlənir, ikili çəkilər Git LFS-dən istifadə edə bilər.

mlmodel-i mlpackage-yə necə çevirmək olar

Çevirmə iki üsulla həyata keçirilir: avtomatik Xcode-da qurma zamanı və ya əl ilə Python-da coremltools vasitəsilə.

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-da avtomatik çevirmə

.mlmodel faylını Xcode layihəsinə əlavə edərkən qurma zamanı Model Compiler işə salınır. Kompilyasiya edilmiş .mlpackage DerivedData kataloquna yerləşdirilir. Xcode .mlpackage istifadə etmək tövsiyəsi ilə xəbərdarlıq göstərir.

Çevirmədən sonra yoxlama

coremltools ct.utils.compare_models() ilə orijinal və çevrilmiş modelin proqnozlarını müqayisə edin. Float32 üçün yol verilən fərq 1e-5-dən çox olmamalıdır.

Geriye uyğunluq və dəstək

.mlmodel üçün geriye uyğunluq bütün aktual iOS və macOS versiyalarında təmin edilir. Xcode 15-dən (2023) başlayaraq yeni model növləri yalnız .mlpackage formatında olacaq.

iOS 18+ və macOS 15+-də dəstək

iOS 18-dən başlayaraq Core ML .mlmodel birbaşa yükləməyi dəstəkləmir. Bütün modellər əvvəlcədən .mlpackage-yə çevrilməlidir.

Dəstəyin bitmə tarixləri

Tam dəstəyin iOS 20-21-də (2026-2027) dayandırılacağı gözlənilir.

mlmodel nə vaxt hələ də aktualdır

.mlmodel hələ də mövcud layihələrdə və bəzi ssenarilərdə rast gəlinir.

Mirasa — köhnə layihələr

2021-ci ildən əvvəl başladılmış layihələrdə Swift Package Manager vasitəsilə onlarla .mlmodel modeli ola bilər. Apple tədrici miqrasiyanı tövsiyə edir.

coremltools ilə CI/CD boru kəmərləri

CI/CD boru kəmərləri coremltools 4.x ilə .mlmodel-ə ixrac edə bilər. 5+ versiyasına yenilənmə ixrac formatını .mlpackage-yə dəyişir.

Kitabxanalar və Pods

2021-ci ildən əvvəl nəşr edilmiş kitabxanalar .mlmodel formatında modellər ehtiva edə bilər. Xcode onları qurma zamanı avtomatik çevirir.

mlmodel ilə tipik problemlər

Köhnəlmiş .mlmodel formatı ilə işlərkən bir neçə tipik problemlə qarşılaşılır.

Xcode deprekasiya xəbərdarlığı

Xcode 13+-da xəbərdarlıq görünür: “‘mlmodel’ format is deprecated. Use ‘mlpackage’ instead.”

“Model file is not valid” xətası

Köhnə coremltools ilə yaradılmış .mlmodel iOS 16+-da protobuf dəyişiklikləri səbəbindən açılmaya bilər.

Fərdi təbəqələrlə bağlı problemlər

Custom layers ehtiva edən .mlmodel modelləri əlavə addımlar olmadan birbaşa çevrilə bilməz.

Tez-tez verilən suallar

mlmodel nədir?

mlmodel — 2017-2021-ci illərdə istifadə edilmiş Core ML modelləri üçün köhnəlmiş ikili fayl formatı, protobuf əsaslı.

mlmodel mlpackage-dən nə ilə fərqlənir?

mlmodel — tək ikili fayl, git-də oxunmaz. mlpackage — JSON metadatası olan kataloq, git-də oxuna bilən və versiyalaşdırmanı dəstəkləyir.

mlmodel faylını necə açmaq olar?

Xcode, coremltools (Python) və ya Netron vizuallaşdırıcısı ilə.

mlmodel-i mlpackage-yə çevirmək lazımdırmı?

Tövsiyə olunur. Xcode avtomatik çevirir, lakin yeni Core ML imkanları .mlmodel üçün mövcud olmayacaq.

mlmodel iOS 18-də dəstəklənirmi?

iOS 18+ .mlmodel-i yalnız geriye uyğunluq rejimində dəstəkləyir, Xcode qurma zamanı çevirir.

Nəticə

  • mlmodel — 2017-2021-ci illərdə istifadə edilmiş köhnəlmiş ikili format (protobuf).
  • Üç bölmə: modelDescription, modelParameters, preprocessing.
  • .mlpackage — JSON metadatası ilə git-də oxuna bilən yeni format.
  • Çevirmə: Xcode (avtomatik) və ya coremltools (Python).
  • iOS 18+ .mlmodel-i ancaq Xcode qurma mərhələsində dəstəkləyir.
  • Əsas problemlər: deprekasiya xəbərdarlığı, protobuf xətaları, custom layers.
  • Apple bütün .mlmodel-lərin növbəti yenilənmədə .mlpackage-yə miqrasiyasını tövsiyə edir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun