Core ML — είναι πλαίσιο μηχανικής μάθησης από Apple, που επιτρέπει ενσωματώσει προεκπαιδευμένων εκπαιδευμένα μοντέλου ML απευθείας σε iOS, iPadOS, macOS, watchOS και tvOS εφαρμογές. Το πλαίσιο υποστηρίζει νευρωνικά δίκτυα, δέντρα αποφάσεων, γραμμικές παλινδρομήσεις και συνόλου μεθόδους, και επίσης μετατροπή μοντέλων από TensorFlow, PyTorch, Keras και ONNX σε ιδιόκτητη μορφή Apple. Σύμφωνα με την Apple Machine Learning Research (2025), το Core ML εκτελεί συμπερασμό πλήρως στη συσκευή, εξασφαλίζοντας εμπιστευτικότητα δεδομένων και καθυστέρηση μικρότερη από 10 χιλιοστά του δευτερολέπτου για τα περισσότερα μοντέλα.
Κυριότερα σημεία
Core ML — είναι βασικό στοιχείο οικοσυστήματος μηχανικής μάθησης Apple, που παρουσιάστηκε σε WWDC 2017. Μέχρι Core ML προγραμματιστές iOS χρησιμοποιούσαν τρίτων βιβλιοθήκης (TensorFlow Mobile, Caffe2) ή προσαρμοσμένες λύσεις για εκτέλεσης ML-μοντέλων σε συσκευή. Core ML παρείχε ενιαία ενοποιημένη διεπαφή για όλες τύπους μοντέλων — από κλασικών παλινδρομήσεων έως βαθιά νευρωνικών δικτύων — και ανέλαβε σε του χαμηλού επιπέδου βελτιστοποίηση για συγκεκριμένο συσκευή.
Η πρώτη έκδοση Core ML (2017) υποστήριζε μόνο στατικά μοντέλα με σταθερό μέγεθος εισόδου. Core ML 2 (2018) πρόσθεσε υποστήριξη batch prediction και ενημερώσεις μοντέλων "σε πτήσει". Core ML 3 (2019) έφερε on-device εκπαίδευση και υποστήριξη δεκάδων νέων επιπέδων νευρωνικών δικτύων. Core ML 4 (2021) εισήγαγε υποστήριξη μοντέλων με πολλαπλές εξόδους και βελτιωμένη επεξεργασία εικόνων. Core ML 5 (2024) πρόσθεσε υποστήριξη δυναμικών νευρωνικών δικτύων και ελεγχόμενης μάθησης στη συσκευή με χρήση νέων επιπέδων ML.
Η εκτέλεση μηχανικής μάθησης στη συσκευή προσφέρει τρία βασικά πλεονεκτήματα: εμπιστευτικότητα — τα δεδομένα δεν εγκαταλείπουν τη συσκευή (ικανοποιεί τις απαιτήσεις GDPR και HIPAA), ταχύτητα — ο συμπερασμός εκτελείται σε χιλιοστά δευτερολέπτου χωρίς καθυστέρηση μετάδοσης μέσω δικτύου, διαθεσιμότητα εκτός σύνδεσης — το μοντέλο λειτουργεί χωρίς σύνδεση στο διαδίκτυο. Σύμφωνα με την Apple Privacy Report (2025), πάνω από 90% των συμπερασμών ML σε πλατφόρμες Apple εκτελούνται στη συσκευή χάρη στο Core ML.
Αρχιτεκτονική του Core ML είναι κατασκευασμένη με πολυεπίπεδη αρχή: στο ανώτερο επίπεδο — API για προγραμματιστή (MLModel, MLFeatureProvider, MLPredictionOptions), στο μεσαίο — μοντέλο σε μορφή .mlpackage, στο κατώτερο — υπολογιστικά υπόβαθρα: Apple Neural Engine (ANE), GPU (Metal Shaders) και CPU (BNNS, Accelerate framework). Core ML αυτόματα επιλέγει καλύτερο υπόβαθρο σε ανάλογα από μοντέλου και εξοπλισμού συσκευής.
| Υπόβαθρο | Συσκευές | Απόδοση |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | Μέγιστη (TOPS) |
| GPU (Metal) | Όλες οι συσκευές Apple | Υψηλή (παράλληλοι υπολογισμοί) |
| CPU (BNNS) | Όλες οι συσκευές Apple | Βασική (συμβατότητα) |
Neural Engine (ANE) — είναι εξειδικευμένος νευροεπεξεργαστής, ενσωματωμένος σε τσιπ Apple A12+ και M1+. Ο ANE είναι βελτιστοποιημένος για εκτέλεση λειτουργιών συνελικτικών νευρωνικών δικτύων (CNN) και πολλαπλασιαστών μητρών με απόδοση έως 15.8 TOPS στο A17 Pro και 38 TOPS στο M4. Core ML αυτόματα καθορίζει, μπορεί αν εκτελέσει μοντέλο σε ANE, και αν ναι — φορτώνει το εκεί. Αν μοντέλο περιέχει λειτουργίες, δεν υποστηριζόμενα ANE, Core ML κατανέμει υπολογισμούς μεταξύ GPU και CPU.
Για υπολογισμούς σε GPU Core ML χρησιμοποιεί Metal Performance Shaders Graph (MPSGraph), πλαίσιο για δημιουργίας και εκτέλεσης υπολογιστικών γράφων σε GPU. Το MPSGraph λαμβάνει το γράφημα νευρωνικού δικτύου από το Core ML και το μεταγλωττίζει σε Metal Shaders, βελτιστοποιημένα για συγκεκριμένη αρχιτεκτονική GPU (7-πύρηνος A17 GPU ή 40-πύρηνος M4 Ultra GPU). Αυτόματες βελτιστοποίησης MPSGraph περιλαμβάνουν συγχώνευση επιπέδων, εξάλειψη περιττών λειτουργιών και επιλογή βέλτιστου μορφής δεδομένων.
Το Core ML υποστηρίζει όλους τους βασικούς τύπους μοντέλων μηχανικής μάθησης, χωρισμένους σε τρεις κατηγορίες: νευρωνικά δίκτυα (συνελικτικά CNN, αναδρομικά RNN/LSTM, μετασχηματιστές), μοντέλα συνόλου (Random Forest, Gradient Boosting, XGBoost, Decision Trees) και μοντέλα παλινδρόμησης (γραμμική παλινδρόμηση, SVM, CRF). Κάθε τύπος μοντέλου έχει το δικό του υποπρωτόκολλο MLModelType, και το Core ML επιλέγει αυτόματα το αντίστοιχο υπόβαθρο και μορφή εκτέλεσης.
Το Core ML υποστηρίζει πάνω από 150 τύπους νευρωνικών επιπέδων: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), επίπεδα ειδικά για Metal. Για μη υποστηριζόμενες επιπέδων Core ML παρέχει μηχανισμό custom layer — δυνατότητα γράψετε υλοποίηση επιπέδου σε Metal Shading Language ή Swift.
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, το Core ML χρησιμοποιούσε τη μορφή .mlmodel — δυαδικό αρχείο, που περιέχει όλοι βάρη και μεταδεδομένα μοντέλου. Από το Xcode 13 και το Core ML 4, η Apple παρουσίασε τη νέα μορφή .mlpackage — δομή πακέτου βασισμένη σε κατάλογο, που περιέχει μοντέλο, μεταδεδομένα, περιγραφή εισόδων/εξόδων και αρχεία προ- και μετα-επεξεργασίας σε JSON. mlpackage υποστηρίζει git-έλεγχο εκδόσεων, τι απλοποιεί ομαδική ανάπτυξη. Μετατροπή .mlmodel σε .mlpackage εκτελείται με εργαλείο Xcode Model Compiler ή με σενάριο coremltools σε Python.
Η μετατροπή μοντέλων από εξωτερικά πλαισίων σε Core ML εκτελείται με βοήθεια βιβλιοθήκης coremltools σε Python. coremltools υποστηρίζει εισαγωγή μοντέλων από TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, traced/scripted μοντέλου), Keras (H5), ONNX και που δημιουργήθηκαν με βοήθεια Create ML. Το τυπικό pipeline μετατροπής περιλαμβάνει τρία βήματα: φόρτωση μοντέλου στην αρχική μορφή, μετατροπή σε MIL (Model Intermediate Language) — εσωτερική αναπαράσταση Core ML, και εξαγωγή σε .mlpackage.
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")
Μετά τη μετατροπή είναι απαραίτητο να ελέγξετε την ακρίβεια του μοντέλου, συγκρίνοντας προβλέψεις αρχικής μοντέλου και μετατρεπόμενου Core ML-μοντέλου σε ίδια δεδομένων. Επιτρεπόμενη απόκλιση — δεν πάνω από 1e-3 (0.1%) για Float32 και 1e-2 (1%) για Float16/Int8. coremltools παρέχει εργαλείο ct.utils.compare_models() για αυτόματης σύγκρισης. Αν η απόκλιση υπερβαίνει το κανονικό, πιθανώς υπάρχει πρόβλημα με μη υποστηριζόμενες λειτουργίες — πρέπει να αντικατασταθούν με custom layers ή να απλοποιηθεί το μοντέλο.
Η βελτιστοποίηση μοντέλου Core ML — είναι διαδικασία μείωσης μεγέθους μοντέλου και αύξησης ταχύτητας συμπερασμού χωρίς σημαντική απώλεια ακρίβειας. Η Apple παρέχει αρκετά εργαλεία βελτιστοποίησης ενσωματωμένα στα coremltools και Xcode: κβαντισμό (μείωση ακρίβειας βαρών), αποκοπή συνάψεων (αφαίρεση μη σημαντικών νευρώνων), παλαιοντολογία (αφαίρεση περιττών επιπέδων) και συγχώνευση επιπέδων (fusion) για μείωση υπολογιστικού γράφου.
Ο κβαντισμός μειώνει μέγεθος μοντέλου περίπου σε 2 φορές (Float16) ή 4 φορές (Int8) με σύγκριση με Float32. Το Core ML υποστηρίζει τρεις τρόπους κβαντισμού: κβαντισμό μετά εκπαίδευση (PTQ) με σύνολο βαθμονόμησης, κατά μετατροπή μέσω coremltools και εκπαίδευση με υπολογισμό κβαντισμού (QAT). Για περισσότερα μοντέλων υπολογιστικής όρασης PTQ έως Float16 δίνει απώλεια ακρίβειας λιγότερο 0.5% κατά διπλασιασμό ταχύτητας συμπερασμού.
Το Xcode παρέχει εργαλείο Core ML Model Profiler, που επιτρέπει μετρήσει απόδοση μοντέλου σε διάφορες συσκευές σε προσομοιωτή ή σε πραγματική συσκευή. Το προφίλ δείχνει χρόνο εκτέλεσης κάθε επιπέδου, φόρτωση υποβάθρου (ANE/GPU/CPU), μέγιστη κατανάλωση μνήμης και σημεία συμφόρησης σημεία μοντέλου. Σύμφωνα με Apple Performance Optimization Guide, πάνω από 80% μοντέλων έχουν τουλάχιστον ένα επίπεδο που λειτουργεί σημαντικά πιο αργά (ανωμαλία επιπέδου), που μπορεί να βελτιστοποιηθεί με αντικατάσταση ή συγχώνευση.
Ας δούμε την ενσωμάτωση εκπαιδευμένου μοντέλου Core ML σε iOS-εφαρμογή σε Swift. Μετά προσθήκη .mlpackage αρχείου στο έργο Xcode (με σύρσιμο ή μέσω Swift Package Manager), το Xcode δημιουργεί αυτόματα κλάση μοντέλου σε Swift με τυποποιημένες εισόδους και εξόδους. Στον προγραμματιστή δεν χρειάζεται αναλύει εισόδου δεδομένα χειροκίνητα — δημιουργημένη κλάση δέχεται UIImage, MLMultiArray, String ή άλλους τύπους σε ανάλογα από μεταδεδομένων μοντέλου.
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 πρέπει να προβλέψετε διαχείριση σφαλμάτων: μοντέλο μπορεί δεν φορτωθεί από-για ασυμβατότητας με συσκευή (πολύ παλιά έκδοση iOS), ανεπάρκειας μνήμης ή ζημιάς αρχείου μοντέλου. Συνιστάται υλοποίηση λογικής fallback: αν μοντέλο δεν φορτώθηκε σε κβαντισμένη μορφή Int8, φορτώστε έκδοση Float16, και αν ούτε αυτή φορτωθεί — Float32. Με δεδομένα Apple Crash Analytics, πάνω από 5% σφαλμάτων ML-εφαρμογών οφείλονται εσφαλμένη φόρτωση μοντέλου.
Core ML και Create ML — είναι δύο συμπληρωματικά άλλο άλλο εργαλεία οικοσυστήματος Apple ML. Core ML ικανοποιεί για εκτέλεση μοντέλων σε συσκευή (συμπερασμός), ενώ πώς Create ML — για εκπαίδευση μοντέλων (εκπαίδευση). Τα δημιουργημένα σε Create ML μοντέλου εξάγονται ακριβώς σε μορφή Core ML (.mlpackage) για μεταγενέστερη ενσωμάτωσης σε εφαρμογές. Αν το παρομοιάσουμε με ανάπτυξη ιστού, Core ML είναι πρόγραμμα περιήγησης (εκτέλεση), και Create ML είναι IDE για γράψιμο κώδικα (εκπαίδευση).
| Παράμετρος | Core ML | Create ML |
|---|---|---|
| Σκοπός | Εκτέλεση μοντέλων (συμπερασμός) | Εκπαίδευση μοντέλων |
| Πλατφόρμα | iOS, iPadOS, macOS, watchOS, tvOS | macOS (μόνο) |
| Μορφή | .mlpackage (καταναλώνει) | .mlpackage (δημιουργεί) |
| Κώδικας | Swift / Objective-C API | UI (Xcode) ή Swift API |
| Χρήστης | Προγραμματιστής εφαρμογής | Προγραμματιστής / Data Scientist |
Συχνές ερωτήσεις
Core ML — είναι πλαίσιο μηχανικής μάθησης από Apple για εκτέλεσης προεκπαιδευμένων εκπαιδευμένων ML-μοντέλων σε συσκευές iOS, iPadOS, macOS, watchOS και tvOS. Αυτό υποστηρίζει νευρωνικά δίκτυα, δέντρα αποφάσεων και παλινδρομήσεις, αυτόματα επιλέγοντας βέλτιστο υπολογιστικό υπόβαθρο (Neural Engine, GPU ή CPU).
TensorFlow — είναι γενικό πλαίσιο για εκπαίδευση και εκτέλεση μοντέλων σε διακομιστές και κινητές συσκευές. Core ML — είναι εξειδικευμένη μηχανή για εκτέλεση (όχι εκπαίδευση) μοντέλων αποκλειστικά σε συσκευές Apple με μέγιστη απόδοση χάρη σε βελτιστοποίηση για συγκεκριμένο υλικό (ANE, GPU, Metal). TensorFlow Mobile πλέον δεν υποστηρίζεται σε iOS — Apple συνιστά Core ML για όλες ML-εργασιών σε του πλατφόρμες.
Η μετατροπή γίνεται με τη βιβλιοθήκη coremltools σε Python: εξάγετε μοντέλο PyTorch σε TorchScript (torch.jit.trace), στη συνέχεια χρησιμοποιήστε ct.converters.pytorch.convert() για δημιουργία .mlpackage. coremltools αυτόματα αντιστοιχίζει επίπεδα PyTorch με υποστηριζόμενα επιπέδων Core ML και βελτιστοποιεί γράφημα για ANE.
Core ML λειτουργεί σε όλες iPhone με iOS 11 και νεότερη. Ωστόσο απόδοση εξαρτάται από υλικό: iPhone 5s/6 — μόνο CPU (αργός συμπερασμός), iPhone 8/X — GPU (Metal), iPhone Xs και νεότερα — Neural Engine (μέγιστη απόδοση έως 15.8 TOPS στο A17 Pro). Για για επίτευξη καλύτερης απόδοσης συνιστάται ορίζετε ελάχιστη έκδοση iOS 12+.
Η σύγχρονη μορφή — .mlpackage (κατάλογο, που περιέχει μοντέλο, μεταδεδομένα και περιγραφή εισόδων/εξόδων). Παλαιότερη μορφή — .mlmodel (μεμονωμένο δυαδικό αρχείο). Το Xcode μετατρέπει αυτόματα .mlmodel σε .mlpackage κατά μεταγλώττιση, αλλά για νέα έργα συνιστάται άμεση χρήση .mlpackage.
Συμπεράσματα
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης