Swift pour l'apprentissage automatique : possibilités et limites
Le monde de l'apprentissage automatique (ML) est traditionnellement associé à Python et à ses bibliothèques (TensorFlow, PyTorch, scikit-learn). Cependant, les développeurs de l'écosystème Apple se demandent de plus en plus : peut-on utiliser Swift pour les tâches d'apprentissage automatique ? Swift est un langage puissant, rapide et sécurisé qui est au cœur de toutes les applications modernes pour iOS, macOS, watchOS et tvOS. Dans cet article, nous allons examiner en détail les outils disponibles pour le ML en Swift, leurs forces et leurs faiblesses par rapport à Python.
Nous aborderons à la fois les frameworks natifs d'Apple (Create ML, Core ML) et les solutions tierces (Swift for TensorFlow). Vous découvrirez si Swift convient aux modèles de production, à l'entraînement des réseaux de neurones ou uniquement à l'inférence sur les appareils.
1. Outils natifs d'Apple : Create ML et Core ML
Apple développe activement son propre écosystème pour l'apprentissage automatique. Les frameworks principaux — Create ML et Core ML — sont entièrement écrits en Swift et optimisés pour fonctionner sur les appareils Apple.
Create ML — entraînement de modèles sans Python
Create ML est un framework qui permet d'entraîner des modèles d'apprentissage automatique directement sur macOS, en utilisant uniquement Swift. Il est idéal pour les tâches de classification d'images, d'analyse de texte, de régression et de systèmes de recommandation. Le principal avantage est le seuil d'entrée minimal : pas besoin d'installer Python, de configurer CUDA ou de comprendre des abstractions mathématiques complexes.
Exemple de code : entraînement d'un classifieur de texte en Swift
import CreateMLimport Foundation
// Chargement des données depuis un JSONlet data = try MLDataTable(contentsOf: URL(fileURLWithPath: "reviews.json"))
// Division en ensembles d'entraînement et de testlet (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 5)
// Création et entraînement du modèlelet sentimentClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "label")
// Évaluation de la précisionlet evaluationMetrics = sentimentClassifier.evaluation(on: testingData)print("Précision : \\(evaluationMetrics.classificationError)")
// Sauvegarde du modèle au format .mlmodellet metadata = MLModelMetadata(author: "PythonLib User", shortDescription: "Modèle pour l'analyse de sentiment", version: "1.0")try sentimentClassifier.write(to: URL(fileURLWithPath: "SentimentClassifier.mlmodel"), metadata: metadata)Ce code entraîne un modèle sur des avis étiquetés et le sauvegarde au format .mlmodel, qui peut ensuite être intégré dans n'importe quelle application iOS/macOS.
Core ML — inférence sur les appareils
Core ML est un moteur d'exécution de modèles d'apprentissage automatique sur les appareils Apple. Il prend en charge les modèles entraînés dans Create ML, ainsi que dans TensorFlow ou PyTorch (via une conversion au format .mlpackage). Core ML utilise l'accélération matérielle (Neural Engine, GPU, CPU) et permet au modèle de fonctionner hors ligne, sans latence réseau.
Exemple : utilisation d'un modèle Core ML prêt à l'emploi dans une application
import CoreMLimport Vision
// Chargement du modèleguard let model = try? VNCoreMLModel(for: ResNet50(configuration: MLModelConfiguration()).model) else { fatalError("Impossible de charger le modèle")}
// Création de la requêtelet request = VNCoreMLRequest(model: model) { request, error in guard let results = request.results as? [VNClassificationObservation], let topResult = results.first else { return } print("Reconnu : \\(topResult.identifier) avec une confiance de \\(topResult.confidence)")}
// Exécution sur l'imagelet handler = VNImageRequestHandler(url: URL(fileUR