Compartilhar via


Executar scripts Python de machine learning no Machine Learning Studio (clássico)

APLICA-SE A:Aplica-se a.Machine Learning Studio (clássico) Não se aplica.Azure Machine Learning

Importante

O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. Recomendamos que você faça a transição para o Azure Machine Learning até essa data.

A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).

A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.

O Python é uma ferramenta valiosa no conjunto de ferramentas de muitos cientistas de dados. Ele é usado em todos os estágios dos fluxos de trabalho típicos de machine learning, como exploração de dados, extração de recursos, validação e treinamento de modelos e implantação.

Este artigo descreve como o módulo Executar Script Python pode ser útil para usar código Python em serviços Web e experimentos do Machine Learning Studio (clássico).

Usando o módulo Executar Script Python

A interface principal do Python no Studio (clássico) é por meio do módulo Executar Script python . Ele aceita até três entradas e produz até duas saídas, semelhantes ao módulo Executar Script R . O código Python é inserido na caixa de parâmetro por meio de uma função de ponto de entrada especialmente nomeada chamada azureml_main.

Executar o módulo Script do Python

Exemplo de código python na caixa de parâmetros do módulo

Parâmetros de entrada

As entradas para o módulo Python são expostas como Pandas DataFrames. A função azureml_main aceita até dois Pandas DataFrames opcionais como parâmetros.

O mapeamento entre as portas de entrada e os parâmetros de função é posicional:

  • A primeira porta de entrada conectada é mapeada para o primeiro parâmetro da função.
  • A segunda entrada (se conectada) é mapeada para o segundo parâmetro da função.
  • A terceira entrada é usada para importar módulos adicionais do Python.

Veja a seguir uma semântica mais detalhada de como as portas de entrada são mapeadas para parâmetros da função azureml_main.

Tabela de configurações de porta de entrada e assinatura resultante do Python

Valores de retorno de resultados

A azureml_main função deve retornar um único DataFrame do Pandas empacotado em uma sequência do Python, como uma tupla, uma lista ou uma matriz NumPy. O primeiro elemento dessa sequência é retornado na primeira porta de saída do módulo. A segunda porta de saída do módulo é usada para visualizações e não requer um valor retornado. Esse esquema é exibido abaixo.

Mapeando portas de entrada para parâmetros e retornando o valor para a porta de saída

Conversão de tipos de dados de entrada e saída

Os conjuntos de dados do Estúdio não são os mesmos dos Pandas DataFrames. Consequentemente, os conjuntos de dados de entrada no Estúdio (clássico) são convertidos em Pandas DataFrames, e os DataFrames de saída são convertidos de volta em conjuntos de dados do Estúdio (clássico). Durante esse processo de conversão, também são realizadas as seguintes conversões:

Tipo de dados do Python Procedimento de tradução do Studio
Cadeias de caracteres e numéricos Traduzido como está
Pandas 'NA' Traduzido como 'Valor ausente'
Vetores de índice Sem suporte*
Nomes de coluna que não são de cadeia de caracteres Chamar str em nomes de coluna
Nomes de coluna duplicados Adicionar sufixo numérico: (1), (2), (3) e assim por diante.

* Todos os quadros de dados de entrada na função Python sempre têm um índice numérico de 64 bits de 0 para o número de linhas menos 1

Importando módulos de script Python existentes

O back-end usado para executar o Python baseia-se no Anaconda, uma distribuição científica do Python amplamente usada. Ele vem com quase 200 dos pacotes de Python mais comuns usados em cargas de trabalho centradas em dados. O Estúdio (clássico) atualmente não dá suporte ao uso de sistemas de gerenciamento de pacotes, como PIP ou Conda, para instalar e gerenciar bibliotecas externas. Se você achar necessário incorporar bibliotecas adicionais, use o cenário a seguir como guia.

Um caso de uso comum é incorporar scripts Python existentes em experimentos do Estúdio (clássico). O módulo Executar Script python aceita um arquivo zip que contém módulos Python na terceira porta de entrada. O arquivo é descompactado pelo framework de execução durante o tempo de execução, e o conteúdo é adicionado ao caminho da biblioteca do interpretador Python. A função do ponto de entrada azureml_main pode, então, importar esses módulos diretamente.

Por exemplo, considere o arquivo Hello.py que contém uma função simples "Olá, Mundo".

Função definida pelo usuário no arquivo Hello.py

Em seguida, criamos um arquivo Hello.zip que contenha o Hello.py:

Arquivo zip contendo código Python definido pelo usuário

Carregue o arquivo zip como um conjunto de dados no Estúdio (clássico). Em seguida, crie e execute um experimento que usa o código Python no arquivo Hello.zip anexando-o à terceira porta de entrada do módulo Executar Script Python , conforme mostrado na imagem a seguir.

Experimento de exemplo com Hello.zip como uma entrada para um módulo Executar Script Python

Código Python definido pelo usuário carregado como um arquivo zip

A saída do módulo mostra que o arquivo zip foi descompactado e a função print_hello foi executada.

Saída do módulo mostrando a função definida pelo usuário

Acessando Azure Storage Blobs

Você pode acessar os dados armazenados em uma conta de Armazenamento de Blobs do Azure seguindo estas etapas:

  1. Baixe o pacote de Armazenamento de Blobs do Azure para Python localmente.
  2. Carregue o arquivo zip no seu espaço de trabalho do Estúdio (clássico) como um conjunto de dados.
  3. Use protocol='http' para criar o objeto BlobService.
from azure.storage.blob import BlockBlobService

# Create the BlockBlockService that is used to call the Blob service for the storage account
block_blob_service = BlockBlobService(account_name='account_name', account_key='account_key', protocol='http')
  1. Desabilitar a transferência segura necessária na guia Configuração de Armazenamento

Desabilitar a transferência segura necessária no portal do Azure

Operacionalizando scripts Python

Todos os módulos Executar Script Python usados em um experimento de pontuação são chamados quando publicados como um serviço Web. Por exemplo, a imagem abaixo mostra um teste de pontuação que contém o código para avaliar uma única expressão Python.

Ambiente de trabalho do Studio para um serviço web

Expressão do Python Pandas

Um serviço Web criado com base nesse experimento executará as seguintes ações:

  1. Usar uma expressão Python como entrada (como uma cadeia de caracteres)
  2. Enviar a expressão Python ao interpretador de Python
  3. Retornar uma tabela contendo tanto a expressão como o resultado avaliado

Trabalhando com visualizações

Gráficos criados usando MatplotLib podem ser retornados pelo Script Executar Python. No entanto, eles não são redirecionados automaticamente para imagens como acontece quando usamos o R, por isso o usuário deve salvar explicitamente os gráficos em arquivos PNG.

Para gerar imagens com base no MatplotLib, siga estas etapas:

  1. Alterne o back-end do renderizador padrão baseado em Qt para "AGG".
  2. Crie um novo objeto de figura.
  3. Obtenha o eixo e gere todos os gráficos sobre ele.
  4. Salve a figura em um arquivo PNG.

Esse processo é ilustrado nas imagens a seguir, que criam uma matriz de gráfico de dispersão usando a função scatter_matrix no Pandas.

Código para salvar figuras matplotLib em imagens

Clique em 'Visualizar' no módulo Executar Script Python para visualizar as figuras

Visualizando gráficos para um experimento de exemplo usando código Python

É possível retornar várias figuras salvando-as em imagens diferentes. O runtime do Estúdio (clássico) agrupa todas as imagens e as concatena para visualização.

Exemplos avançados

O ambiente Anaconda instalado no Estúdio (clássico) contém pacotes comuns, como NumPy, SciPy e Scikits-Learn. Esses pacotes podem ser usados de maneira eficaz para processamento de dados em um pipeline de machine learning.

Por exemplo, o experimento e o script a seguir ilustram o uso de aprendizagem em conjunto no Scikits-Learn para calcular pontuações de importância de recursos para um conjunto de dados. As pontuações podem ser usadas para executar seleção de características supervisionada antes de serem encaminhadas para outro modelo.

Aqui está a função Python usada para calcular as pontuações de importância e ordenar os recursos com base nas pontuações:

Função para classificar recursos por pontuações

O seguinte experimento calcula e retorna as pontuações de importância dos recursos do conjunto de dados "Pima Indian Diabetes" no Machine Learning Studio (clássico):

Teste para classificar recursos no conjunto de dados Pima Indian Diabetes usando Python

Visualização da saída do módulo Executar Script Python

Limitações

O módulo Executar Script python atualmente tem as seguintes limitações:

Execução em área restrita

O runtime do Python está em área restrita no momento e não permite o acesso à rede ou ao sistema de arquivos local de maneira persistente. Todos os arquivos salvos localmente são isolados e excluídos após a conclusão do módulo. O código Python não pode acessar a maioria das pastas do computador em que é executado, com exceção do diretório atual e seus subdiretórios.

Falta de suporte para desenvolvimento e depuração sofisticados

O módulo Python atualmente não dá suporte a funcionalidades de IDE, como IntelliSense e depuração. Além disso, se o módulo falhar em tempo de execução, o rastreamento de pilha completo do Python estará disponível. Porém, ele deve ser exibido no log de saída do módulo. No momento, recomendamos que você desenvolva e depure scripts Python em um ambiente como IPython e depois importe o código para o módulo.

Saída única de estruturas de dados

O ponto de entrada do Python só tem permissão para retornar um único data frame como saída. No momento, não é possível retornar objetos Python arbitrários, como modelos treinados diretamente para o runtime do Estúdio (clássico). Assim como Executar Script R, que tem a mesma limitação, é possível, em muitos casos, serializar objetos em uma matriz de bytes e retorná-los em um quadro de dados.

Incapacidade de personalizar a instalação do Python

Atualmente, a única maneira de adicionar módulos personalizados do Python é por meio do mecanismo de compactação de arquivo zip descrito anteriormente. Embora isso seja viável para pequenos módulos, é complicado para módulos grandes (especialmente aqueles com DLLs nativas) ou um grande número de módulos.

Próximas etapas

Para obter mais informações, consulte o Centro de Desenvolvedores do Python.