O comando 'auto-train' no ML.NETThe 'auto-train' command in ML.NET CLI

Observação

Este tópico refere-se à CLI do ML.NET e ao AutoML do ML.NET, que estão atualmente em Versão Prévia. O material pode estar sujeito a alterações.This topic refers to ML.NET CLI and ML.NET AutoML, which are currently in Preview, and material may be subject to change.

O comando auto-train é o principal comando fornecido pela ferramenta de CLI do ML.NET.The auto-train command is the main command provided by the ML.NET CLI tool. O comando permite que você gere um modelo do ML.NET de boa qualidade (arquivo zip de modelo serializado) mais o código C# de exemplo para executar/pontuar esse modelo.The command allows you to generate a good quality ML.NET model (serialized model .zip file) plus the example C# code to run/score that model. Além disso, o código C# para criar/treinar esse modelo também é gerado para que você possa pesquisar qual algoritmo e configurações ele está usando para esse "melhor modelo" gerado.In addition, the C# code to create/train that model is also generated for you to research what algorithm and settings it is using for that generated "best model".

Você pode gerar esses ativos de seus próprios conjuntos de dados sem codificação por conta própria, portanto, ele também melhorará a sua produtividade, mesmo se você já conhecer o ML.NET.You can generate those assets from your own datasets without coding by yourself, so it also improves your productivity even if you already know ML.NET.

Atualmente, as tarefas de ML compatíveis com a CLI do ML.NET são:Currently, the ML Tasks supported by the ML.NET CLI are:

  • binary-classification

  • multiclass-classification

  • regression

  • Futuro: Outra tarefas aprendizado de máquina, tais comoFuture: Other machine learning tasks, such as

    • recommendation
    • anomaly-detection
    • clustering

Exemplo de uso no prompt de comando:Example of usage on the command prompt:

> mlnet auto-train --task regression --dataset "cars.csv" --label-column-name price

O comando mlnet auto-train gera os seguintes ativos:The mlnet auto-train command generates the following assets:

  • Um modelo serializado. zip ("melhor modelo") pronto para uso.A serialized model .zip ("best model") ready to use.
  • Código C# para a execução/pontuação que gerou o modelo (para fazer previsões em seus aplicativos do usuário final com esse modelo).C# code to run/score that generated model (To make predictions in your end-user apps with that model).
  • Código C# com o código de treinamento usado para gerar esse modelo (fins de aprendizado).C# code with the training code used to generate that model (Learning purposes).

Os primeiros dois ativos podem ser usados diretamente em seus aplicativos de usuário final (aplicativo Web ASP.NET Core, serviços, aplicativo da área de trabalho etc.) para fazer previsões com esse modelo de ML gerado.The first two assets can directly be used in your end-user apps (ASP.NET Core web app, services, desktop app, etc.) to make predictions with that generated ML model.

O terceiro ativo, o código de treinamento, mostra o que o código de API do ML.NET foi usado pela CLI para treinar o modelo gerado, portanto, você pode investigar quais treinador/algoritmo e hiperparâmetros específicos foram selecionados pela CLI e pelo mecanismo de AutoML do ML.NET.The third asset, the training code, shows you what ML.NET API code was used by the CLI to train the generated model, so you can investigate what specific trainer/algorithm and hyper-parameters were selected by the CLI and the ML.NET AutoML engine.

O comando 'auto-train' usa o mecanismo de AutoMLThe 'auto-train' command uses the AutoML engine

A CLI usa o mecanismo de AutoML do ML.NET (pacote do NuGet) para pesquisar com inteligência para os modelos de melhor qualidade, conforme mostrado no diagrama a seguir:The CLI uses the ML.NET AutoML engine (NuGet package) to intelligently search for the best quality models, as shown in the following diagram:

imagemimage

