Swift pour l'apprentissage automatique : possibilités et limites en pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Swift pour l'apprentissage automatique : possibilités et limites en pratique



Le monde de l'apprentissage automatique (ML) a longtemps été associé exclusivement à Python — un langage doté d'un riche écosystème de bibliothèques comme TensorFlow, PyTorch et scikit-learn. Cependant, avec la popularité croissante d'iOS et macOS, ainsi que l'émergence de frameworks puissants d'Apple, le langage Swift commence à se tailler une place dans le ML. Dans cet article, nous analyserons dans quelle mesure Swift est adapté aux tâches d'apprentissage automatique, où se trouvent ses points forts et ses limites critiques, et nous fournirons des exemples pratiques de code.



Pourquoi Swift ? Principaux avantages pour le ML



Swift est un langage compilé, typé statiquement, développé par Apple. Ses principaux atouts pour le ML sont la performance et la sécurité des types. Contrairement à Python, qui est interprété et peut être lent pour les calculs lourds, Swift est compilé en code natif, offrant un gain de vitesse de 2 à 5 fois sur des algorithmes identiques. De plus, Swift est parfaitement intégré à l'écosystème Apple : Core ML et Create ML permettent de déployer des modèles directement sur les appareils des utilisateurs.



Frameworks clés

  • Core ML — le framework principal pour intégrer des modèles entraînés dans les applications iOS/macOS. Prend en charge les modèles de TensorFlow, PyTorch et ONNX.
  • Create ML — un outil pour entraîner des modèles simples (classification d'images, de texte, régression) sans écrire de code ou avec un minimum de code en Swift.
  • Swift for TensorFlow (S4TF) — un projet expérimental de Google qui permettait d'écrire des réseaux de neurones en Swift avec une intégration complète à TensorFlow. Malheureusement, le projet est gelé, mais ses idées perdurent dans d'autres initiatives.
  • MLX — un nouveau framework d'Apple pour l'apprentissage automatique sur les appareils, optimisé pour les puces Apple Silicon.


Exemple pratique : classification d'images avec Core ML



Considérons un exemple simple — charger un modèle pré-entraîné MobileNetV2 et classer une image. Ce code fonctionne sur iOS et macOS.



import CoreMLimport Visionimport UIKit

// Chargement du modèleguard let model = try? VNCoreMLModel(for: MobileNetV2().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 { print("Aucun résultat") return } print("Classe la plus probable : \\(topResult.identifier) avec probabilité \\(topResult.confidence)")}

// Chargement de l'imageguard let image = UIImage(named: "cat.jpg"), let ciImage = CIImage(image: image) else { fatalError("Impossible de charger l'image")}

let handler = VNImageRequestHandler(ciImage: ciImage)try? handler.perform([request])


Ce code montre à quel point il est facile d'intégrer le ML dans une application native. Tout fonctionne "prêt à l'emploi", sans nécessité de configuration de l'environnement.



Création d'un modèle en Swift avec Create ML



Create ML permet d'entraîner des modèles directement dans Xcode. Voici un exemple d'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: "tweets.json"))

// Division en ensembles d'entraînement et de testlet (trainingData, testData) = data.randomSplit(by: 0.8, seed: 42)

// Création et entraînement du modèlelet classifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "sentiment")

// Évaluation de la précisionlet evaluation = classifier.evaluation(on: testData)print("Précision : \\(evaluation.classificationError)")

// Sauvegarde du modèlelet modelURL = URL(fileURLWithPath: "SentimentClassifier.mlmodel")try

Blogs

Book Recommendations