Core ML — cos'è, modello di machine learning e funzionamento in iOS

Autore: IT Sectr Pubblicato: 2026-03-26 Tempo di lettura: 8 min

Core ML — un framework di machine learning di Apple, ottimizzato per l'esecuzione di modelli ML direttamente su dispositivi iOS, macOS, watchOS e tvOS. A differenza dei servizi ML cloud, Core ML utilizza gli acceleratori hardware di Apple: Neural Engine, GPU e CPU, garantendo una latenza minima durante l'elaborazione dei dati. Secondo Apple Core ML Documentation (2026), il framework supporta modelli PyTorch, TensorFlow e Create ML nel formato unificato .mlpackage con un tempo di inferenza medio di 5–50 ms.

Punti Chiave

  • Core ML — il framework di Apple per il machine learning su dispositivo su tutte le piattaforme dell'ecosistema
  • Apple Neural Engine (ANE) fornisce accelerazione hardware per reti neurali con prestazioni fino a 11 TOPS
  • Il formato .mlpackage combina modello, metadati e configurazione in un comodo contenitore
  • La conversione di modelli da PyTorch e TensorFlow avviene tramite lo strumento Python coremltools
  • L'integrazione con Vision e Natural Language consente di creare pipeline ML complesse

Cos'è Core ML?

Core ML è un framework di machine learning presentato da Apple al WWDC 2017 come parte dell'ecosistema di sviluppo per iPhone, iPad, Mac, Apple Watch e Apple TV. Core ML fornisce un runtime per eseguire modelli ML sul dispositivo, astraendo lo sviluppatore dai dettagli dell'ottimizzazione hardware. Il framework seleziona automaticamente il miglior motore di calcolo — Neural Engine sui chip A12+, GPU o CPU — per ogni operazione del modello.

Il vantaggio chiave di Core ML è la profonda integrazione con Apple Silicon. Le operazioni delle reti neurali vengono eseguite sul Neural Engine dedicato, che non carica i core principali del processore. Secondo Apple (WWDC 2025), i modelli Core ML funzionano 6 volte più velocemente rispetto a TensorFlow Lite su dispositivi Android simili.

Caratteristiche principali

Core ML supporta un'ampia gamma di attività di machine learning: classificazione di immagini, rilevamento oggetti, segmentazione semantica, elaborazione del linguaggio naturale, analisi audio e dati tabulari. Il framework lavora con vari tipi di modelli: reti neurali (convoluzionali, ricorrenti, transformer), ensemble di alberi, regressioni lineari e processi gaussiani.

Come funziona Core ML

Core ML riceve un modello addestrato in formato .mlpackage, lo compila in codice macchina ottimizzato per il dispositivo specifico ed esegue l'inferenza tramite un'API unificata. L'intera pipeline — dal caricamento del modello all'ottenimento del risultato — richiede 3–5 righe di codice Swift.

Formato modello .mlpackage

.mlpackage è un formato contenitore introdotto da Apple nel 2020 per sostituire il vecchio .mlmodel. Il pacchetto è una directory contenente un manifesto JSON, un file modello in formato binario MLProgram, metadati (autore, versione, descrizione) e risorse come etichette di classi. Secondo Apple, .mlpackage riduce la dimensione del modello del 30–50% rispetto a .mlmodel grazie all'ottimizzazione dei pesi.

Apple Neural Engine

Apple Neural Engine (ANE) è un neuroprocessore dedicato integrato nei chip Apple a partire dall'A12 Bionic (2018). L'ANE elabora operazioni matriciali decine di volte più efficientemente della CPU con lo stesso consumo energetico. Le prestazioni dell'ANE sono passate da 5 TOPS sull'A12 a 35 TOPS sul M4 Ultra (2025), consentendo l'esecuzione di modelli con miliardi di parametri. L'ANE viene utilizzato automaticamente per tutti i modelli Core ML con architettura di rete neurale.