Ao executar a ferramenta de CLI do ML.NET com o comando 'auto-train', você verá a ferramenta tentar muitas iterações com algoritmos e combinações de configuração diferentes.When running the ML.NET CLI tool with the `auto-train- command, you'll see the tool trying many iterations with different algorithms and combinations of configuration.

Referência do comando 'auto-train'Reference for 'auto-train' command

ExemplosExamples

Comando mais simples da CLI para um problema de classificação binária (o AutoML precisará inferir a maior parte da configuração dos dados fornecidos):Simplest CLI command for a binary classification problem (AutoML will need to infer most of the configuration from the provided data):

> mlnet auto-train --task binary-classification --dataset "customer-feedback.tsv" --label-column-name Sentiment

Outro comando simples da CLI para um problema de regressão:Another simple CLI command for a regression problem:

> mlnet auto-train --task regression --dataset "cars.csv" --label-column-name Price

Crie e treine um modelo de classificação binária com um conjunto de dados de treinamento, um conjunto de dados de teste e ainda mais argumentos explícitos de personalização:Create and train a binary-classification model with a train dataset, a test dataset, and further customization explicit arguments:

> mlnet auto-train --task binary-classification --dataset "/MyDataSets/Population-Training.csv" --test-dataset "/MyDataSets/Population-Test.csv" --label-column-name "InsuranceRisk" --cache on --max-exploration-time 600

NomeName

mlnet auto-train – Treina vários modelos ('n' iterações) com base no conjunto de dados fornecido e, finalmente, seleciona o melhor modelo, salva-o como um arquivo zip serializado e gera o código C# relacionado para pontuação e treinamento.mlnet auto-train - Trains multiple models ('n' iterations) based on the provided dataset and finally selects the best model, saves it as a serialized .zip file plus generates related C# code for scoring and training.

SinopseSynopsis

> mlnet auto-train

--task | --mltask | -T <value>

--dataset | -d <value>

[
 [--validation-dataset | -v <value>]
  --test-dataset | -t <value>
]

--label-column-name | -n <value>
|
--label-column-index | -i <value>

[--ignore-columns | -I <value>]

[--has-header | -h <value>]

[--max-exploration-time | -x <value>]

[--verbosity | -V <value>]

[--cache | -c <value>]

[--name | -N <value>]

[--output-path | -o <value>]

[--help | -h]

Opções de entrada inválidas devem fazer com que a ferramenta de CLI emita uma lista de entradas válidas e uma mensagem de erro explicando qual argumento está ausente, se esse for o caso.Invalid input options should cause the CLI tool to emit a list of valid inputs and an error message explaining which arg is missing, if that is the case.

OpçõesOptions


--task | --mltask | -T (string)--task | --mltask | -T (string)

Uma única cadeia de caracteres fornecendo o problema de ML a resolver.A single string providing the ML problem to solve. Por exemplo, qualquer uma das tarefas a seguir (a CLI eventualmente dará suporte a todas as tarefas compatíveis com o AutoML):For instance, any of the following tasks (The CLI will eventually support all tasks supported in AutoML):

  • regression – escolha se o modelo do ML será usado para prever um valor numéricoregression - Choose if the ML Model will be used to predict a numeric value
  • binary-classification – escolha se o resultado do modelo de ML terá dois valores boolianos categóricos possíveis (0 ou 1).binary-classification - Choose if the ML Model result has two possible categorical boolean values (0 or 1).
  • multiclass-classification – escolha se o resultado do modelo de ML terá vários valores boolianos categóricos possíveis.multiclass-classification - Choose if the ML Model result has multiple categorical possible values.

Em versões futuras, tarefas de ML e cenários como recommendations, clustering e ranking serão compatíveis.In future releases additional ML Tasks and scenarios such as recommendations, clustering and ranking will be supported.

Uma tarefa de ML deve ser fornecida neste argumento.Only one ML task should be provided in this argument.


--dataset | -d (string)--dataset | -d (string)

Esse argumento fornece o caminho do arquivo para uma das seguintes opções:This argument provides the filepath to either one of the following options:

  • A: O arquivo de conjunto de dados inteiro: Se essa opção for usada e o usuário não estiver fornecendo --test-dataset e --validation-dataset, as abordagens de validação cruzada (k vezes etc.) ou de divisão de dados automatizada serão usadas internamente para validar o modelo.A: The whole dataset file: If using this option and the user is not providing --test-dataset and --validation-dataset, then cross-validation (k-fold, etc.) or automated data split approaches will be used internally for validating the model. Nesse caso, o usuário precisará apenas fornecer o caminho do arquivo do conjunto de dados.In that case, the user will just need to provide the dataset filepath.

  • B: O arquivo de conjunto de dados de treinamento: Se o usuário também estiver fornecendo conjuntos de dados para a validação de modelo (usando --test-dataset e, opcionalmente --validation-dataset), então o argumento --dataset significará ter apenas o "conjunto de dados de treinamento".B: The training dataset file: If the user is also providing datasets for model validation (using --test-dataset and optionally --validation-dataset), then the --dataset argument means to only have the "training dataset". Por exemplo, ao usar uma abordagem de 80-20% para validar a qualidade do modelo e obter métricas de precisão, o "conjunto de dados treinamento" terá 80% dos dados e o "conjunto de dados de teste" terá 20% dos dados.For example, when using an 80% - 20% approach to validate the quality of the model and to obtain accuracy metrics, the "training dataset" will have 80% of the data and the "test dataset" would have 20% of the data.


--test-dataset | -t (string)--test-dataset | -t (string)

Caminho do arquivo que aponta para o arquivo de conjunto de dados de teste, por exemplo, ao usar uma abordagem de 80-20% ao realizar validações regulares para obter métricas de precisão.File path pointing to the test dataset file, for example when using an 80% - 20% approach when making regular validations to obtain accuracy metrics.

Ao usar --test-dataset, --dataset também é necessária.If using --test-dataset, then --dataset is also required.

O argumento --test-dataset é opcional, a menos que o --validation-dataset seja usado.The --test-dataset argument is optional unless the --validation-dataset is used. Nesse caso, o usuário precisa usar os três argumentos.In that case, the user must use the three arguments.


--validation-dataset | -v (string)--validation-dataset | -v (string)

Caminho do arquivo apontando para o arquivo de conjunto de dados de validação.File path pointing to the validation dataset file. O conjunto de dados de validação é opcional em qualquer caso.The validation dataset is optional, in any case.

Se usar um validation dataset, o comportamento deverá ser:If using a validation dataset, the behavior should be:

  • Os argumentos test-dataset e --dataset também são necessários.The test-dataset and --dataset arguments are also required.

  • O conjunto de dados validation-dataset é usado para estimar o erro de previsão para a seleção de modelo.The validation-dataset dataset is used to estimate prediction error for model selection.

  • O test-dataset é usado para a avaliação do erro de generalização do modelo final escolhido.The test-dataset is used for assessment of the generalization error of the final chosen model. O ideal é que o conjunto de teste seja mantido em um "cofre" e seja levado somente no final da análise de dados.Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.

Basicamente, ao usar um validation dataset mais o test dataset, a fase de validação é dividida em duas partes:Basically, when using a validation dataset plus the test dataset, the validation phase is split into two parts:

  1. Na primeira parte, você apenas examina seus modelos e seleciona a abordagem com melhor desempenho usando os dados de validação (=validation)In the first part, you just look at your models and select the best performing approach using the validation data (=validation)
  2. Em seguida, você pode estimar a precisão da abordagem selecionada (=test).Then you estimate the accuracy of the selected approach (=test).

Portanto, a separação dos dados pode ser 80/10/10 ou 75/15/10.Hence, the separation of data could be 80/10/10 or 75/15/10. Por exemplo:For example:

  • O arquivo training-dataset deve ter 75% dos dados.training-dataset file should have 75% of the data.
  • O arquivo validation-dataset deve ter 15% dos dados.validation-dataset file should have 15% of the data.
  • O arquivo test-dataset deve ter 10% dos dados.test-dataset file should have 10% of the data.

Em qualquer caso, essas porcentagens serão decididas pelo usuário usando a CLI que fornecerá os arquivos já dividido.In any case, those percentages will be decided by the user using the CLI who will provide the files already split.


--label-column-name | -n (string)--label-column-name | -n (string)

Com este argumento, uma coluna de destino/objetivo específica (a variável que você deseja prever) pode ser especificada usando o nome da coluna definido no cabeçalho do conjunto de dados.With this argument, a specific objective/target column (the variable that you want to predict) can be specified by using the column's name set in the dataset's header.

Esse argumento é usado somente para tarefas de ML supervisionadas, tais como um problema de classificação.This argument is used only for supervised ML tasks such as a classification problem. Ele não pode ser usado para tarefas de ML sem supervisão, tais como clustering.It cannot be used for unsupervised ML Tasks such as clustering.


--label-column-index | -i (int)--label-column-index | -i (int)

Com este argumento, uma coluna de destino/objetivo específico (a variável que você deseja prever) pode ser especificada usando o índice numérico da coluna no arquivo do conjunto de dados (os valores de coluna de índice começam em 1).With this argument, a specific objective/target column (the variable that you want to predict) can be specified by using the column's numeric index in the dataset's file (The column index values start at 1).

Observação: Se o usuário também estiver usando o --label-column-name, o --label-column-name será aquele sendo usado.Note: If the user is also using the --label-column-name, the --label-column-name is the one being used.

Esse argumento é usado apenas para a tarefa de ML supervisionada, tal como um problema de classificação.This argument is used only for supervised ML task such as a classification problem. Ele não pode ser usado para tarefas de ML sem supervisão, tais como clustering.It cannot be used for unsupervised ML Tasks such as clustering.


--ignore-columns | -I (string)--ignore-columns | -I (string)

Com este argumento, você pode ignorar as colunas existentes no arquivo de conjunto de dados para que elas não sejam carregadas e usadas pelos processos de treinamento.With this argument, you can ignore existing columns in the dataset file so they are not loaded and used by the training processes.

Especifique os nomes de colunas que você deseja ignorar.Specify the columns names that you want to ignore. Use ',' (vírgula com espaço) ou ' ' (espaço) para separar vários nomes de coluna.Use ', ' (comma with space) or ' ' (space) to separate multiple column names. Você pode usar aspas para nomes de coluna que contêm espaço em branco (por exemplo, "usuário logado").You can use quotes for column names containing whitespace (e.g. "logged in").

Exemplo:Example:

--ignore-columns email, address, id, logged_in


--has-header | -h (bool)--has-header | -h (bool)

Especifique se os arquivos de conjunto de dados têm uma linha de cabeçalho.Specify if the dataset file(s) have a header row. Os possíveis valores são:Possible values are:

  • true
  • false

O valor padrão será true se esse argumento não for especificado pelo usuário.The by default value is true if this argument is not specified by the user.

Para usar o argumento --label-column-name, você precisa ter um cabeçalho no arquivo de conjunto de dados e --has-header definido como true (o que ocorre por padrão).In order to use the --label-column-name argument, you need to have a header in the dataset file and --has-header set to true (which is by default).


--max-exploration-time | -x (string)--max-exploration-time | -x (string)

Por padrão, o tempo máximo de exploração é de 30 minutos.By default, the maximum exploration time is 30 minutes.

Esse argumento define o tempo máximo (em segundos) para o processo explorar vários treinadores e configurações.This argument sets the maximum time (in seconds) for the process to explore multiple trainers and configurations. O tempo configurado poderá ser excedido se o tempo fornecido for muito curto (digamos, dois segundos) para uma única iteração.The configured time may be exceeded if the provided time is too short (say 2 seconds) for a single iteration. Nesse caso, o tempo real é o tempo necessário para produzir uma configuração de modelo em uma única iteração.In this case, the actual time is the required time to produce one model configuration in a single iteration.

O tempo necessário para iterações pode variar, dependendo do tamanho do conjunto de dados.The needed time for iterations can vary depending on the size of the dataset.


--cache | -c (string)--cache | -c (string)

Se você usar o armazenamento em cache, o conjunto de dados de treinamento inteiro será carregado na memória.If you use caching, the whole training dataset will be loaded in-memory.

Para conjuntos de dados pequenos e médios, usar o cache pode melhorar drasticamente o desempenho de treinamento, o que significa que o tempo de treinamento pode ser menor do que quando você não usa o cache.For small and medium datasets, using cache can drastically improve the training performance, meaning the training time can be shorter than when you don't use cache.

No entanto, para grandes conjuntos de dados, carregar todos os dados na memória pode ter um efeito negativo, pois você poderá ficar com memória insuficiente.However, for large datasets, loading all the data in memory can impact negatively since you might get out of memory. Ao treinar com arquivos de conjunto de dados grandes sem usar o cache, o ML.NET transmitirá partes de dados da unidade quando ele precisar carregar mais dados durante o treinamento.When training with large dataset files and not using cache, ML.NET will be streaming chunks of data from the drive when it needs to load more data while training.

Você pode especificar os seguintes valores:You can specify the following values:

on: Força o cache a ser usado durante o treinamento.on: Forces cache to be used when training. off: Força o cache a não ser usado durante o treinamento.off: Forces cache not to be used when training. auto: Dependendo da heurística de AutoML, o cache será usado ou não.auto: Depending on AutoML heuristics, the cache will be used or not. Em geral, conjuntos de dados pequenos/médios usarão o cache e grandes conjuntos de dados não usarão o cache se você usar a escolha auto.Usually, small/medium datasets will use cache and large datasets won't use cache if you use the auto choice.

Se você não especificar o parâmetro --cache, a configuração de cache auto será usada por padrão.If you don't specify the --cache parameter, then the cache auto configuration will be used by default.


--name | -N (string)--name | -N (string)

O nome para a solução ou projeto de saída criado.The name for the created output project or solution. Se nenhum nome for especificado, o nome sample-{mltask} será usado.If no name is specified, the name sample-{mltask} is used.

O arquivo de modelo do ML.NET (arquivo zip) também receberá o mesmo nome.The ML.NET model file (.ZIP file) will get the same name, as well.


--output-path | -o (string)--output-path | -o (string)

Local/pasta raiz para colocar a saída gerada.Root location/folder to place the generated output. O padrão é o diretório atual.The default is the current directory.


--verbosity | -V (string)--verbosity | -V (string)

Define o nível de detalhamento da saída padrão.Sets the verbosity level of the standard output.

Os valores permitidos são:Allowed values are:

  • q[uiet]
  • m[inimal] (por padrão)m[inimal] (by default)
  • diag[nostic] (nível de informações de registro em log)diag[nostic] (logging information level)

Por padrão, a ferramenta da CLI deve mostrar alguns comentários mínimos (mínimo) quando estiver funcionando, por exemplo, mencionar que ela está funcionando e, se possível, quanto tempo falta ou que percentual do tempo foi concluído.By default, the CLI tool should show some minimum feedback (minimal) when working, such as mentioning that it is working and if possible how much time is left or what % of the time is completed.


-h|--help

Imprime uma ajuda para o comando com uma descrição para o parâmetro de cada comando.Prints out help for the command with a description for each command's parameter.


Consulte tambémSee also