Glossário / Como ele ouve você
Core ML
Também: CoreML, Apple Core ML
Atualizado em
Definição
O Core ML é o framework da Apple para rodar modelos de aprendizado de máquina dentro de um app, no dispositivo. Usa a CPU, a GPU e o Neural Engine, e não precisa de rede para fazer uma previsão.
O Core ML faz parte dos sistemas da Apple desde 2017, no macOS 10.13 e no iOS 11. Um app entrega a ele um modelo e uma entrada, como áudio, uma imagem ou texto, e ele devolve a resposta do modelo. Onde as contas são feitas é o Core ML que decide.
Você não instala nem abre o Core ML. Ele faz parte do macOS. Você encontra o nome na descrição de um app, no nome de arquivo de um modelo ou quando um download diz que contém pesos do Core ML.
O que faz
A descrição da Apple: o Core ML oferece uma representação unificada para todos os modelos, e um app o usa para fazer previsões e para treinar ou fazer ajuste fino de modelos, tudo no dispositivo da pessoa.
Sobre desempenho, a Apple diz que o Core ML otimiza o desempenho no dispositivo aproveitando a CPU, a GPU e o Neural Engine, enquanto minimiza o uso de memória e o consumo de energia. O Neural Engine é a parte dos chips da Apple feita para esse tipo de conta, e o Core ML é o caminho habitual para um app chegar até ele.
Por que rodar no dispositivo importa
A própria Apple apresenta o argumento: rodar um modelo estritamente no dispositivo da pessoa elimina qualquer necessidade de conexão de rede, o que ajuda a manter os dados da pessoa privados e o app ágil.
Na fala, isso significa que o áudio não precisa sair do Mac para virar texto. Se um app específico o mantém ali depende do app, mas o framework torna isso possível.
Os tipos de arquivo
Os modelos do Core ML vêm em três formas, e a extensão diz qual é.
- `.mlmodel`: o arquivo original de definição do modelo.
- `.mlpackage`: o formato de pacote mais novo, que guarda os pesos separados do programa. É suportado a partir do Xcode 13.
- `.mlmodelc`: um modelo compilado, que é o que um app carrega. Uma pasta com essa terminação dentro de um app ou dos downloads dele é um modelo do Core ML pronto para rodar.
De onde vêm os modelos
A maioria dos modelos é treinada com outras ferramentas e depois convertida. Para isso, a Apple publica o Core ML Tools, que converte modelos de bibliotecas de treinamento como PyTorch e TensorFlow para o formato do Core ML.
As mesmas ferramentas podem comprimir um modelo durante a conversão, por quantização ou por paletização, o que o deixa menor e muitas vezes mais rápido no Neural Engine.
Core ML e MLX
A Apple descreve os dois de formas diferentes. O Core ML serve para integrar modelos a apps. O MLX é um framework de arrays de código aberto para experimentar, treinar e fazer ajuste fino de modelos generativos em Apple silicon. A documentação da Apple diz que o MLX roda na CPU e na GPU, enquanto o Core ML também pode usar o Neural Engine.
As páginas da Apple agora também indicam um framework separado, o Core AI, para desenvolvedores que trabalham com as arquiteturas de modelo mais novas. O Core ML continua sendo o jeito consolidado de rodar um modelo num app.
Perguntas que as pessoas fazem.
Para que serve o Core ML?
Para rodar modelos de aprendizado de máquina dentro de apps em dispositivos da Apple: reconhecer fala, classificar imagens, ler texto e tarefas parecidas, sem enviar os dados para um servidor.
O Core ML precisa de internet?
Não. A Apple diz que rodar um modelo estritamente no dispositivo elimina qualquer necessidade de conexão de rede.
O Core ML usa o Neural Engine?
Sim. A Apple diz que o Core ML aproveita a CPU, a GPU e o Neural Engine.
O que é um arquivo .mlmodelc?
Um modelo do Core ML compilado, a forma que um app carrega e roda.
Qual é a diferença entre Core ML e MLX?
A Apple descreve o Core ML como o jeito de integrar modelos a apps, e o MLX como um framework de arrays para experimentar e fazer ajuste fino de modelos generativos em Apple silicon. O Core ML pode usar o Neural Engine; o MLX roda na CPU e na GPU.
O Core ML existe em Macs com Intel?
Sim. O Core ML faz parte do macOS desde a versão 10.13. O Neural Engine só existe no Apple silicon, então num Mac com Intel ele usa a CPU e a GPU.