Core ML Model Dönüşümü: nedir, aşamaları ve dönüştürme yöntemleri

Yazar: IT Sectr Yayınlanma: 2026-07-17 Okuma süresi: 6 dk

Core ML Model Conversion, eğitilmiş makine öğrenimi modellerinin popüler framework'lerden Core ML (.mlmodel) formatına dönüştürülmesi sürecidir ve Apple cihazlarında çalıştırılmak üzere optimize edilmiştir. Dönüşüm gereklidir çünkü PyTorch, TensorFlow ve diğer framework'ler Core ML Runtime ile uyumsuz olan kendi formatlarını kullanır. coremltools dokümantasyonu, 2025'e göre, kütüphane PyTorch, TensorFlow 1.x ve 2.x, Keras, ONNX, scikit-learn ve libsvm'den dönüşümü destekler. coremltools desteklenmeyen işlemleri otomatik olarak eşdeğerleriyle değiştirir ve modelin sayısal doğruluğunu korur.

Önemli Noktalar

  • Core ML Model Conversion — Apple cihazlarında çalıştırmak için ML modellerinin .mlmodel formatına dönüştürülmesi.
  • Ana araç, Apple'ın açık kaynaklı Python kütüphanesi olan coremltools'dur.
  • PyTorch, TensorFlow, Keras, ONNX ve scikit-learn'i destekler.
  • Süreç, grafik izleme, işlem değiştirme ve doğruluk doğrulamasını içerir.
  • Dönüşümden sonra model, hızlandırma için FP16 veya INT8'e nicehlenebilir.

Core ML Model Conversion Nedir

Core ML Model Conversion, eğitilmiş bir makine öğrenimi modelini kaynak framework formatından, Apple cihazlarındaki Core ML Runtime'ın anladığı .mlmodel formatına dönüştürme sürecidir. Dönüşüm olmadan, PyTorch veya TensorFlow'da eğitilmiş bir model doğrudan iOS veya macOS'te yüklenip çalıştırılamaz.

Dönüşüm süreci hesaplama grafiği çevirisini içerir: kaynak framework'teki her operatör (Conv2D, BatchNorm, ReLU) ilgili Core ML operatörüyle eşleştirilir. Doğrudan bir alternatif yoksa, coremltools bileşik işlemler veya özel katmanlar kullanır. Apple ML Research'e göre, kütüphane çeşitli framework'lerden 200'den fazla operatörü kapsar.

Dönüşümden sonra model, protobuf grafik tanımı, ikili biçimde ağırlıklar ve meta veriler içeren .mlmodel paket formatında kaydedilir. Bu dosya daha sonra hedef cihazda çalıştırılmak üzere mlmodelc'ye derlenir.

Desteklenen Framework'ler ve Formatlar

coremltools sürüm 7.x, altı kaynaktan dönüşümü destekler. PyTorch — torch.jit.trace veya torch.export aracılığıyla, TensorFlow 2.x — SavedModel ve Keras H5 aracılığıyla, TensorFlow 1.x — dondurulmuş grafik .pb aracılığıyla. ONNX için bir ara temsil kullanılır ve daha sonra Core ML'ye çevrilir.

Framework Uyumluluk Matrisi

FrameworkGiriş Formatıcoremltools 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()

Dönüştürme Araçları: coremltools

coremltools, Apple'ın resmi açık kaynaklı Python kütüphanesidir ve pip install coremltools ile kullanılabilir. Kütüphane, desteklenen tüm framework'lerden dönüşüm için birleşik bir API ve ayrıca son işlem araçları sağlar: niceleme, doğruluk kontrolü ve grafik görselleştirme.

PyTorch'tan kurulum ve temel model dönüşümü:

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 dönüşüm için kaynak olarak SavedModel kullanın. coremltools, signature_def'e göre giriş ve çıkış tensörlerini otomatik olarak belirler:

python
import coremltools as ct

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

Model Dönüşüm Aşamaları

Dönüşüm süreci dört aşamadan oluşur. İlk aşamada, coremltools kaynak modeli yükler ve izleme (tracing) veya grafik taraması yapar. PyTorch için torch.jit.trace kullanılır, bu da modelden bir örnek giriş geçirir ve işlem sırasını kaydeder.

İkinci aşamada, operatör eşlemesi gerçekleştirilir. Kaynak graftaki her operatör bir Core ML operatörüyle eşleştirilir. Doğrudan bir alternatif yoksa, coremltools operatörü desteklenen operatörler dizisine böler. coremltools dokümantasyonuna göre, tipik mimariler için PyTorch operatör kapsamı %95'i aşar.

Üçüncü aşama grafik optimizasyonudur. coremltools, işlem birleştirme (örn. conv + batch norm), gereksiz dönüşümleri kaldırma ve verimliliği artırmak için operatörleri yeniden sıralama yapar. Dördüncü aşama, ağırlıkları ve meta verileri koruyarak .mlmodel formatında serileştirmedir.

