Core ML Apple’ın makine öğrenimi çerçevesidir ve önceden eğitilmiş ML modellerini doğrudan iOS, iPadOS, macOS, watchOS ve tvOS uygulamalarına entegre etmenizi sağlar. Çerçeve, sinir ağlarını, karar ağaçlarını, doğrusal regresyonları ve topluluk yöntemlerini ve ayrıca TensorFlow, PyTorch, Keras ve ONNX’ten Apple’ın kendi formatına model dönüştürmeyi destekler. Apple Machine Learning Research (2025)’e göre Core ML, çıkarımı tamamen cihaz üzerinde gerçekleştirir, veri gizliliğini sağlar ve çoğu model için 10 milisaniyenin altında gecikme süresi sunar.
Ana Noktalar
Core ML, WWDC 2017’de tanıtılan Apple makine öğrenimi ekosisteminin temel bir bileşenidir. Core ML’den önce iOS geliştiricileri, cihaz üzerinde ML modellerini çalıştırmak için üçüncü taraf kütüphaneleri (TensorFlow Mobile, Caffe2) veya özel çözümleri kullanıyordu. Core ML, klasik regresyonlardan derin sinir ağlarına kadar tüm model türleri için tek bir birleşik arayüz sağladı ve belirli cihaz için düşük seviyeli optimizasyonu üstlendi.
Core ML’nin ilk sürümü (2017) yalnızca sabit giriş boyutlarına sahip statik modelleri destekliyordu. Core ML 2 (2018), toplu tahmin ve anlık model güncellemeleri desteği ekledi. Core ML 3 (2019), cihaz üzerinde eğitim ve düzinelerce yeni sinir ağı katmanı desteği getirdi. Core ML 4 (2021), çok çıkışlı modeller ve gelişmiş görüntü işleme desteği ekledi. Core ML 5 (2024), dinamik sinir ağları ve yeni ML katmanları kullanarak cihaz üzerinde denetimli öğrenme desteği ekledi.
Makine öğrenimini cihaz üzerinde çalıştırmanın üç temel avantajı vardır: gizlilik — veriler cihazdan asla ayrılmaz (GDPR ve HIPAA gereksinimlerini karşılar), hız — çıkarım ağ gecikmesi olmadan milisaniyeler içinde tamamlanır, çevrimdışı kullanılabilirlik — model internet bağlantısı olmadan çalışır. Apple Gizlilik Raporu’na (2025) göre, Apple platformlarındaki ML çıkarımlarının %90’ından fazlası Core ML sayesinde cihaz üzerinde gerçekleştirilir.
Core ML mimarisi çok katmanlı bir prensip üzerine kurulmuştur: en üst seviyede — geliştirici API’si (MLModel, MLFeatureProvider, MLPredictionOptions), orta seviyede — .mlpackage formatında model, alt seviyede — bilgi işlem arka uçları: Apple Neural Engine (ANE), GPU (Metal Shaders) ve CPU (BNNS, Accelerate framework). Core ML, modele ve cihaz donanımına bağlı olarak en iyi arka ucu otomatik olarak seçer.
| Arka Uç | Cihazlar | Performans |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | Maksimum (TOPS) |
| GPU (Metal) | Tüm Apple cihazları | Yüksek (paralel hesaplama) |
| CPU (BNNS) | Tüm Apple cihazları | Temel (uyumluluk) |
Neural Engine (ANE), Apple A12+ ve M1+ çiplerine yerleşik özel bir nöral işlemcidir. ANE, A17 Pro’da 15.8 TOPS ve M4’te 38 TOPS’a varan performansla evrişimli sinir ağı (CNN) işlemleri ve matris çarpanları için optimize edilmiştir. Core ML, modelin ANE’de çalışıp çalışamayacağını otomatik olarak belirler ve çalışabiliyorsa oraya yükler. Model, ANE tarafından desteklenmeyen işlemler içeriyorsa Core ML, hesaplamayı GPU ve CPU arasında dağıtır.
GPU hesaplamaları için Core ML, Metal Performance Shaders Graph’ı (MPSGraph) kullanır. MPSGraph, GPU üzerinde hesaplama grafikleri oluşturmak ve yürütmek için bir çerçevedir. MPSGraph, Core ML’den sinir ağı grafiğini alır ve belirli GPU mimarisi (7 çekirdekli A17 GPU veya 40 çekirdekli M4 Ultra GPU) için optimize edilmiş Metal Shaders’a derler. MPSGraph’ın otomatik optimizasyonları arasında katman birleştirme, gereksiz işlemleri kaldırma ve optimum veri formatı seçimi bulunur.
Core ML, üç kategoriye ayrılan tüm ana makine öğrenimi model türlerini destekler: sinir ağları (evrişimli CNN, yinelenen RNN/LSTM, dönüştürücüler), topluluk modelleri (Rastgele Orman, Gradient Boosting, XGBoost, Karar Ağaçları) ve regresyon modelleri (doğrusal regresyon, SVM, CRF). Her model türünün kendi MLModelType alt protokolü vardır ve Core ML uygun arka ucu ve yürütme formatını otomatik olarak seçer.
Core ML, 150’den fazla sinir ağı katmanı türünü destekler: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), Metal’e özgü katmanlar. Desteklenmeyen katmanlar için Core ML, özel katman mekanizması sağlar — Metal Shading Language veya Swift’te katman uygulaması yazma yeteneği.
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)
2021’den önce Core ML, .mlmodel formatını kullanıyordu — tüm model ağırlıklarını ve meta verilerini içeren ikili bir dosya. Xcode 13 ve Core ML 4’ten başlayarak Apple, yeni .mlpackage formatını tanıttı — modeli, meta verileri, giriş/çıkış açıklamalarını ve JSON formatında ön/son işleme dosyalarını içeren dizin tabanlı bir paket yapısı. mlpackage, git sürümlemeyi destekleyerek ekip geliştirmeyi basitleştirir. .mlmodel’den .mlpackage’ye dönüştürme, Xcode Model Compiler yardımcı programı veya coremltools Python betiği ile yapılır.
Dönüştürme, Python’daki coremltools kütüphanesi kullanılarak gerçekleştirilir. coremltools, TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, izlenmiş/betiklenmiş modeller), Keras (H5), ONNX ve Create ML ile oluşturulan modellerin içe aktarımını destekler. Standart dönüştürme hattı üç adımdan oluşur: modeli orijinal formatında yükleme, MIL’e (Model Intermediate Language) — Core ML’nin iç gösterimi — dönüştürme ve .mlpackage’ye dışa aktarma.
import coremltools as ct
model = ct.converters.pytorch.convert(
source = "model.pt",
inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")
Dönüştürmeden sonra, orijinal model ile dönüştürülmüş Core ML modelinin aynı veriler üzerindeki tahminlerini karşılaştırarak model doğruluğunu doğrulamanız gerekir. Kabul edilebilir sapma Float32 için 1e-3 (%0,1) ve Float16/Int8 için 1e-2 (%1) değerinden fazla değildir. coremltools, otomatik karşılaştırma için ct.utils.compare_models() yardımcı programını sağlar. Sapma normu aşarsa, desteklenmeyen işlemlerle ilgili bir sorun olabilir — bunların özel katmanlarla değiştirilmesi veya modelin basitleştirilmesi gerekir.
Optimizasyon, önemli bir doğruluk kaybı olmadan model boyutunu küçültme ve çıkarım hızını artırma sürecidir. Apple, coremltools ve Xcode’da yerleşik birkaç optimizasyon aracı sağlar: niceleme (ağırlık hassasiyetini azaltma), budama (önemsiz nöronları kaldırma), gereksiz katmanları kaldırma ve hesaplama grafiğini azaltmak için katman birleştirme.
Niceme, model boyutunu Float32’ye kıyasla yaklaşık 2 kat (Float16) veya 4 kat (Int8) azaltır. Core ML üç niceleme modunu destekler: bir kalibrasyon veri kümesiyle eğitim sonrası niceleme (PTQ), coremltools aracılığıyla dönüştürme sırasında ve niceleme farkında eğitim (QAT). Çoğu bilgisayarlı görme modeli için PTQ ile Float16’ya dönüştürme, çıkarım hızını ikiye katlarken %0,5’ten az doğruluk kaybına neden olur.
Xcode, Core ML Model Profiler aracını sağlar ve simülatörde veya gerçek bir cihazda çeşitli cihazlardaki model performansını ölçmenize olanak tanır. Profil oluşturucu, her katmanın yürütme süresini, arka uç yükünü (ANE/GPU/CPU), tepe bellek kullanımını ve model darboğazlarını gösterir. Apple Performans Optimizasyon Kılavuzu’na göre, modellerin %80’inden fazlası, değiştirme veya birleştirme yoluyla optimize edilebilen, diğerlerinden önemli ölçüde daha yavaş çalışan en az bir katmana (katman anormalliği) sahiptir.
Swift kullanarak bir iOS uygulamasına eğitilmiş bir Core ML modelinin entegrasyonuna bakalım. .mlpackage dosyasını Xcode projesine ekledikten sonra (sürükleyerek veya Swift Package Manager aracılığıyla), Xcode otomatik olarak tür belirtilmiş girdi ve çıktılara sahip bir Swift model sınıfı oluşturur. Geliştiricinin giriş verilerini manuel olarak ayrıştırması gerekmez — oluşturulan sınıf, model meta verilerine bağlı olarak UIImage, MLMultiArray, String veya diğer türleri kabul eder.
import CoreML
import Vision
guard let model = try? VNCoreMLModel(
for: MyImageClassifier().model
) else { return }
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
if let topResult = results.first {
print("Class: \(topResult.identifier)")
print("Confidence: \(topResult.confidence)")
}
}
let handler = VNImageRequestHandler(
cgImage: image.cgImage!,
options: [:]
)
try handler.perform([request])
Core ML’yi entegre ederken hata yönetimini uygulamanız gerekir: model, cihaz uyumsuzluğu (çok eski iOS sürümü), yetersiz bellek veya model dosyası bozulması nedeniyle yüklenemeyebilir. Yedekleme mantığı uygulanması önerilir: model nicelenmiş Int8 formatında yüklenemezse Float16 sürümünü yükleyin, o da başarısız olursa — Float32’yi yükleyin. Apple Crash Analytics’e göre, ML uygulaması çökmelerinin %5’inden fazlası yanlış model yüklemesinden kaynaklanır.
Core ML ve Create ML, Apple ML ekosisteminin iki tamamlayıcı aracıdır. Core ML, cihaz üzerinde model yürütmeyi (çıkarım) yönetirken Create ML, model eğitimini yönetir. Create ML’de oluşturulan modeller, uygulamalara daha sonra entegrasyon için özel olarak Core ML formatına (.mlpackage) aktarılır. Web geliştirme terimleriyle ifade etmek gerekirse Core ML tarayıcı (yürütme), Create ML ise kod yazmak için IDE’dir (eğitim).
| Parametre | Core ML | Create ML |
|---|---|---|
| Amaç | Model yürütme (çıkarım) | Model eğitimi |
| Platform | iOS, iPadOS, macOS, watchOS, tvOS | macOS (yalnızca) |
| Format | .mlpackage (tüketir) | .mlpackage (oluşturur) |
| Kod | Swift / Objective-C API | Xcode arayüzü veya Swift API |
| Kullanıcı | Uygulama geliştiricisi | Geliştirici / Veri bilimci |
Sıkça Sorulan Sorular
Core ML, iOS, iPadOS, macOS, watchOS ve tvOS cihazlarında önceden eğitilmiş ML modellerini çalıştırmak için Apple’ın makine öğrenimi çerçevesidir. Sinir ağlarını, karar ağaçlarını ve regresyonları destekler ve otomatik olarak en uygun bilgi işlem arka ucunu (Neural Engine, GPU veya CPU) seçer.
TensorFlow, sunucularda ve mobil cihazlarda modelleri eğitmek ve çalıştırmak için evrensel bir çerçevedir. Core ML, donanıma özgü optimizasyon (ANE, GPU, Metal) yoluyla maksimum performansla yalnızca Apple cihazlarında modelleri çalıştırmak (eğitmek değil) için özel bir motordu. TensorFlow Mobile artık iOS’ta desteklenmemektedir — Apple, platformlarındaki tüm ML görevleri için Core ML’yi önermektedir.
Dönüştürme, Python’daki coremltools kütüphanesi kullanılarak yapılır: PyTorch modelini TorchScript’e (torch.jit.trace) aktarın, ardından .mlpackage oluşturmak için ct.converters.pytorch.convert() işlevini kullanın. coremltools, PyTorch katmanlarını desteklenen Core ML katmanlarına otomatik olarak eşeler ve ANE için grafiği optimize eder.
Core ML, iOS 11 ve sonraki sürümlere sahip tüm iPhone’larda çalışır. Ancak performans donanıma bağlıdır: iPhone 5s/6 — yalnızca CPU (yavaş çıkarım), iPhone 8/X — GPU (Metal), iPhone Xs ve sonrası — Neural Engine (A17 Pro’da 15.8 TOPS’a kadar maksimum performans). En iyi performans için minimum iOS sürümünün 12+ olarak ayarlanması önerilir.
Modern format .mlpackage’dir (modeli, meta verileri ve giriş/çıkış açıklamalarını içeren bir dizin). Eski format .mlmodel’dir (tek bir ikili dosya). Xcode, derleme sırasında .mlmodel’i otomatik olarak .mlpackage’ye dönüştürür, ancak yeni projeler için doğrudan .mlpackage kullanılması önerilir.
Özet
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.
Ayrıca okuyun