Машинное обучение на Swift: библиотеки Core ML, Create ML и TensorFlow Lite

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на 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 для ускорения).
  • Квантование моделей для уменьшения размера и увеличения скорости.
  • Гибкость — можно использовать модели, не конвертируемые

Рекомендаций