Resolver problemas de experimentações de ML automatizadas no Python

APLICA-SE A:Python SDK azureml v1

Neste guia, saiba como identificar e resolver problemas conhecidos nas suas experimentações de machine learning automatizado com o SDK do Azure Machine Learning.

Dependências de versão

AutoML as dependências para versões de pacotes mais recentes interrompem a compatibilidade. Após a versão 1.13.0 do SDK, os modelos não são carregados em SDKs mais antigos devido à incompatibilidade entre as versões mais antigas afixadas em pacotes anteriores AutoML e as versões mais recentes afixadas atualmente.

Esperam erros como:

  • O módulo não encontrou erros como, por exemplo,

    No module named 'sklearn.decomposition._truncated_svd'

  • Erros de importação como, por exemplo,

    ImportError: cannot import name 'RollingOriginValidator',

  • Erros de atributos como, por exemplo,

    AttributeError: 'SimpleImputer' object has no attribute 'add_indicator'

As resoluções dependem da sua AutoML versão de preparação do SDK:

  • Se a versão AutoML de preparação do SDK for superior a 1.13.0, precisa de pandas == 0.25.1 e scikit-learn==0.22.1.

    • Se existir um erro de correspondência da versão, atualize scikit-learn e/ou pandas para corrigir a versão com o seguinte,

          pip install --upgrade pandas==0.25.1
          pip install --upgrade scikit-learn==0.22.1
      
  • Se a sua AutoML versão de preparação do SDK for menor ou igual a 1.12.0, precisa e sckit-learn==0.20.3pandas == 0.23.4 .

    • Se existir um erro de correspondência da versão, mude para uma versão anterior scikit-learn e/ou pandas para corrigir a versão com o seguinte,

        pip install --upgrade pandas==0.23.4
        pip install --upgrade scikit-learn==0.20.3
      

Configuração

AutoML as alterações ao pacote desde a versão 1.0.76 exigem que a versão anterior seja desinstalada antes de atualizar para a nova versão.

  • ImportError: cannot import name AutoMLConfig

    Se encontrar este erro depois de atualizar a partir de uma versão do SDK antes da v1.0.76 para v1.0.76 ou posterior, resolva o erro ao executar: e, pip uninstall azureml-train automl em seguida, pip install azureml-train-automl. O script automl_setup.cmd faz isto automaticamente.

  • automl_setup falha

    • No Windows, execute automl_setup a partir de um Pedido de Anaconda. Instale o Miniconda.

    • Certifique-se de que a versão 4.4.10 ou posterior da conda de 64 bits está instalada. Pode verificar o bit com o conda info comando . O platform deve ser win-64 para Windows ou osx-64 para Mac. Para verificar a versão, utilize o comando conda -V. Se tiver uma versão anterior instalada, pode atualizá-la com o comando : conda update conda. Para verificar 32 bits ao executar

    • Certifique-se de que a conda está instalada.

    • Linux - gcc: error trying to exec 'cc1plus'

      1. Se o gcc: error trying to exec 'cc1plus': execvp: No such file or directory erro for encontrado, instale as ferramentas de compilação GCC para a distribuição do Linux. Por exemplo, no Ubuntu, utilize o comando sudo apt-get install build-essential.

      2. Transmita um novo nome como o primeiro parâmetro para automl_setup para criar um novo ambiente conda. Veja ambientes conda existentes com conda env list e remova-os com conda env remove -n <environmentname>.

  • automl_setup_linux.sh falha: se automl_setup_linus.sh falhar no Ubuntu Linux com o erro: unable to execute 'gcc': No such file or directory

    1. Certifique-se de que as portas de saída 53 e 80 estão ativadas. Numa máquina virtual do Azure, pode fazê-lo a partir do portal do Azure ao selecionar a VM e clicar em Rede.
    2. Execute o comando: sudo apt-get update
    3. Execute o comando: sudo apt-get install build-essential --fix-missing
    4. Executar automl_setup_linux.sh novamente
  • configuration.ipynb falha:

    • Para a conda local, primeiro certifique-se de que automl_setup foi executada com êxito.
    • Certifique-se de que a subscription_id está correta. Localize o subscription_id no portal do Azure ao selecionar Todos os Serviços e, em seguida, Subscrições. Os carateres "<" e ">" não devem ser incluídos no valor subscription_id. Por exemplo, subscription_id = "12345678-90ab-1234-5678-1234567890abcd" tem o formato válido.
    • Confirme o acesso de Contribuidor ou Proprietário à subscrição.
    • Verifique se a região é uma das regiões suportadas: eastus2, , eastus, westcentralus, southeastasiawesteurope, , australiaeast, westus2, . southcentralus
    • Confirme o acesso à região com o portal do Azure.
  • workspace.from_config falha:

    Se a chamada ws = Workspace.from_config() falhar:

    1. Certifique-se de que o bloco de notas configuration.ipynb foi executado com êxito.
    2. Se o bloco de notas estiver a ser executado a partir de uma pasta que não esteja na pasta onde foi configuration.ipynb executado, copie a pasta aml_config e o ficheiro config.json que contém para a nova pasta. Workspace.from_config lê config.json para a pasta do bloco de notas ou a respetiva pasta principal.
    3. Se estiver a ser utilizada uma nova subscrição, grupo de recursos, área de trabalho ou região, certifique-se de que executa o configuration.ipynb bloco de notas novamente. A alteração direta de config.json só funcionará se a área de trabalho já existir no grupo de recursos especificado na subscrição especificada.
    4. Se quiser alterar a região, altere a área de trabalho, o grupo de recursos ou a subscrição. Workspace.create não criará nem atualizará uma área de trabalho se já existir, mesmo que a região especificada seja diferente.

TensorFlow

A partir da versão 1.5.0 do SDK, a machine learning automatizada não instala modelos do TensorFlow por predefinição. Para instalar o TensorFlow e utilizá-lo com as experimentações de ML automatizadas, instale tensorflow==1.12.0 através do CondaDependencies.

  from azureml.core.runconfig import RunConfiguration
  from azureml.core.conda_dependencies import CondaDependencies
  run_config = RunConfiguration()
  run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['tensorflow==1.12.0'])

Falhas de numpy

  • import numpy falha no Windows: alguns ambientes do Windows veem um erro ao carregar numpy com a versão 3.6.8 mais recente do Python. Se vir este problema, experimente a versão 3.6.7 do Python.

  • import numpy falha: verifique a versão do TensorFlow no ambiente de conda do ml automatizado. As versões suportadas são < 1.13. Desinstale o TensorFlow do ambiente se a versão for >= 1.13.

Pode verificar a versão do TensorFlow e desinstalar da seguinte forma:

  1. Inicie uma shell de comandos, ative o ambiente conda onde estão instalados pacotes ml automatizados.
  2. Introduza pip freeze e procure tensorflow, se for encontrada, a versão listada deve ser < 1.13
  3. Se a versão listada não for uma versão suportada, pip uninstall tensorflow na shell de comandos e introduza y para confirmação.

jwt.exceptions.DecodeError

Mensagem de erro exata: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

Para versões <do SDK = 1.17.0, a instalação pode resultar numa versão não suportada do PyJWT. Verifique se a versão PyJWT no ambiente de conda do ml automatizado é uma versão suportada. Trata-se da versão < 2.0.0 da PyJWT.

Pode verificar a versão do PyJWT da seguinte forma:

  1. Inicie uma shell de comandos e ative o ambiente conda onde estão instalados pacotes ML automatizados.

  2. Introduza pip freeze e procure PyJWT, se for encontrada, a versão listada deve ser < 2.0.0

Se a versão listada não for uma versão suportada:

  1. Considere atualizar para a versão mais recente do SDK autoML: pip install -U azureml-sdk[automl]

  2. Se isso não for viável, desinstale o PyJWT a partir do ambiente e instale a versão certa da seguinte forma:

    1. pip uninstall PyJWT na shell de comandos e introduza y para confirmação.
    2. Instale com pip install 'PyJWT<2.0.0'.

Acesso a dados

