Treine modelos de aprendizagem scikit em escala com o Azure Machine Learning (SDK v1)
APLICA-SE A: Python SDK azureml v1
Neste artigo, saiba como executar seus scripts de treinamento scikit-learn com o Azure Machine Learning.
Os scripts de exemplo neste artigo são usados para classificar imagens de flores de íris para criar um modelo de aprendizado de máquina baseado no conjunto de dados de íris do scikit-learn.
Quer esteja a treinar um modelo de aprendizagem científica de aprendizagem automática a partir do zero ou esteja a trazer um modelo existente para a nuvem, pode utilizar o Azure Machine Learning para expandir trabalhos de formação de código aberto utilizando recursos de computação em nuvem elástica. Você pode criar, implantar, versionar e monitorar modelos de nível de produção com o Azure Machine Learning.
Pré-requisitos
Você pode executar esse código em uma instância de computação do Azure Machine Learning ou em seu próprio Jupyter Notebook:
Instância de computação do Azure Machine Learning
- Conclua o Guia de início rápido: introdução ao Aprendizado de Máquina do Azure 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 exemplo de blocos de anotações.
- Selecione a guia do bloco de anotações no estúdio do Azure Machine Learning. Na pasta de treinamento de exemplos, localize um bloco de anotações concluído e expandido navegando até este diretório: how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn folder.
- Você pode usar o código pré-preenchido na pasta de treinamento de exemplo para concluir este tutorial.
Crie um servidor Jupyter Notebook e execute o código nas seções a seguir.
- Instale o SDK do Azure Machine Learning (>= 1.13.0).
- Crie um arquivo de configuração do espaço de trabalho.
Configurar a experiência
Esta seção configura o experimento de treinamento carregando os pacotes Python necessários, inicializando um espaço de trabalho, definindo o ambiente de treinamento e preparando o script de treinamento.
Inicializar um espaço de trabalho
O espaço de trabalho do 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ê cria. No SDK do Python, você pode acessar os artefatos do espaço de trabalho criando um workspace
objeto.
Crie um objeto de espaço de trabalho a partir do config.json
arquivo criado na seção de pré-requisitos.
from azureml.core import Workspace
ws = Workspace.from_config()
Preparar scripts
Neste tutorial, o script de treinamento train_iris.py já é fornecido para você. Na prática, você deve ser capaz de usar qualquer script de treinamento personalizado como está e executá-lo com o Azure Machine Learning sem precisar modificar seu código.
Nota
- O script de treinamento fornecido mostra como registrar algumas métricas em sua execução do Aprendizado de Máquina do Azure usando o
Run
objeto dentro do script. - O script de treinamento fornecido usa dados de exemplo da
iris = datasets.load_iris()
função. Para usar e acessar seus próprios dados, veja como treinar com conjuntos de dados para disponibilizar dados durante o treinamento.
Defina seu ambiente
Para definir o Ambiente de Aprendizado de Máquina do Azure que encapsula as dependências do script de treinamento, você pode definir um ambiente personalizado ou usar o ambiente curado do Aprendizado de Máquina do Azure.
Use um ambiente com curadoria
Opcionalmente, o Azure Machine Learning fornece ambientes pré-criados e selecionados se você não quiser definir seu próprio ambiente.
Se você quiser usar um ambiente com curadoria, 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 de conda em um arquivo YAML; Neste exemplo, o arquivo é chamado conda_dependencies.yml
.
dependencies:
- python=3.7
- scikit-learn
- numpy
- pip:
- azureml-defaults
Crie um ambiente do Azure Machine Learning a partir desta 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 no Azure Machine Learning.
Configurar e enviar sua execução de treinamento
Criar um ScriptRunConfig
Crie um objeto ScriptRunConfig para especificar os detalhes de configuração do seu trabalho de treinamento, incluindo o script de treinamento, o ambiente a ser usado e o destino de computação a ser executado.
Quaisquer argumentos para o seu script de treinamento serão passados através da arguments
linha de comando, se especificado no parâmetro.
O código a seguir configurará um objeto ScriptRunConfig para enviar seu trabalho para execução em sua máquina local.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory='.',
script='train_iris.py',
arguments=['--kernel', 'linear', '--penalty', 1.0],
environment=sklearn_env)
Se, em vez disso, desejar executar seu trabalho em um cluster remoto, você pode especificar o destino de computação desejado para o compute_target
parâmetro de 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)
Envie a sua corrida
from azureml.core import Experiment
run = Experiment(ws,'Tutorial-TrainIRIS').submit(src)
run.wait_for_completion(show_output=True)
Aviso
O Azure Machine Learning executa scripts de treinamento copiando todo o diretório de origem. Se você tiver dados confidenciais que não deseja carregar, use um arquivo .ignore ou não o inclua no diretório de origem. Em vez disso, acesse seus dados usando um conjunto de dados do Azure Machine Learning.
O que acontece durante a execução da execução
À medida que a execução é executada, ela passa pelas seguintes etapas:
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ção e podem ser visualizados para monitorar o progresso. Se, em vez disso, um ambiente com curadoria for especificado, a imagem armazenada em cache que faz o backup desse ambiente curado será usada.
Dimensionamento: o cluster tenta aumentar a escala se o cluster de IA em lote exigir mais nós para executar a execução do que os atualmente disponíveis.
Em execução: Todos os scripts na pasta de script 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 do stdout e da pasta ./logs são transmitidas para o histórico de execução e podem ser usadas para monitorar a execução.Pós-processamento: A pasta ./outputs da execução é copiada para o histórico de execução.
Guardar e registar o modelo
Depois de treinar o modelo, você pode salvá-lo e registrá-lo em seu espaço de trabalho. O registro de modelo permite armazenar e fazer a versão de seus modelos em seu espaço de trabalho para simplificar o gerenciamento e a implantação de modelos.
Adicione o seguinte código ao seu script de treinamento, train_iris.py, para salvar o modelo.
import joblib
joblib.dump(svm_model_linear, 'model.joblib')
Registre o modelo em seu espaço de trabalho com o código a seguir. Ao especificar 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 a partir do modelo registrado, e o ResourceConfiguration
objeto 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='0.19.1',
resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))
Implementação
O modelo que você acabou de registrar pode ser implantado exatamente da mesma maneira que qualquer outro modelo registrado no Azure Machine Learning. O tutorial de implantação contém uma seção sobre o registro de modelos, mas você pode pular diretamente para [criando um destino de computaçãohow-to-deploy-and-where.md#choose-a-compute-target] para implantação, uma vez que você já tem um modelo registrado.
(Pré-visualização) Implantação de modelo sem código
Importante
Esta funcionalidade está atualmente em pré-visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas.
Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
Em vez da rota de implantação tradicional, você também pode usar o recurso de implantação sem código (visualização) para scikit-learn. A implantação de modelo sem código é suportada para todos os tipos de modelo scikit-learn integrados. Ao registrar seu modelo como mostrado acima com o model_framework
, model_framework_version
e resource_configuration
parâmetros, você pode simplesmente usar a deploy()
função estática para implantar seu modelo.
web_service = Model.deploy(ws, "scikit-learn-service", [model])
Nota
Essas dependências estão incluídas no contêiner de inferência scikit-learn pré-construído.
- azureml-defaults
- inference-schema[numpy-support]
- scikit-learn
- numpy
O tutorial completo aborda a implantação no Azure Machine Learning com mais profundidade.
Próximos passos
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 o Azure Machine Learning.