Tutorial do ML.NET: comece a usar em 10 minutos
Intro
Finalidade
Use o ML.NET Model Builder no Visual Studio para treinar e usar seu primeiro modelo de machine learning com o ML.NET.
Instale a ML.NET CLI e, em seguida, treine e use seu primeiro modelo de machine learning com ML.NET.
Pré-requisitos
Nenhum.
macOS 12.0 ou versões posteriores.
Tempo até a conclusão:
10 minutos + tempo de download/instalação
Situação
Um aplicativo que pode prever se o texto das revisões do cliente é um sentimento negativo ou positivo.
Baixar e instalar
Baixe e instale o Visual Studio 2022.
Durante a instalação, a carga de trabalho de desenvolvimento para .NET desktop deve ser selecionada junto com o componente opcional do ML.NET Model Builder. Usando o link acima deve pré-selecionar todos os pré-requisitos corretamente, como mostrado na imagem a seguir:
Já tem o Visual Studio 2022?
Se você já tiver o Visual Studio 2022, certifique-se de que ele esteja atualizado e de que a carga de trabalho necessária esteja instalada:
- Selecione a tecla Windows, digite Instalador do Visual Studio e pressione Enter.
- Se solicitado, permita que o instalador se atualize.
- Se uma atualização para o Visual Studio 2022 estiver disponível, um botão de Atualizar será exibido. Selecione-o para atualizar antes de modificar a instalação. Recomendamos usar a versão mais recente do Visual Studio 2022 para este tutorial.
- Localize sua instalação do Visual Studio 2022 e selecione Modificar.
- Selecione Desenvolvimento de área de trabalho do .NET e verifique se ML.NET Model Builder está selecionado no painel direito. Selecione o botão Modificar.
Atualize para a versão mais recente do Model Builder
Depois de habilitar o ML.NET Model Builder no Visual Studio, baixe e instale a versão mais recente.
Baixe a versão mais recente do Model Builder
Depois de baixar, instale a extensão clicando duas vezes no arquivo .vsix.
Verifique se há atualizações do Visual Studio
Este tutorial foi otimizado para a versão mais recente do Visual Studio. Se você já tem o Visual Studio 2022, poderá verificar se há atualizações:
- Selecione a tecla Windows, digite Instalador do Visual Studio e pressione Enter.
- Se solicitado, permita que o instalador se atualize.
- Se houver uma atualização disponível, sua instalação do Visual Studio 2022 terá um botão Atualizar. Selecione-o para atualizar.
Instalar SDK do .NET
Para criar aplicativos .NET, você precisa baixar e instalar o SDK do .NET 8 (Software Development Kit).
Download do SDK do .NET 8 x64 (Intel)
Download do SDK do .NET 8 Arm64 (Apple Silicon)
Se você estiver em um Mac com um chip Apple M1 ou M2, precisará instalar a versão Arm64 do SDK.
Instalar ML.NET CLI
A interface de linha de comando (CLI) do ML.NET fornece ferramentas para criar modelos de aprendizado de máquina com ML.NET.
Nota: Atualmente, ML.NET CLI está em versão prévia e dá suporte apenas à versão LTS mais recente do SDK do .NET (.NET 8).
Para as etapas de instalação, recomendamos que você use um console Bash. Como o padrão para macOS é um console zsh, você pode criar uma instância singular abrindo um novo terminal e executando o comando abaixo.
bash
FOR x64 MACHINES - Execute o comando a seguir:
dotnet tool install -g mlnet-linux-x64
FOR ARM64 CHIP ARCHITECTURES - Execute o comando a seguir:
dotnet tool install -g mlnet-linux-arm64
Se a ferramenta for instalada com êxito, você deverá ver a seguinte mensagem de saída em que [arch]
é a arquitetura do chip:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-linux-[arch]' (version 'X.X.X') was successfully installed.
dotnet tool install -g mlnet-osx-x64
FOR ARM64 CHIP ARCHITECTURES - Execute o comando a seguir:
dotnet tool install -g mlnet-osx-arm64
Se a ferramenta for instalada com êxito, você deverá ver a seguinte mensagem de saída em que [arch]
é a arquitetura do chip semelhante ao seguinte:
You can invoke the tool using the following command: mlnet
Tool 'mlnet-osx-[arch]' (version 'X.X.X') was successfully installed.
Observação: se você estiver usando um console diferente do Bash (por exemplo, zsh, que é o novo padrão do macOS), você precisará dar permissões executáveis mlnet
e incluir mlnet
no caminho do sistema. Instruções sobre como fazer isso devem aparecer no terminal ao instalar o mlnet (ou qualquer ferramenta global). Em geral, o comando a seguir deve funcionar para a maioria dos sistemas: chmod +x [PATH-TO-MLNET-CLI-EXECUTABLE]
Se você vir instruções semelhantes às mostradas abaixo, execute-as no terminal.
cat << \EOF >> ~/.zprofile
#Add .NET Core SDK tools
export PATH="$PATH:~/.dotnet/tools"
EOF
Como alternativa, você pode tentar usar o seguinte comando para executar a ferramenta mlnet:
~/.dotnet/tools/mlnet
Se o comando ainda fornecer um erro, use o botão Ocorreu um problema abaixo para relatar o problema e obter ajuda para corrigir o problema.
Criar seu aplicativo
Abra o Visual Studio e crie um novo aplicativo de console .NET:
- Selecione Criar um novo projeto na janela inicial do Visual Studio 2022.
- Selecione o modelo de projeto Aplicativo de console C#.
- Altere o nome do projeto para
myMLApp
. - Certifique-se de que Colocar solução e projeto no mesmo diretório esteja desmarcado.
- Selecione o botão Avançar.
- Selecione .NET 8.0 (suporte a longo prazo) como o Framework.
- Selecione o botão Criar. O Visual Studio cria seu projeto e carrega o arquivo
Program.cs
.
Adicionar aprendizado de máquina
Clique com o botão direito do mouse no projeto
myMLApp
no Gerenciador de Soluções e selecione Adicionar > Modelo de Machine Learning.- No diálogo Adicionar Novo Item, certifique-se que Modelo de machine learning (ML.NET) está selecionado.
Altere o campo Nome para
SentimentModel.mbconfig
e selecione o botão Adicionar.
Um novo arquivo chamado SentimentModel.mbconfig
é adicionado à sua solução e a interface do usuário do Model Builder abre em uma nova janela de ferramentas encaixada no Visual Studio. O arquivo mbconfig é simplesmente um arquivo JSON que acompanha o estado da interface do usuário.
O Model Builder orientará você pelo processo de criação de um modelo de machine learning nas etapas a seguir.
Em seu terminal, execute os seguintes comandos:
mkdir myMLApp
cd myMLApp
O comando mkdir
cria um novo diretório chamado myMLApp
, e o comando cd myMLApp
coloca você no diretório de aplicativos recém-criado.
O código de treinamento do modelo será gerado nas próximas etapas.
Escolher um cenário
Para gerar seu modelo, primeiro você precisa selecionar seu cenário de aprendizado de máquina. O Model Builder dá suporte a vários cenários:
nota: Se as capturas de tela do tutorial não corresponderem ao que você vê, talvez seja necessário atualizar sua versão do Model Builder. Vá para Extensões > Gerenciar Extensões para garantir que não haja atualizações disponíveis para o Construtor de Modelos. A versão usada neste tutorial é 17.18.2.
Nesse caso, você preverá o sentimento com base no conteúdo (texto) das revisões do cliente.
-
Na tela Cenário do Model Builder, selecione o cenário Classificação de dados, já que você está prevendo em qual categoria um comentário se enquadra (positivo ou negativo).
-
Depois de selecionar o cenário Classificação de dados, você deve escolher seu ambiente de treinamento. Embora alguns cenários deem suporte ao treinamento no Azure, a Classificação atualmente dá suporte apenas ao treinamento local, portanto, mantenha o ambiente Local selecionado e vá para o passo Dados.
Para gerar seu modelo, você precisa de selecionar seu cenário de aprendizado de máquina.
Há vários cenários de ML que são suportados pelo ML.NET CLI:
- Classificação - Use isso quando quiser prever a qual categoria os dados pertencem (por exemplo, analisar os sentimentos das revisões do cliente como positivas ou negativas).
- Classificação de imagem: use quando desejar prever a qual categoria uma imagem pertence (por exemplo, para prever se uma imagem é de um gato ou de um cachorro).
- Regressão (por exemplo, previsão de valor) - Use isso quando desejar prever um valor numérico (por exemplo, prever o preço da casa).
- Previsão - use isso quando quiser prever valores futuros em uma série temporal (por exemplo, previsão de vendas trimestral).
- Recomendação-use-o quando desejar recomendar itens aos usuários com base nas classificações históricas (por exemplo, recomendação do produto).
Nesse caso, você preverá o sentimento com base no conteúdo (texto) das revisões do cliente, portanto, você usará classificação.
Baixar e adicionar dados
Baixe o Conjuntos de dados de frases rotuladas por reconhecimento do UCI. Descompacte sentiment labelled sentences.zip
e salve o arquivo yelp_labelled.txt
no diretório myMLApp
.
Seu Gerenciador de Soluções deve ser semelhante ao seguinte:
Cada linha em yelp_labelled.txt
representa uma análise diferente de um restaurante deixada por um usuário no Yelp. A primeira coluna representa o comentário deixado pelo usuário e a segunda coluna representa o sentimento do texto (0 é negativo, 1 é positivo). As colunas são separadas por guias, e o conjunto de dados não tem cabeçalho. Os dados se parecem com o seguinte:
Wow... Loved this place. 1
Crust is not good. 0
Not tasty and the texture was just nasty. 0
Adicionar dados
No Model Builder, você pode adicionar dados de um arquivo local ou conectar-se a um banco de dados do SQL Server. Nesse caso, você adicionará yelp_labelled.txt
de um arquivo.
Selecione Arquivo como o tipo de fonte de dados de entrada.
Procure
yelp_labelled.txt
. Depois de selecionar o conjunto de dados, uma visualização dos dados será exibida na seção Visualização de Dados. Como o conjunto de dados não tem um cabeçalho, os cabeçalhos são gerados automaticamente ("col0" e "col1").Em coluna para prever (Rótulo) , selecione "col1". O Rótulo é o que você está prevendo, que, nesse caso, é o sentimento encontrado na segunda coluna ("col1") do conjunto de dados.
As colunas usadas para prever o Rótulo são chamadas de Funcionalidade. Todas as colunas do conjunto de dados, exceto o Rótulo, são automaticamente selecionadas como Funcionalidades. Neste caso, a coluna de comentários de revisão ("col0") é a coluna de Funcionalidade. Você pode atualizar a coluna de Funcionalidade e modificar outras opções de carregamento de dados nas Opções de dados avançados, mas isto não é necessário para este exemplo.
Depois de adicionar seus dados, vá para a etapa Treinar.
Treinar seu modelo
Agora, você treinará seu modelo com o conjunto de dados yelp_labelled.txt
.
O Model Builder avalia muitos modelos com configurações e algoritmos variados com base na quantidade de tempo de treinamento fornecido para criar o modelo com melhor desempenho.
Altere o Tempo para treinar, que é a quantidade de tempo que você gostaria que o Model Builder explorasse vários modelos, para 60 segundos (você pode tentar aumentar esse número se nenhum modelo for encontrado após o treinamento). Observe que para os conjuntos de dados maiores, o tempo de treinamento será maior. O Model Builder ajusta automaticamente o tempo de treinamento com base no tamanho do conjunto de dados.
Você pode atualizar a métrica de otimização e os algoritmos usados em Opções de treinamento avançadas, mas isso não é necessário para esse exemplo.
Selecione inciar treinamento para iniciar o processo de treinamento. Depois que o treinamento for iniciado, você poderá ver o tempo restante.
Resultados do treinamento
Quando o treinamento for concluído, você poderá ver um resumo dos resultados de treinamento.
- Best MacroAccuracy - Mostra a precisão do melhor modelo encontrado pelo Model Builder. Maior precisão significa que o modelo previu mais corretamente nos dados de teste.
- Melhor modelo - isto mostra qual algoritmo teve o melhor desempenho durante a exploração do Model Builder.
- Tempo de treinamento – Isso mostra a quantidade total de tempo gasto no treinamento/exploração de modelos.
- Modelos explorados (total) - isto mostra o número total de modelos explorados pelo Model Builder em um determinado período de tempo.
- Generated code-behind - Mostra os nomes dos arquivos gerados para ajudar a consumir o modelo ou treinar um novo modelo.
Se desejar, você pode exibir mais informações sobre a sessão de treinamento na janela de saída de Machine Learning.
Após a conclusão do treinamento do modelo, vá para a etapa Avaliar.
No seu terminal, execute o seguinte comando (em sua myMLApp
pasta):
mlnet classification --dataset "yelp_labelled.txt" --label-col 1 --has-header false --name SentimentModel --train-time 60
O que esses comandos significam?
O comando mlnet classification
executa o ML.NET com AutoML para explorar muitas iterações de modelos de classificação no tempo de treinamento especificado com combinações variáveis de transformações de dados, algoritmos e opções de algoritmo e, em seguida, escolhe o modelo com o maior desempenho.
- --dataset: Você escolheu
yelp_labelled.txt
como o conjunto de dados (internamente, a CLI dividirá o conjunto de dados em conjuntos de dados de treinamento e teste). - --label-col: Especifique a coluna de destino que deseja prever (ou o rótulo). Nesse caso, você deseja prever o sentimento na segunda coluna (colunas indexadas com zero significa que esta é a coluna "1").
- --has-header: Use esta opção para especificar se o conjunto de dados tem um cabeçalho. Nesse caso, o conjunto de dados não tem um cabeçalho, portanto, ele é falso.
- --name: Use esta opção para fornecer um nome para seu modelo de machine learning e ativos relacionados. Neste caso, todos os ativos associados a este modelo de machine learning terão SentimentModel no nome.
- --train-time: Você também deve especificar o período de tempo que você gostaria que a CLI do ML.NET explorasse diferentes modelos. Nesse caso, 60 segundos (você pode tentar aumentar este número se nenhum modelo for encontrado após o treinamento). Observe que para conjuntos de dados maiores, você deve definir um tempo de treinamento mais longo.
Andamento
Enquanto a CLI do ML.NET está explorando modelos diferentes, ela exibe os seguintes dados:
- Iniciar treinamento - Esta seção mostra cada iteração de modelo, incluindo o treinador (algoritmo) usado e as métricas de avaliação para essa iteração.
- Tempo restante – Isso e a barra de progresso indicarão quanto tempo resta no processo de treinamento em segundos.
- Melhor algoritmo-mostra qual algoritmo executou melhor até agora.
- Melhor pontuação – Isso mostra o desempenho do melhor modelo até o momento. Maior precisão significa que o modelo previu mais corretamente nos dados de teste.
Se desejar, você pode exibir mais informações sobre a sessão de treinamento no arquivo de log gerado pela CLI.
Avaliar seu modelo
A etapa Avaliar mostra o algoritmo de melhor desempenho e a melhor precisão e permite experimentar o modelo na interface do usuário.
Experimente seu modelo
Você pode fazer previsões na entrada de amostras na seção Experimente seu modelo. A caixa de texto é pré-preenchida com a primeira linha de dados do seu conjunto de dados, mas você pode alterar a entrada e selecionar o botão Previsão para experimentar previsões de sentimento diferentes.
Nesse caso, 0 significa um sentimento negativo e 1 significa um sentimento positivo.
Observação: se o seu modelo não estiver funcionando bem (por exemplo, se a precisão for baixa ou se o modelo prever apenas valores “1”), tente adicionar mais tempo e treinar novamente. Este exemplo usa um conjunto de dados muito pequeno; para modelos de nível de produção, talvez você queira adicionar muito mais dados e tempo de treinamento.
Após avaliar e experimentar o modelo, vá para a etapa Consumir.
Depois que a CLI do ML.NET selecionar o melhor modelo, ela exibirá o resumo de treinamento, que mostra um resumo do processo de exploração, incluindo quantos modelos foram explorados no tempo de treinamento especificado.
Principais modelos
Embora a CLI do ML.NET gere código para o modelo de melhor desempenho, ela também exibe os modelos superiores (até 5) com a precisão mais alta que encontrou no tempo de exploração especificado. Ela exibe várias métricas de avaliação dos principais modelos, incluindo AUC, AUPRC e medida f. Para obter mais informações, confira métricas do ML.NET.
Gerar código
Após a conclusão do treinamento, quatro arquivos serão automaticamente adicionados como code-behind ao SentimentModel.mbconfig
:
SentimentModel.consumption.cs
: este arquivo contém as classes de modelo de entrada e saída e um método dePredict
que pode ser usado para o consumo de modelos.SentimentModel.evaluate.cs
: esse arquivo contém um métodoCalculatePFI
que usa a técnica de Importância do Recurso de Permutação (PFI) para avaliar quais recursos contribuem mais para as previsões de modelo.SentimentModel.mlnet
: Este arquivo é o modelo ML.NET treinado, que é um arquivo zip serializado.SentimentModel.training.cs
: Esse arquivo contém o código para entender a importância que as colunas de entrada têm em suas previsões de modelo.
Na etapa Consumir no Model Builder, é fornecido um trecho de código que cria uma entrada de exemplo para o modelo e usa o modelo para fazer uma previsão nessa entrada.
O Model Builder também oferece Modelos de projeto que você pode adicionar opcionalmente à sua solução. Há dois modelos de projeto (um aplicativo de console e uma API Web), ambos consomem o modelo treinado.
A CLI do ML.NET adiciona o modelo de machine learning e o código para treinamento e consumo do modelo, o que inclui o seguinte:
-
Um novo diretório chamado SentimentModel foi criado contendo um aplicativo de console .NET que inclui os seguintes arquivos:
Program.cs
: este arquivo contém o código para executar o modelo.SentimentModel.consumption.cs
: este arquivo contém as classes de modelo de entrada e saída e um método dePredict
que pode ser usado para o consumo de modelos.SentimentModel.mbconfig
: este arquivo é um arquivo JSON que mantém o controle das configurações e dos resultados do seu treinamento.SentimentModel.training.cs
: este arquivo contém o pipeline de treinamento (transformações de dados, algoritmo e parâmetros de algoritmo) usado para treinar o modelo final.SentimentModel.zip
: este arquivo é o modelo ML.NET treinado, que é um arquivo zip serializado.
Para tentar o modelo, você pode executar o aplicativo de console para prever o sentimento de uma única instrução com o modelo.
Consumir seu modelo
A última etapa é consumir seu modelo treinado no aplicativo do usuário final.
-
Substitua o código
Program.cs
em seu projetomyMLApp
com o seguinte código:Program.csusing MyMLApp; // Add input data var sampleData = new SentimentModel.ModelInput() { Col0 = "This restaurant was wonderful." }; // Load model and predict output of sample data var result = SentimentModel.Predict(sampleData); // If Prediction is 1, sentiment is "Positive"; otherwise, sentiment is "Negative" var sentiment = result.PredictedLabel == 1 ? "Positive" : "Negative"; Console.WriteLine($"Text: {sampleData.Col0}\nSentiment: {sentiment}");
-
Execute
myMLApp
(selecione Ctrl+F5 ou Depuração > Iniciar sem depuração). Você deve ver a saída a seguir, prevendo se a instrução de entrada é positiva ou negativa.
A CLI do ML.NET gerou o modelo e o código treinados para você, portanto, agora você pode usar o modelo em aplicativos .NET (por exemplo, seu aplicativo de console SentimentModel
) seguindo estas etapas:
- Na linha de comando, navegue até o diretório
consumeModelApp
.Command promptcd SentimentModel
-
Abra o
Program.cs
em qualquer editor de código e inspecione o código. O código deve ser semelhante ao seguinte:Program.csusing System; namespace SentimentModel.ConsoleApp { class Program { static void Main(string[] args) { // Add input data SentimentModel.ModelInput sampleData = new SentimentModel.ModelInput() { Col0 = @"Wow... Loved this place." }; // Make a single prediction on the sample data and print results var predictionResult = SentimentModel.Predict(sampleData); Console.WriteLine("Using model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data...\n\n"); Console.WriteLine($"Col0: @{"Wow... Loved this place."}"); Console.WriteLine($"Col1: {1F}"); Console.WriteLine($"\n\nPredicted Col1: {predictionResult.PredictedLabel}\n\n"); Console.WriteLine("=============== End of process, hit any key to finish ==============="); Console.ReadKey(); } } }
-
Execute seu
SentimentModel.ConsoleApp
. Você pode fazer isso executando o comando a seguir no terminal (verifique se você está no diretórioSentimentModel
):Command promptdotnet run
A saída deve ser algo parecido com isto:
Command promptUsing model to make single prediction -- Comparing actual Col1 with predicted Col1 from sample data... Col0: Wow... Loved this place. Col1: 1 Class Score ----- ----- 1 0.9651076 0 0.034892436 =============== End of process, hit any key to finish ===============
Próximas etapas
Parabéns, você criou seu primeiro modelo de machine learning com o ML.NET Model Builder!
Agora que você tem as noções básicas, continue com isso com o módulo de aprendizado autoguiado no Microsoft Learn, em que você usará os dados do sensor para detectar se um dispositivo de fabricação está quebrado.
Microsoft Learn: Treine um modelo de manutenção preditiva
ML.NET para iniciantes
Deixe o Luis apresentar a você os conceitos de aprendizado de máquina e IA, explicar o que você pode fazer com eles e guiar você sobre como começar a usar o OpenAI, os Serviços de IA do Azure e o ML.NET:
Você também pode estar interessado em...
Parabéns, você criou seu primeiro modelo de machine learning com a CLI do ML.NET!
Agora que você usou o ML.NET CLI para Classificação (especificamente análise de sentimentos), você pode tentar outros cenários. Experimente um cenário de regressão (especificamente previsão de preço) usando o conjunto de dados de Valor do Táxi para continuar compilando modelos de ML.NET com o ML.NET CLI.
Baixar o conjunto de dados tarifas de táxi
ML.NET para iniciantes
Deixe o Luis apresentar a você o conceito de aprendizado de máquina e IA, explicar o que você pode fazer com ele e guiar você sobre como começar a usar o OpenAI, os Serviços de IA do Azure e o ML.NET:
Você também pode estar interessado em...