Para tarefas de ML automatizadas, tem de garantir que o arquivo de dados de ficheiros que se liga ao armazenamento do AzureFile tem as credenciais de autenticação adequadas. Caso contrário, a seguinte mensagem resulta. Saiba como atualizar as credenciais de autenticação de acesso a dados.

Mensagem de erro: Could not create a connection to the AzureFileService due to missing credentials. Either an Account Key or SAS token needs to be linked the default workspace blob store.

Esquema de dados

Quando tenta criar uma nova experimentação de ML automatizada através do botão Editar e submeter no estúdio do Azure Machine Learning, o esquema de dados da nova experimentação tem de corresponder ao esquema dos dados utilizados na experimentação original. Caso contrário, uma mensagem de erro semelhante aos seguintes resultados. Saiba mais sobre como editar e submeter experimentações a partir da IU do estúdio.

Experimentações não visuais de mensagens de erro: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)

Mensagem de erro para conjuntos de dados de visão: Schema mismatch error: (an) additional column(s): "dataType: String, dataSubtype: String, dateTime: Date, category: String, subcategory: String, status: String, address: String, latitude: Decimal, longitude: Decimal, source: String, extendedProperties: String", (a) missing column(s): "image_url: Stream, image_details: DataRow, label: List" Vision dataset error(s): Vision dataset should have a target column with name 'label'. Vision dataset should have labelingProjectType tag with value as 'Object Identification (Bounding Box)'.

Databricks

Veja Como configurar uma experimentação de ML automatizada com o Databricks (SDK do Azure Machine Learning v1).

A previsão da classificação R2 é sempre zero

Este problema surge se os dados de preparação fornecidos tiverem série temporal que contenha o mesmo valor para os últimos n_cv_splits + forecasting_horizon pontos de dados.

Se este padrão for esperado na sua série temporal, pode mudar a métrica primária para um erro quadrado médio de raiz normalizado.

Falha na implementação

Para versões <= 1.18.0 do SDK, a imagem de base criada para implementação pode falhar com o seguinte erro: ImportError: cannot import name cached_property from werkzeug.

Os passos seguintes podem contornar o problema:

  1. Transferir o pacote de modelo
  2. Deszipar o pacote
  3. Implementar com os recursos deszipados

Funções do Azure aplicação

Atualmente, o ML automatizado não suporta aplicações Funções do Azure.

Falhas de blocos de notas de exemplo

Se um bloco de notas de exemplo falhar com um erro, essa propriedade, método ou biblioteca não existe:

  • Certifique-se de que o kernel correto foi selecionado no Jupyter Notebook. O kernel é apresentado no canto superior direito da página do bloco de notas. A predefinição é azure_automl. O kernel é guardado como parte do bloco de notas. Se mudar para um novo ambiente conda, terá de selecionar o novo kernel no bloco de notas.

    • Para os Blocos de Notas do Azure, deve ser Python 3.6.
    • Para ambientes conda locais, deve ser o nome do ambiente conda que especificou no automl_setup.
  • Para garantir que o bloco de notas se destina à versão do SDK que está a utilizar,

    • Verifique a versão do SDK ao executar azureml.core.VERSION numa célula Jupyter Notebook.
    • Pode transferir a versão anterior dos blocos de notas de exemplo a partir do GitHub com estes passos:
      1. Selecione o Branch botão
      2. Navegar para o Tags separador
      3. Selecionar a versão

Limitação de experimentação

Se tiver mais de 100 experimentações de ML automatizadas, isto pode fazer com que novas experimentações de ML automatizadas tenham tempos de execução longos.

Falha na Transferência da Definição da Firewall da VNet

Se estiver em redes virtuais (VNets), poderá deparar-se com falhas de transferência de modelos ao utilizar o NLP de AutoML. Isto deve-se ao facto de o tráfego de rede estar impedido de transferir os modelos e tokenizers da CDN do Azure. Para desbloquear este problema, permita listar os URLs abaixo na definição "Regras da aplicação" da política de firewall da VNet:

  • aka.ms
  • https://automlresources-prod.azureedge.net

Siga as instruções aqui para configurar as definições da firewall.

As instruções para configurar a área de trabalho na vnet estão disponíveis aqui.

Passos seguintes