Introdução: por que Swift para aprendizado de máquina?
O mundo do aprendizado de máquina (ML) é tradicionalmente associado ao Python, Jupyter Notebooks e bibliotecas como TensorFlow ou PyTorch. No entanto, nos últimos anos, o Swift — uma linguagem de programação da Apple, conhecida por seu desempenho e segurança — tem entrado em cena. Se você é um desenvolvedor iOS/macOS que deseja incorporar ML em seus aplicativos, ou um iniciante escolhendo sua primeira linguagem para ML, este artigo é para você.
O Swift oferece uma abordagem única: combina a velocidade de linguagens compiladas (como C++) com a legibilidade de linguagens de script. Graças aos frameworks Core ML e Create ML, bem como ao projeto Swift for TensorFlow, o Swift se torna uma alternativa viável para tarefas de aprendizado de máquina em dispositivos Apple. No entanto, essa abordagem também tem limitações. Vamos analisar.
Principais recursos do Swift para ML
1. Core ML: integração de modelos no dispositivo
Core ML é o framework da Apple para executar modelos de aprendizado de máquina diretamente nos dispositivos (iPhone, iPad, Mac). Esta é uma vantagem chave: os dados não são enviados para um servidor, garantindo privacidade e velocidade de processamento.
Exemplo de carregamento e uso de um modelo pré-treinado (por exemplo, MobileNet para classificação de imagens):
import CoreMLimport Vision
// Carregamos o modeloguard let model = try? VNCoreMLModel(for: MobileNetV2().model) else { fatalError("Não foi possível carregar o modelo")}
// Criamos a requisiçãolet request = VNCoreMLRequest(model: model) { request, error in guard let results = request.results as? [VNClassificationObservation] else { return } // Exibimos os 3 principais resultados for result in results.prefix(3) { print("\\(result.identifier): \\(result.confidence * 100)%") }}
// Realizamos a análise da imagemguard let image = UIImage(named: "photo.jpg")?.cgImage else { return }let handler = VNImageRequestHandler(cgImage: image)try? handler.perform([request])Este código mostra como é fácil integrar uma rede neural poderosa em seu aplicativo iOS. Tudo o que você precisa é converter o modelo de PyTorch/TensorFlow para o formato .mlmodel usando a ferramenta coremltools.
2. Create ML: treinamento sem código (quase)
Para tarefas simples (classificação de texto, imagens, dados tabulares), a Apple oferece o Create ML — uma ferramenta com interface gráfica dentro do Xcode. Você pode treinar um modelo simplesmente arrastando e soltando os dados. Mas se você prefere código, o Create ML também está disponível como um framework:
import CreateMLimport Foundation
// Carregamos os dados de treinamentolet data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/caminho/para/train.csv"))
// Criamos o classificadorlet classifier = try MLClassifier(trainingData: data, targetColumn: "label")
// Avaliamos a precisãolet metrics = classifier.trainingMetricsprint("Precisão: \\(metrics.classificationError * 100)%")
// Salvamos o modelotry classifier.write(to: URL(fileURLWithPath: "/caminho/para/model.mlmodel"))Esta é a opção ideal para um MVP (Produto Mínimo Viável) ou prototipagem. No entanto, para arquiteturas complexas (transformers, GANs), o Create ML não é adequado.
3. Swift for TensorFlow (S4TF): uma estrela que se apagou
O projeto Swift for TensorFlow foi uma tentativa ambiciosa do Google de criar uma alternativa ao Python para ML. Ele oferecia diferenciação automática em nível de linguagem e integração com o TensorFlow. Infelizmente, em 2021, o Google interrompeu o desenvolvimento ativo do S4TF. No entanto, o legado continua: muitas ideias do S4TF foram transferidas para as bibliotecas Swift Numerics e swift-ml.
Exemplo (se o S4TF ainda estivesse ativo):
import TensorFlow
// Rede neural simplesstruct Model: Layer { var layer1 = Dense<Float>(i