Yaygın Sorunlar ve Çözümleri

Dönüşümde en sık karşılaşılan sorun desteklenmeyen işlemlerdir. Model, Core ML'de bulunmayan bir operatör içeriyorsa, coremltools işlem adıyla birlikte bir hata bildirir. Çözüm, operatörü desteklenen operatörlerin eşdeğer bir kombinasyonuyla değiştirmek veya özel katman API'si aracılığıyla özel bir katman uygulamaktır.

İkinci sorun boyut uyuşmazlığıdır. PyTorch NCHW formatını kullanırken, Core ML varsayılan olarak NHWC kullanır. coremltools otomatik olarak transpozisyon ekler, ancak bazen eksen sırası yanlış belirlenir. Dönüşüm günlüklerinde giriş ve çıkış boyutlarını kontrol edin ve gerekirse doğru adlarla input_features belirtin.

Üçüncü sorun niceleme sonrası doğruluk kaybıdır. FP16 veya INT8 paletiyle dönüştürürken model doğruluğu azalabilir. coremltools, aynı giriş verilerinde kaynak ve dönüştürülmüş modelin çıktılarını karşılaştırmak için ct.models.CompiledModel aracını sağlar. Fark %1'i aşarsa, kalibrasyon olmadan FP16 paletiyle niceleme kullanın veya nicelemeyi tamamen atlayın.

PyTorch ve TensorFlow'dan Dönüştürme Örnekleri

Giriş türü belirtimi ve minimum iOS sürümüyle PyTorch'tan MobileNetV3 modelini dönüştürme örneği. Otomatik görüntü normalizasyonu için ct.ImageType kullanın:

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
)

# Daha sonra Xcode'da derlemek için .mlmodel olarak kaydet
mlmodel.save("MobileNetV3.mlmodel")

FP16 niceleme ile TensorFlow Keras'tan dönüştürme örneği. Apple A13 ve daha yeni cihazlarda FP16 desteğini etkinleştirmek için minimum_deployment_target belirtin:

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
)

# 2 kat boyut küçültme için ağırlıkları FP16’ya nicele
mlmodel_fp16 = ct.models.neural_network.quantization_utils.quantize_weights(
    mlmodel, 16
)
mlmodel_fp16.save("EfficientNetB0_fp16.mlmodel")

Sıkça Sorulan Sorular

Kaynak koduna erişmeden bir modeli dönüştürebilir miyim?

Evet, model TorchScript, SavedModel veya ONNX formatında kaydedilmişse. coremltools bu formatları kaynak koda ihtiyaç duymadan yükler ve hesaplama grafiğine göre dönüşümü gerçekleştirir.

Core ML'de hangi işlemlerin desteklenmediğini nasıl öğrenebilirim?

coremltools, dönüşüm sırasında günlükte desteklenmeyen işlemlerin listesini görüntüler. Kullanılabilir Core ML operatörlerinin tam listesini almak için ct.utils.get_coreml_operations() kullanın.

coremltools'ta niceleme paleti nedir?

Niceleme paleti, model ağırlıklarını sıkıştırmak için bir parametre kümesidir: fp16, int8 veya paletleme. coremltools, 8-bit, 16-bit paleti ve farklı bit derinliklerinde LUT nicelemeyi destekler.

Dönüşümden sonra derleme gerekli mi?

Evet, .mlmodel dosyası cihazda çalıştırılmadan önce mlmodelc'ye derlenmelidir. Derleme, Xcode'da derleme sırasında veya cihazda MLModel.compile(at:) aracılığıyla otomatik olarak gerçekleştirilir.

Dönüştürülen modelin doğruluğunu nasıl kontrol ederim?

Kaynak ve dönüştürülmüş modelin çıktılarını karşılaştırmak için ct.models.CompiledModel kullanın. Aynı giriş verilerini sağlayın ve sonuçları MSE veya kosinüs benzerliği metrikleriyle karşılaştırın.

Özet

  • Core ML Model Conversion, Apple cihazlarında çalıştırmak için ML modellerini .mlmodel formatına dönüştürme sürecidir.
  • Ana araç, PyTorch, TensorFlow, Keras, ONNX ve scikit-learn'i destekleyen coremltools'dur.
  • Dönüşüm, grafik izleme, operatör eşleme, optimizasyon ve serileştirmeyi içerir.
  • Desteklenmeyen işlemler eşdeğer kombinasyonlarla değiştirilir veya özel katman API'si aracılığıyla uygulanır.
  • Dönüşümden sonra, boyut küçültme ve çıkarım hızlandırma için FP16 ve INT8 niceleme mevcuttur.
  • Dağıtımdan önce, ct.models.CompiledModel aracılığıyla model doğruluğunu kontrol edin.
  • Uygulamada otomatik model güncellemeleri için CI/CD'nin bir parçası olarak dönüşüm hattını planlayın.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun