Compartilhar via


Treinar modelos scikit-learn em escala com Azure Machine Learning (SDK v1)

APLICA-SE A:Azure Machine Learning SDK v1 para Python

Importante

Este artigo fornece informações sobre como usar o SDK do Azure Machine Learning v1. O SDK v1 foi preterido a partir de 31 de março de 2025. O suporte para ele terminará em 30 de junho de 2026. Você pode instalar e usar o SDK v1 até essa data. Seus fluxos de trabalho existentes usando o SDK v1 continuarão a operar após a data de fim do suporte. No entanto, eles podem ficar expostos a riscos de segurança ou a alterações interruptivas em caso de mudanças na arquitetura do produto.

Recomendamos que você faça a transição para o SDK v2 antes de 30 de junho de 2026. Para obter mais informações sobre o SDK v2, consulte O que é Azure Machine Learning CLI e Python SDK v2? e a referência SDK v2.

Neste artigo, saiba como executar seus scripts de treinamento scikit-learn com Azure Machine Learning.

Os scripts de exemplo neste artigo são usados para classificar imagens de flor de íris para criar um modelo de machine learning com base no conjuntos de dados íris do scikit-learn.

Se você estiver treinando um modelo de scikit-learn de aprendizado de máquina do zero ou estiver trazendo um modelo existente para a nuvem, poderá usar Azure Machine Learning para expandir os trabalhos de treinamento de software livre usando recursos de computação em nuvem elástica. Você pode criar, implantar, versão e monitorar modelos de nível de produção com Azure Machine Learning.

Pré-requisitos

Você pode executar esse código em uma instância de computação Azure Machine Learning ou em seu próprio Jupyter Notebook:

  • Instância de Computação do Azure Machine Learning

    • Conclua o Quickstart: Introdução ao Azure Machine Learning para criar uma instância de computação. Cada instância de computação inclui um servidor de notebook dedicado pré-carregado com o SDK e o repositório de amostra de notebooks.
    • Selecione a guia Notebook no Azure Machine Learning Studio. Na pasta de exemplos de treinamento, encontre um documento concluído e expandido navegando até este diretório: pasta how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn.
    • Você pode usar o código pré-preenchido na pasta de treinamento de amostra para concluir este tutorial.
  • Crie um servidor Jupyter Notebook e execute o código nas seções a seguir.

Configurar o experimento

Esta seção configura o experimento de treinamento carregando os pacotes de Python necessários, inicializando um workspace, definindo o ambiente de treinamento e preparando o script de treinamento.

Inicializar um workspace

O workspace Azure Machine Learning é o recurso de nível superior para o serviço. Ele fornece um local centralizado para trabalhar com todos os artefatos que você criar. No SDK do Python, você pode acessar os artefatos do workspace criando um objeto workspace.

Crie um objeto de espaço de trabalho a partir do config.jsonarquivo criado na seção de pré-requisitos.

from azureml.core import Workspace

ws = Workspace.from_config()

Preparar scripts

Neste tutorial, o script training train_iris.py já está fornecido para você. Na prática, você deve ser capaz de usar qualquer script de treinamento personalizado como está e executá-lo com Azure Machine Learning sem precisar modificar seu código.

Observação

  • O script de treinamento fornecido mostra como registrar algumas métricas em seu Azure Machine Learning executado usando o objeto Run dentro do script.
  • O script de treinamento fornecido usa dados de exemplo da função iris = datasets.load_iris(). Para usar e acessar seus próprios dados, confira como treinar com conjuntos de dados para disponibilizar dados durante o treinamento.

Definir seu ambiente

Para definir o Azure Machine Learning Environment que encapsula as dependências do script de treinamento, você pode definir um ambiente personalizado ou usar um ambiente curado do Azure Machine Learning.

Usar o ambiente coletado

Opcionalmente, Azure Machine Learning fornece ambientes predefinidos curados se você não quiser definir seu próprio ambiente.

Se quiser usar um ambiente coletado, você pode executar o seguinte comando:

from azureml.core import Environment

sklearn_env = Environment.get(workspace=ws, name='AzureML-Tutorial')

Criar um ambiente personalizado

Você também pode criar seu próprio ambiente personalizado. Defina suas dependências do conda em um arquivo YAML. Neste exemplo, o arquivo é nomeado conda_dependencies.yml.

dependencies:
  - python=3.10
  - scikit-learn
  - numpy
  - pip:
    - azureml-defaults

Crie um ambiente Azure Machine Learning com base nessa especificação de ambiente conda. O ambiente será empacotado em um contêiner do Docker em tempo de execução.

from azureml.core import Environment

sklearn_env = Environment.from_conda_specification(name='sklearn-env', file_path='conda_dependencies.yml')

Para obter mais informações sobre como criar e usar ambientes, consulte Criar e usar ambientes de software em Azure Machine Learning.

Configurar e enviar execuções de treinamento

Criar um ScriptRunConfig

Crie um objeto ScriptRunConfig para especificar os detalhes da configuração de seu trabalho de treinamento, incluindo o script de treinamento, o ambiente a ser usado e o destino de computação para a execução. Todos os argumentos para seu script de treinamento serão passados por meio da linha de comando, se for especificado no parâmetro arguments.

O código a seguir configurará um objeto ScriptRunConfig para enviar seu trabalho para execução no computador local.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      environment=sklearn_env)

Se você quiser executar seu trabalho em um cluster remoto, poderá especificar o destino de computação desejado para o parâmetro compute_target do ScriptRunConfig.

from azureml.core import ScriptRunConfig

compute_target = ws.compute_targets['<my-cluster-name>']
src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      compute_target=compute_target,
                      environment=sklearn_env)

Enviar a execução

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-TrainIRIS').submit(src)
run.wait_for_completion(show_output=True)

Aviso

Azure Machine Learning executa scripts de treinamento copiando todo o diretório de origem. Se você tiver dados confidenciais que não quer carregar, use um arquivo .ignore ou não o inclua no diretório de origem. Em vez disso, acesse seus dados usando um Azure Machine Learning dataset.

O que acontece durante a execução

A execução dos trabalhos passa pelos seguintes estágios:

  • Preparação: uma imagem Docker é criada de acordo com o ambiente definido. A imagem é carregada no registro de contêiner do espaço de trabalho e armazenada em cache para execuções posteriores. Os logs também são transmitidos para o histórico de execuções e podem ser visualizados para monitorar o andamento. Mas se um ambiente coletado for especificado, a imagem armazenada em cache desse ambiente coletado é usada.

  • Dimensionamento: o cluster tenta escalar verticalmente se o cluster de IA do Lote exigir mais nós para a execução, além do que está disponível no momento.

  • Execução: todos os scripts na pasta de scripts são carregados para o destino de computação, os armazenamentos de dados são montados ou copiados e o script é executado. As saídas de stdout e a pasta ./logs são transmitidas para o histórico de execuções e podem ser usadas para o monitoramento.

  • Pós-processamento: a pasta ./outputs da execução é copiada para o histórico de execuções.

Salvar e registrar o modelo

Depois de treinar o modelo, você poderá salvá-lo e registrá-lo em seu workspace. O registro de modelo permite que você armazene e versione os modelos no workspace para simplificar o gerenciamento e a implantação de modelos.

Adicione o código a seguir ao script de treinamento, train_iris.py, para salvar o modelo.

import joblib

joblib.dump(svm_model_linear, 'model.joblib')

Registre o modelo em seu workspace com o código a seguir. Especificando os parâmetros model_framework, model_framework_version e resource_configuration, a implantação do modelo sem código fica disponível. A implantação de modelo sem código permite que você implante diretamente seu modelo como um serviço Web do modelo registrado, e o objeto ResourceConfiguration define o recurso de computação para o serviço Web.

from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration

model = run.register_model(model_name='sklearn-iris', 
                           model_path='outputs/model.joblib',
                           model_framework=Model.Framework.SCIKITLEARN,
                           model_framework_version='1.5.2',
                           resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))

Implantação

O modelo que você acabou de registrar pode ser implantado exatamente da mesma maneira que qualquer outro modelo registrado no Azure Machine Learning. A implantação “como” contém uma seção sobre como registrar modelos, mas você pode pular diretamente para criar um destino de computação para implantação, uma vez você já tem um modelo registrado.

(Pré-visualização) Implantação de modelo sem código

Importante

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos.

Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.

Em vez da rota de implantação tradicional, você também pode usar o recurso de implantação sem código (pré-visualização) para scikit-learn. A implantação de modelo sem código tem suporte para todos os tipos de modelo scikit-learn internos. Ao registrar seu modelo, conforme mostrado acima com os parâmetros model_frameworkmodel_framework_version e resource_configuration, você pode simplesmente usar a função estática deploy() para implantar seu modelo.

web_service = Model.deploy(ws, "scikit-learn-service", [model])

Observação

Essas dependências estão incluídas no contêiner de inferência do scikit-learn predefinido.

    - azureml-defaults
    - inference-schema[numpy-support]
    - scikit-learn
    - numpy

O how-to completo aborda a implantação em Azure Machine Learning em maior profundidade.

Próximas etapas

Neste artigo, você treinou e registrou um modelo scikit-learn e aprendeu sobre as opções de implantação. Consulte estes outros artigos para saber mais sobre Azure Machine Learning.