Машинное обучение на Swift: библиотеки и инструменты для iOS/macOS
Разработка под экосистему Apple традиционно ассоциируется с языком Swift. Несмотря на то, что Python остаётся безусловным лидером в области Data Science, Swift активно догоняет его, предлагая нативные, оптимизированные под «железо» Apple решения. В этой статье мы разберём ключевые библиотеки и фреймворки, которые позволяют внедрять машинное обучение (ML) в приложения для iOS, macOS, watchOS и tvOS, а также проводить обучение моделей прямо на устройстве.
1. Core ML — основа всего
Core ML — это не просто библиотека, а фундаментальный фреймворк от Apple, который служит рантаймом для выполнения ML-моделей на устройстве. Он поддерживает модели, обученные в Python (scikit-learn, TensorFlow, PyTorch) и конвертированные в формат .mlmodel или .mlpackage с помощью Core ML Tools.
Ключевые возможности Core ML:
- Оптимизация под Neural Engine, GPU и CPU (автоматический выбор).
- Поддержка изображений, текста, последовательностей, табличных данных.
- Работа с моделями классификации, обнаружения объектов (YOLO, SSD), семантической сегментации.
- Поддержка моделей трансформеров (BERT, GPT-2) через Natural Language.
Пример интеграции модели Core ML для классификации изображений (Swift):
import CoreML
import Vision
// 1. Загружаем модель (например, MobileNetV2)
guard let model = try? VNCoreMLModel(for: MobileNetV2(configuration: MLModelConfiguration()).model) else {
fatalError("Не удалось загрузить модель")
}
// 2. Создаём запрос к Vision
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results as? [VNClassificationObservation],
let topResult = results.first else {
return
}
print("Распознано: \(topResult.identifier) с уверенностью \(topResult.confidence)")
}
// 3. Выполняем запрос на изображении
guard let image = UIImage(named: "cat.jpg"),
let ciImage = CIImage(image: image) else { return }
let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])
try? handler.perform([request])
2. Create ML — обучение без кода (и с кодом)
Create ML — это инструмент Apple, встроенный в Xcode и Swift Playgrounds, позволяющий обучать модели машинного обучения прямо на Mac, используя Swift. Он идеален для прототипирования и создания кастомных моделей, не покидая экосистему.
Create ML поддерживает:
- Классификацию и регрессию (табличные данные).
- Классификацию изображений и обнаружение объектов.
- Анализ текста (тональность, категоризация).
- Рекомендательные системы (на основе поведения пользователя).
- Звуковую классификацию.
Пример обучения классификатора текста на Swift (macOS):
import CreateML
import Foundation
// 1. Загружаем данные из CSV
let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/me/emails.csv"))
// 2. Разделяем на train/test
let (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 42)
// 3. Обучаем классификатор тональности
let sentimentClassifier = try MLTextClassifier(trainingData: trainingData,
textColumn: "text",
labelColumn: "label")
// 4. Оценка точности
let evaluationMetrics = sentimentClassifier.evaluation(on: testingData)
print("Точность: \(evaluationMetrics.classificationError)")
// 5. Сохраняем модель
let metadata = MLModelMetadata(author: "PythonLib",
shortDescription: "Классификатор тональности писем",
version: "1.0")
try sentimentClassifier.write(to: URL(fileURLWithPath: "/Users/me/SentimentClassifier.mlmodel"),
metadata: metadata)
3. TensorFlow Lite для Swift
Если вы уже имеете модель, обученную в TensorFlow, но хотите запускать её на iOS/macOS, вам нужен TensorFlow Lite (TFLite). Это легковесный движок от Google, оптимизированный для мобильных и встраиваемых устройств. Apple официально рекомендует его для случаев, когда Core ML не поддерживает определённые операции (например, пользовательские слои).
Преимущества TFLite на Swift:
- Работа с моделями в формате
.tflite. - Поддержка GPU и делегатов (Metal, Core ML delegate для ускорения).
- Квантование моделей для уменьшения размера и увеличения скорости.
- Гибкость — можно использовать модели, не конвертируемые