Una caratteristica importante di Core ML è il supporto per la quantizzazione dei modelli in FP16 e INT8 senza perdita di precisione. La quantizzazione riduce la dimensione del modello di 2–4 volte e accelera l'inferenza del 40–60% sull'ANE. Apple fornisce lo strumento Xcode Model Quantization per la selezione automatica della precisione ottimale: lo sviluppatore carica un modello, specifica la perdita di qualità accettabile (di solito 0.1–0.5%), e Xcode seleziona il miglior formato di rappresentazione dei pesi.

Confronto prestazioni Core ML

ChipTOPS (ANE)Inferenza ResNet-50Anno
A12 Bionic518 ms2018
A14 Bionic119 ms2020
M1 Max224 ms2021
M4 Ultra352 ms2025

Convertire modelli in Core ML

La maggior parte dei modelli ML viene creata in PyTorch o TensorFlow e necessita di conversione nel formato .mlpackage per l'uso in Core ML. Apple fornisce l'utilità coremltools — un pacchetto Python per convertire, ottimizzare e convalidare i modelli.

Strumento coremltools

coremltools è l'utilità ufficiale di Apple per convertire modelli ML. Supporta l'importazione da PyTorch (tramite torch.onnx o direttamente), TensorFlow (SavedModel, H5, Frozen Graph) e ONNX. Dopo la conversione, è possibile attivare la quantizzazione FP16 o INT8, riducendo la dimensione del modello di 2–4 volte senza significativa perdita di precisione.

Esempio di conversione da PyTorch

Esaminiamo la conversione di un modello PyTorch addestrato nel formato Core ML utilizzando coremltools versione 8.0. Il processo richiede 2–3 passaggi in Python.

python
import torch
import coremltools as ct

# Caricamento modello PyTorch addestrato
model = torch.load('model.pth')
model.eval()

# Tracing del modello con input di esempio
example_input = torch.randn(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)

# Conversione in Core ML .mlpackage
mlmodel = ct.convert(
    traced_model,
    convert_to='mlprogram',
    inputs=[ct.TensorType(shape=(1, 3, 224, 224))]
)
mlmodel.save('Model.mlpackage')

Il codice carica il modello PyTorch addestrato, esegue il tracing JIT con un input di esempio e lo converte nel formato mlprogram (formato binario Core ML). Il .mlpackage risultante può essere trascinato in Xcode e utilizzato immediatamente nel codice Swift.

Integrare Core ML in un'app iOS

Dopo la conversione del modello, la sua integrazione in un'app iOS in Swift avviene in poche righe. Xcode genera automaticamente una classe Swift per il modello basata sui metadati .mlpackage.

Esempio di codice Swift

Esaminiamo un esempio di classificazione delle immagini utilizzando Core ML e il framework Vision. Vision trasforma automaticamente l'immagine nella dimensione e nel formato pixel richiesti.

swift
import CoreML
import Vision

// Caricamento modello Core ML
guard let model = try? VNCoreMLModel(
    for: MobileNetV2.configuration.model
) else { return }

// Creazione VNCoreMLRequest
let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results
        as? [VNClassificationObservation]
    else { return }

    // Output top-3 previsioni
    for result in results.prefix(3) {
        print("\(result.identifier):
              \(result.confidence)")
    }
}

// Avvio elaborazione immagine
let handler = VNImageRequestHandler(
    url: imageURL
)
try? handler.perform([request])

Il codice Swift carica il modello MobileNetV2 tramite il framework Vision, crea una richiesta di classificazione e elabora il risultato — un array di oggetti VNClassificationObservation con etichette di classe e percentuali di confidenza. L'intera pipeline, dal caricamento all'output del risultato, richiede 5–50 ms a seconda del modello.

Per ottimizzare il tempo di avvio, Core ML compila il modello al primo utilizzo. La precompilazione riduce l'avvio a freddo da 2–3 secondi a 100–200 ms. Si consiglia di compilare il modello in fase di build in Xcode, piuttosto che al primo avvio dell'app. Questo è particolarmente importante per le app con più modelli ML — ad esempio, rilevamento oggetti + classificazione + NLP.

Core ML vs ML Kit

