Core ML Model Conversion: bu nima, bosqichlar va konvertatsiya usullari

Muallif: IT Sectr Nashr etilgan: 2026-07-17 O'qish vaqti: 6 daq

Core ML Model Conversion — bu o‘qitilgan mashina o‘rganish modellarining mashhur freymvorklardan Apple qurilmalarida bajarish uchun optimallashtirilgan Core ML (.mlmodel) formatiga transformatsiya qilish jarayonidir. Konvertatsiya zarur, chunki PyTorch, TensorFlow va boshqa freymvorklar Core ML Runtime bilan mos kelmaydigan o‘z formatlaridan foydalanadilar. coremltools documentation, 2025 ma‘lumotlariga ko‘ra, kutubxona PyTorch, TensorFlow 1.x va 2.x, Keras, ONNX, scikit-learn va libsvm dan konvertatsiyani qo‘llab-quvvatlaydi. coremltools avtomatik ravishda qo‘llab-quvvatlanmaydigan operatsiyalarni ekvivalentlari bilan almashtiradi va modelning raqamli aniqligini saqlaydi.

Asosiy fikrlar

  • Core ML Model Conversion — ML modellarining Apple qurilmalarida bajarish uchun .mlmodel formatiga transformatsiyasi.
  • Asosiy vosita — coremltools, Apple-dan ochiq manbali Python kutubxonasi.
  • PyTorch, TensorFlow, Keras, ONNX va scikit-learn qo‘llab-quvvatlanadi.
  • Jarayon graf tracing, operatsiyalarni almashtirish va aniqlikni tekshirishni o‘z ichiga oladi.
  • Konvertatsiyadan so‘ng modelni tezlashtirish uchun FP16 yoki INT8 bilan kvantlash mumkin.

Core ML Model Conversion nima

Core ML Model Conversion — bu o‘qitilgan mashina o‘rganish modelini original freymvork formatidan Apple qurilmalarida Core ML Runtime uchun tushunarli bo‘lgan .mlmodel formatiga aylantirish jarayonidir. Konvertatsiyasiz, PyTorch yoki TensorFlow da o‘qitilgan model iOS yoki macOS da to‘g‘ridan-to‘g‘ri yuklanishi va bajarilishi mumkin emas.

Konvertatsiya jarayoni hisoblash grafigini tarjima qilishni o‘z ichiga oladi: original freymvorkning har bir operatori (Conv2D, BatchNorm, ReLU) Core ML ning mos operatoriga xaritalanadi. To‘g‘ridan-to‘g‘ri o‘rnini bosuvchi bo‘lmasa, coremltools murakkab operatsiyalar yoki maxsus qatlamlardan foydalanadi. Apple ML Research ma‘lumotlariga ko‘ra, kutubxona turli freymvorklardan 200 dan ortiq operatorlarni qamrab oladi.

Konvertatsiyadan so‘ng model .mlmodel paket formatida saqlanadi, u grafning protobuf tavsifini, ikkilik shakldagi og‘irliklarni va metama‘lumotlarni o‘z ichiga oladi. Bu fayl keyinchalik maqsadli qurilmada bajarish uchun mlmodelc ga kompilyatsiya qilinadi.

Qo‘llab-quvvatlanadigan freymvorklar va formatlar

coremltools 7.x versiyasi olti manbadan konvertatsiyani qo‘llab-quvvatlaydi. PyTorch — torch.jit.trace yoki torch.export orqali, TensorFlow 2.x — SavedModel va Keras H5 orqali, TensorFlow 1.x — frozen graph .pb orqali. ONNX uchun oraliq tasvirdan foydalaniladi, keyin Core ML ga tarjima qilinadi.

Freymvork moslik matritsasi

FreymvorkKirish formaticoremltools API
PyTorchTorchScript, torch.exportCTConverter / convert()
TensorFlow 2.xSavedModel, Keras H5convert()
TensorFlow 1.xFrozen .pbconvert()
ONNX.onnxonnx_to_coreml()
scikit-learn.pkl / Pipelineconverters.sklearn.convert()
Keras.h5 / .kerasconvert()

Konvertatsiya vositalari: coremltools

coremltools — bu Apple ning rasmiy ochiq manbali Python kutubxonasi bo‘lib, pip install coremltools orqali o‘rnatiladi. Kutubxona barcha qo‘llab-quvvatlanadigan freymvorklardan konvertatsiya uchun yagona API, shuningdek, keyingi ishlov berish vositalarini taqdim etadi: kvantlash, aniqlikni tekshirish va graf vizualizatsiyasi.

PyTorch dan modelni o‘rnatish va asosiy konvertatsiya:

python
import coremltools as ct
import torch
import torchvision

model = torchvision.models.resnet18(pretrained=True)
model.eval()

example_input = torch.rand(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)

mlmodel = ct.convert(
    traced_model,
    source="pytorch",
    inputs=[ct.ImageType(shape=example_input.shape)]
)
mlmodel.save("ResNet18.mlmodel")

TensorFlow dan konvertatsiya qilish uchun manba sifatida SavedModel dan foydalaning. coremltools signature_def asosida kirish va chiqish tensorlarini avtomatik aniqlaydi:

python
import coremltools as ct

mlmodel = ct.convert(
    "saved_model_dir",
    source="tensorflow",
    @minimum_deployment_target=ct.target.iOS16
)
mlmodel.save("MyTFModel.mlmodel")

Model konvertatsiyasi bosqichlari

Konvertatsiya jarayoni to‘rt bosqichdan iborat. Birinchi bosqichda coremltools original modelni yuklaydi va tracing yoki graf skanerlashni amalga oshiradi. PyTorch uchun namunaviy kirish ma‘lumotlarini model orqali o‘tkazadigan va operatsiyalar ketma-ketligini yozadigan torch.jit.trace ishlatiladi.

Ikkinchi bosqichda operator xaritalash (operator mapping) amalga oshiriladi. Original grafdagi har bir operator Core ML operatori bilan moslashtiriladi. To‘g‘ridan-to‘g‘ri o‘rnini bosuvchi bo‘lmasa, coremltools operatorni qo‘llab-quvvatlanadiganlar ketma-ketligiga bo‘ladi. coremltools hujjatlariga ko‘ra, odatiy arxitekturalar uchun PyTorch operatorlari qamrovi 95% dan oshadi.

Uchinchi bosqich — graf optimallashtirish. coremltools operatsiyalarni birlashtirish (mas., conv + batch norm), keraksiz o‘zgartirishlarni olib tashlash va samaradorlikni oshirish uchun operatorlarni qayta tartiblashni amalga oshiradi. To‘rtinchi bosqich — og‘irliklar va metama‘lumotlarni saqlash bilan .mlmodel formatiga serializatsiya.

Oddiy muammolar va ularning yechimlari

Konvertatsiyadagi eng keng tarqalgan muammo qo‘llab-quvvatlanmaydigan operatsiyalardir. Agar modelda Core ML da mavjud bo‘lmagan operator bo‘lsa, coremltools operatsiya nomi bilan xato haqida xabar beradi. Yechim — operatorni qo‘llab-quvvatlanadiganlarning ekvivalent kombinatsiyasi bilan almashtiring yoki custom layer API orqali maxsus qatlamni amalga oshiring.

Ikkinchi muammo — o‘lcham nomuvofiqligi. PyTorch NCHW formatidan, Core ML esa standart sifatida NHWC dan foydalanadi. coremltools avtomatik transpozitsiyani kiritadi, lekin ba‘zan o‘qlarning tartibi noto‘g‘ri aniqlanadi. Konvertatsiya jurnallarida kirish va chiqish o‘lchamlarini tekshiring va kerak bo‘lsa, to‘g‘ri nomlar bilan input_features ni belgilang.

Uchinchi muammo — kvantlashdan so‘ng aniqlikni yo‘qotish. FP16 yoki INT8 palitrasi bilan konvertatsiya qilishda model aniqligi kamayishi mumkin. coremltools bir xil kirish ma‘lumotlarida original va konvertatsiya qilingan model chiqishlarini solishtirish uchun ct.models.CompiledModel yordamchi dasturini taqdim etadi. Farq 1% dan oshsa, kalibrlashsiz FP16 palitrasi bilan kvantlashdan foydalaning yoki kvantlashdan voz keching.

PyTorch va TensorFlow dan konvertatsiya misollari

Kirish ma‘lumotlari turini va minimal iOS versiyasini ko‘rsatgan holda PyTorch dan MobileNetV3 modelini konvertatsiya qilish misoli. Rasmlarni avtomatik normallashtirish uchun ct.ImageType dan foydalaning:

python
import coremltools as ct
import torchvision

model = torchvision.models.mobilenet_v3_small(
    pretrained=True
)
model.eval()
example = torch.rand(1, 3, 224, 224)
traced = torch.jit.trace(model, example)

mlmodel = ct.convert(
    traced,
    source="pytorch",
    inputs=[ct.ImageType(
        shape=example.shape,
        scale=1.0/255.0,
        bias=[0, 0, 0]
    )],
    @minimum_deployment_target=ct.target.iOS16
)

# Keyinchalik Xcode da kompilyatsiya qilish uchun .mlmodel ga saqlang
mlmodel.save("MobileNetV3.mlmodel")

FP16 kvantlash bilan TensorFlow Keras dan konvertatsiya misoli. Apple A13 va undan yangi qurilmalarda FP16 qo‘llab-quvvatlashni faollashtirish uchun minimum_deployment_target ni belgilang:

python
import coremltools as ct
from tensorflow import keras

keras_model = keras.applications.EfficientNetB0(
    weights="imagenet"
)

mlmodel = ct.convert(
    keras_model,
    source="tensorflow",
    @minimum_deployment_target=ct.target.iOS17
)

# Og‘irliklarni hajmni 2 marta kamaytirish uchun FP16 ga kvantlang
mlmodel_fp16 = ct.models.neural_network.quantization_utils.quantize_weights(
    mlmodel, 16
)
mlmodel_fp16.save("EfficientNetB0_fp16.mlmodel")

Tez-tez beriladigan savollar

Manba kodiga kirishsiz modelni konvertatsiya qilish mumkinmi?

Ha, agar model TorchScript, SavedModel yoki ONNX formatida saqlangan bo‘lsa. coremltools bu formatlarni manba kodini talab qilmasdan yuklaydi va hisoblash grafigi bo‘yicha konvertatsiyani amalga oshiradi.

Core ML da qaysi operatsiyalar qo‘llab-quvvatlanmasligini qanday bilish mumkin?

coremltools konvertatsiya vaqtida jurnalda qo‘llab-quvvatlanmaydigan operatsiyalar ro‘yxatini ko‘rsatadi. Core ML ning mavjud operatorlarining to‘liq ro‘yxatini olish uchun ct.utils.get_coreml_operations() dan foydalaning.

coremltools da kvantlash palitrasi nima?

Kvantlash palitrasi — bu model og‘irliklarini siqish uchun parametrlar to‘plami: fp16, int8 yoki palettization. coremltools 8-bit, 16-bit palitra va turli bit chuqurliklari bilan LUT-kvantlashni qo‘llab-quvvatlaydi.

Konvertatsiyadan so‘ng kompilyatsiya kerakmi?

Ha, .mlmodel qurilmada bajarilishidan oldin mlmodelc ga kompilyatsiya qilinishi kerak. Kompilyatsiya Xcode da qurish vaqtida yoki qurilmada MLModel.compile(at:) orqali avtomatik ravishda amalga oshiriladi.

Konvertatsiya qilingan modelning aniqligini qanday tekshirish mumkin?

Original va konvertatsiya qilingan modelning chiqishlarini solishtirish uchun ct.models.CompiledModel dan foydalaning. Bir xil kirish ma‘lumotlarini bering va natijalarni MSE yoki cosine similarity metriği bilan solishtiring.

Xulosa

  • Core ML Model Conversion — ML modellarining Apple qurilmalarida bajarish uchun .mlmodel formatiga transformatsiya jarayoni.
  • Asosiy vosita — coremltools, PyTorch, TensorFlow, Keras, ONNX va scikit-learn ni qo‘llab-quvvatlaydi.
  • Konvertatsiya graf tracing, operator xaritalash, optimallashtirish va serializatsiyani o‘z ichiga oladi.
  • Qo‘llab-quvvatlanmaydigan operatsiyalar ekvivalent kombinatsiyalar bilan almashtiriladi yoki custom layer API orqali amalga oshiriladi.
  • Konvertatsiyadan so‘ng o‘lchamni kamaytirish va xulosa chiqarishni tezlashtirish uchun FP16 va INT8 kvantlash mavjud.
  • Joylashtirishdan oldin modelning aniqligini ct.models.CompiledModel orqali tekshiring.
  • Ilovada modellarni avtomatik yangilash uchun konvertatsiya pipeline ini CI/CD ning bir qismi sifatida rejalashtiring.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing