Partilhar via


Execute scripts de aprendizado de máquina Python no Machine Learning Studio (clássico)

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

Importante

O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.

A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).

A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.

Python é uma ferramenta valiosa no baú de ferramentas de muitos cientistas de dados. Ele é usado em todos os estágios de fluxos de trabalho típicos de aprendizado de máquina, incluindo exploração de dados, extração de recursos, treinamento e validação de modelos e implantação.

Este artigo descreve como você pode usar o módulo Execute Python Script para usar o código Python em seus experimentos e serviços Web do Machine Learning Studio (clássicos).

Usando o módulo Execute Python Script

A interface primária para Python no Studio (clássico) é através do módulo Execute Python Script . Ele aceita até três entradas e produz até duas saídas, semelhante ao módulo Execute R Script . O código Python é inserido na caixa de parâmetros através de uma função de ponto de entrada especialmente nomeada chamada azureml_main.

Executar módulo Python Script

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 azureml_main função aceita até dois Pandas DataFrames opcionais como parâmetros.

O mapeamento entre portas de entrada e 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 Python adicionais.

Semântica mais detalhada de como as portas de entrada são mapeadas para parâmetros da azureml_main função são mostradas abaixo.

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

Valores de retorno de saída

A azureml_main função deve retornar um único Pandas DataFrame empacotado em uma sequência Python, como uma tupla, lista ou matriz NumPy. O primeiro elemento desta sequência é devolvido à 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 de retorno. Este esquema é mostrado abaixo.

Mapeando portas de entrada para parâmetros e valor de retorno para porta de saída

Tradução dos tipos de dados de entrada e saída

Os conjuntos de dados do Studio não são iguais aos Panda DataFrames. Como resultado, os conjuntos de dados de entrada no Studio (clássico) são convertidos em Pandas DataFrame, e os DataFrames de saída são convertidos de volta em conjuntos de dados Studio (clássico). Durante este processo de conversão, as seguintes traduções também são realizadas:

Tipo de dados Python Procedimento de tradução em estúdio
Cordas e números Traduzido como está
Pandas 'NA' Traduzido como 'Valor em falta'
Vetores de índice Sem suporte*
Nomes de colunas sem cadeia de caracteres Chamar str nomes de colunas
Nomes de colunas duplicados Adicione o 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 backend usado para executar Python é baseado em Anaconda, uma distribuição científica Python amplamente utilizada. Ele vem com cerca de 200 dos pacotes Python mais comuns usados em cargas de trabalho centradas em dados. O Studio (clássico) atualmente não suporta o uso de sistemas de gerenciamento de pacotes como Pip ou Conda para instalar e gerenciar bibliotecas externas. Se você achar a necessidade de incorporar bibliotecas adicionais, use o seguinte cenário como um guia.

Um caso de uso comum é incorporar scripts Python existentes em experimentos do Studio (clássicos). O módulo Execute Python Script aceita um arquivo zip contendo módulos Python na terceira porta de entrada. O arquivo é descompactado pela estrutura de execução em tempo de execução e o conteúdo é adicionado ao caminho da biblioteca do interpretador Python. A azureml_main função de ponto de entrada pode então importar esses módulos diretamente.

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

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

Em seguida, criamos um Hello.zip de arquivo que contém Hello.py:

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

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

Experiência de exemplo com Hello.zip como entrada para um módulo Execute Python Script

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 que a função print_hello foi executada.

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

Acessando Blobs de Armazenamento do Azure

Você pode acessar dados armazenados em uma conta de Armazenamento de Blob do Azure usando estas etapas:

  1. Baixe o pacote de Armazenamento de Blob do Azure para Python localmente.
  2. Carregue o arquivo zip para o espaço de trabalho do Studio (clássico) como um conjunto de dados.
  3. Crie seu objeto BlobService com protocol='http'
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. Desative 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 Execute Python Script usados em um experimento de pontuação são chamados quando publicados como um serviço Web. Por exemplo, a imagem abaixo mostra um experimento de pontuação que contém o código para avaliar uma única expressão Python.

Espaço de trabalho de estúdio para um serviço Web

Expressão Python Pandas

Um serviço Web criado a partir desse experimento executaria as seguintes ações:

  1. Tome uma expressão Python como entrada (como uma cadeia de caracteres)
  2. Enviar a expressão Python para o interpretador Python
  3. Retorna uma tabela contendo a expressão e o resultado avaliado.

Trabalhar com visualizações

Os gráficos criados usando MatplotLib podem ser retornados pelo Execute Python Script. No entanto, os gráficos não são redirecionados automaticamente para imagens como quando se usa R. Portanto, o usuário deve salvar explicitamente quaisquer parcelas em arquivos PNG.

Para gerar imagens de MatplotLib, você deve seguir as seguintes etapas:

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

Este 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 em um módulo Execute Python Script 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 tempo de execução do Studio (clássico) pega todas as imagens e as concatena para visualização.

Exemplos avançados

O ambiente Anaconda instalado no Studio (clássico) contém pacotes comuns como NumPy, SciPy e Scikits-Learn. Esses pacotes podem ser usados efetivamente para processamento de dados em um pipeline de aprendizado de máquina.

Por exemplo, o experimento e o script a seguir ilustram o uso de alunos de 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 realizar a seleção supervisionada de recursos antes de serem alimentadas em 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 experimento a seguir calcula e retorna as pontuações de importância dos recursos no conjunto de dados "Pima Indian Diabetes" no Machine Learning Studio (clássico):

Experimente classificar recursos no conjunto de dados Pima Indian Diabetes usando Python

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

Limitações

O módulo Execute Python Script atualmente tem as seguintes limitações:

Execução em área restrita

O tempo de execução do Python está atualmente em área restrita e não permite o acesso à rede ou ao sistema de arquivos local de forma persistente. Todos os arquivos salvos localmente são isolados e excluídos quando o módulo termina. O código Python não pode acessar a maioria dos diretórios na máquina em que é executado, sendo a exceção o diretório atual e seus subdiretórios.

Falta de suporte sofisticado a desenvolvimento e depuração

O módulo Python atualmente não suporta recursos IDE, como intellisense e depuração. Além disso, se o módulo falhar no tempo de execução, o rastreamento de pilha Python completo estará disponível. Mas ele deve ser visualizado no log de saída para o módulo. Atualmente, recomendamos que você desenvolva e depure scripts Python em um ambiente como IPython e, em seguida, importe o código para o módulo.

Saída de quadro de dados único

O ponto de entrada Python só tem permissão para retornar um único quadro de dados como saída. Atualmente, não é possível retornar objetos Python arbitrários, como modelos treinados, diretamente de volta ao tempo de execução do Studio (clássico). Como o Execute R Script, que tem a mesma limitação, é possível, em muitos casos, selecionar objetos em uma matriz de bytes e, em seguida, retornar isso dentro de um quadro de dados.

Incapacidade de personalizar a instalação do Python

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

Próximos passos

Para obter mais informações, consulte o Centro para Programadores do Python.