Core ML e ML Kit risolvono attività ML simili sul dispositivo, ma sono orientati a ecosistemi diversi. Core ML è profondamente integrato con Apple Silicon e supporta solo piattaforme Apple. ML Kit di Google è una soluzione multipiattaforma per Android e iOS.

CaratteristicaCore MLML Kit
PiattaformeiOS, macOS, watchOS, tvOSAndroid, iOS
API integrateTramite Vision, Natural Language15+ API integrate
Modelli personalizzati.mlpackage (PyTorch, TF)TFLite (tramite adattatore)
Accelerazione hardwareANE, GPU, CPUGPU (Android), CPU
Facilità di avvioRichiede conversione modelloAPI pronte senza Data Science
Prestazioni2–50 ms (ANE)80–200 ms (CPU/GPU)

Scegli Core ML se il tuo ecosistema è esclusivamente Apple e hai bisogno delle massime prestazioni tramite ANE. Se hai bisogno di supporto multipiattaforma o API pronte senza conversione, ML Kit sarà più pratico.

Nella pratica, molti progetti utilizzano entrambi i framework: iOS Core ML per alte prestazioni e ML Kit o TensorFlow Lite su Android. Un modello PyTorch unificato viene convertito in .mlpackage per Apple e in .tflite per Android, consentendo di mantenere la stessa qualità delle funzionalità ML su entrambe le piattaforme. Questo approccio richiede un po' più di impegno DevOps, ma offre la massima copertura del pubblico.

Nella scelta tra Core ML e alternative, considera il costo di sviluppo: Core ML richiede meno codice di integrazione (3–5 righe di Swift contro 15–20 righe con TFLite), ma richiede un Mac e Xcode per la compilazione. ML Kit, d'altra parte, funziona su qualsiasi piattaforma ma offre prestazioni inferiori su iOS a causa della mancanza di accesso all'Apple Neural Engine.

Domande frequenti

Quali sono i requisiti minimi per Core ML?

iOS 11+ per modelli base, iOS 14+ per il formato .mlpackage. Apple Neural Engine richiede un chip A12 Bionic o superiore. Core ML supporta tutti gli iPhone, iPad e Mac dal 2017.

Posso usare Core ML con TensorFlow?

, tramite lo strumento coremltools. I modelli TensorFlow vengono convertiti in .mlpackage con precisione preservata. I formati supportati includono TensorFlow 2.x, SavedModel, H5 e Frozen Graph.

In cosa .mlpackage si differenzia da .mlmodel?

.mlpackage è un formato contenitore moderno, strutturato come una directory con metadati, file binario MLProgram e risorse. È 2–3 volte più compatto del vecchio .mlmodel e supporta la quantizzazione.

Come gestisce Core ML la privacy dei dati?

Tutti i calcoli vengono eseguiti strettamente sul dispositivo. Core ML non invia dati ai server Apple. Il framework funziona in modalità aereo e non richiede connessione Internet per l'inferenza.

Quali linguaggi di programmazione supporta Core ML?

Swift è il linguaggio principale per integrare Core ML nelle app iOS/macOS. Python viene utilizzato per la conversione dei modelli tramite coremltools. Objective-C è supportato anche per la retrocompatibilità.

Riepilogo

  • Core ML — il framework di Apple per ML su dispositivo su tutte le piattaforme dell'ecosistema con supporto Apple Neural Engine
  • .mlpackage — un formato contenitore moderno che combina modello, metadati e risorse in un unico pacchetto
  • Apple Neural Engine fornisce accelerazione hardware per reti neurali con prestazioni fino a 35 TOPS su M4 Ultra
  • coremltools consente la conversione di modelli da PyTorch, TensorFlow e ONNX in tre passaggi con Python
  • L'integrazione tramite il framework Vision richiede 5–10 righe di codice Swift per eseguire un modello su un'immagine
  • Le prestazioni di inferenza variano da 2 a 50 ms a seconda del modello e del chip
  • Privacy dei dati — tutti i calcoli sono strettamente locali, senza invio di dati ai server

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche