Solucionar problemas em experimentos de ML automatizado em Python

APLICA-SE A: SDK do Python azureml v1

Neste guia, você aprenderá a identificar e solucionar problemas conhecidos em experimentos de machine learning automatizado com o SDK do Azure Machine Learning.

Dependências de versão

As dependências do AutoML pelas versões mais recentes do pacote quebram 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 fixadas em pacotes AutoML anteriores e as versões mais recentes fixadas hoje.

Podem ocorrer erros como estes:

  • Erros de módulo não localizado, como:

    No module named 'sklearn.decomposition._truncated_svd'

  • Erros de importação, como:

    ImportError: cannot import name 'RollingOriginValidator',

  • Erros de atributo, como:

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

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

  • Se a sua versão de treinamento do SDK do AutoML for maior que 1.13.0, você precisará de pandas == 0.25.1 e scikit-learn==0.22.1.

    • Se houver incompatibilidade de versão, atualize o Scikit-learn e/ou o Pandas para a versão correta com o seguinte:

          pip install --upgrade pandas==0.25.1
          pip install --upgrade scikit-learn==0.22.1
      
  • Se a sua versão de treinamento do SDK do AutoML for inferior ou igual a 1.12.0, você precisará de pandas == 0.23.4 e sckit-learn==0.20.3.

    • Se houver incompatibilidade de versão, faça downgrade do Scikit-learn e/ou do Pandas para a versão correta com o seguinte:

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

Instalação

Devido a alterações no pacote AutoML desde a versão 1.0.76, é necessário desinstalar a versão anterior para instalar uma nova.

  • ImportError: cannot import name AutoMLConfig

    Se esse erro ocorrer após o upgrade de uma versão do SDK anterior a v1.0.76 para a versão v1.0.76 ou posterior, execute o seguinte para solucionar: pip uninstall azureml-train automl e depois pip install azureml-train-automl. O script automl_setup.cmd faz isso automaticamente.

  • Falha de automl_setup

    • No Windows, execute o automl_setup em um prompt do Anaconda. Instalar o Miniconda.

    • Instale o Conda de 64 bits, versão 4.4.10 ou posterior. Você pode verificar o bit com o comando conda info. O valor de platform deve ser win-64 para Windows ou osx-64 para Mac. Para verificar a versão, use o comando conda -V. Se houver uma versão anterior instalada, atualize com o comando: conda update conda. Para verificar 32 bits, execute

    • Verifique se o Conda está instalado.

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

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

      2. Passe um novo nome como o primeiro parâmetro para automl_setup para criar um ambiente do Conda. Use conda env list para ver os ambientes atuais do Conda e conda env remove -n <environmentname> para removê-los.

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

    1. Verifique se as portas de saída 53 e 80 estão habilitadas. Em uma máquina virtual do Azure, você pode fazer isso no portal do Azure: selecione a VM e clique em Rede.
    2. Execute o comando: sudo apt-get update
    3. Execute o comando: sudo apt-get install build-essential --fix-missing
    4. Execute automl_setup_linux.sh novamente
  • Falha de configuration.ipynb:

    • No Conda local, primeiro verifique se o automl_setup foi executado com êxito.
    • Confirme que subscription_id está correto. Para localizar subscription_id no portal do Azure, selecione Todos os Serviços e depois Assinaturas. Não inclua os caracteres "<" e ">" no valor de subscription_id. Por exemplo, subscription_id = "12345678-90ab-1234-5678-1234567890abcd" tem o formato válido.
    • Confirme que o colaborador ou o proprietário têm acesso à assinatura.
    • Verifique se a região tem suporte: eastus2, eastus, westcentralus, southeastasia, westeurope, australiaeast, westus2, southcentralus.
    • Verifique o acesso à região usando o portal do Azure.
  • Falha de workspace.from_config:

    Em caso de falha da chamada ws = Workspace.from_config():

    1. Verifique se o notebook configuration.ipynb foi executado com êxito.
    2. Se o notebook for executado em uma pasta que não está dentro da pasta em que configuration.ipynb foi executado, copie a pasta aml_config e o arquivo config.json contido nela para a nova pasta. Workspace.from_config lê o arquivo config.json da pasta do notebook ou da pasta pai.
    3. Quando usar uma nova assinatura, grupo de recursos, workspace ou região, execute o notebook configuration.ipynb novamente. Alterações diretas no arquivo config.json só funcionarão se o workspace já existir no grupo de recursos especificado, na assinatura especificada.
    4. Para alterar a região, altere o workspace, o grupo de recursos ou a assinatura. Workspace.create não cria nem atualiza um workspace que já existe, mesmo que a região especificada seja diferente.

TensorFlow

Desde a versão 1.5.0 do SDK, o machine learning automatizado não instala modelos TensorFlow por padrão. Para instalar o TensorFlow e usá-lo com seus experimentos de ML automatizado, instale tensorflow==1.12.0 por meio 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

  • Falha de import numpy no Windows: em alguns ambientes do Windows, ocorre um erro ao carregar o numpy com a versão mais recente do Python, 3.6.8. Se o problema ocorrer, use o Python versão 3.6.7.

  • Falha de import numpy : verifique a versão do TensorFlow no ambiente do Conda de ML automatizado. As versões com suporte são anteriores à 1.13. Desinstale o TensorFlow do ambiente se a versão for 1.13 ou posterior.

Você pode verificar a versão do TensorFlow e desinstalar da seguinte maneira:

  1. Inicie um shell de comando, ative o ambiente do Conda em que os pacotes de ML automatizado são instalados.
  2. Insira pip freeze e procure tensorflow. Se encontrado, a versão listada deverá ser anterior à 1.13
  3. Se a versão listada não for uma versão com suporte, execute pip uninstall tensorflow no shell de comando e digite 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 a versão 1.17.0 ou anterior do SDK, a instalação pode resultar em uma versão sem suporte do PyJWT. Verifique se a versão do PyJWT no ambiente do Conda de ML automatizado tem suporte. O suporte é para PyJWT versão 2.0.0 ou anterior.

Você pode verificar a versão do PyJWT da seguinte maneira:

  1. Inicie um shell de comando e ative o ambiente do Conda em que os pacotes de ML automatizado são instalados.

  2. Insira pip freeze e procure PyJWT. Se encontrado, a versão listada deverá ser anterior à 2.0.0

Se a versão listada não for uma versão com suporte:

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

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

    1. pip uninstall PyJWT no shell de comando e digite y para confirmação.
    2. Instale usando pip install 'PyJWT<2.0.0'.

Acesso de dados

Para os trabalhos de ML automatizado, você precisa garantir que o armazenamento de dados do arquivo que se conecta ao armazenamento do AzureFile tenha as credenciais de autenticação apropriadas. O contrário resulta na mensagem a seguir. Saiba como atualizar suas 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 você tenta criar um novo teste de ML automatizado por meio do botão Editar e enviar no Estúdio do Azure Machine Learning, o esquema de dados para o novo experimento deve corresponder ao esquema dos dados usado no experimento original. Caso contrário, será gerada uma mensagem de erro semelhante a mostrada a seguir. Saiba mais sobre como Editar e enviar experimentos da interface do usuário do estúdio.

Experimentos de não visão de mensagem 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

Confira Como configurar um experimento de ML automatizado com o Databricks (SDK do Azure Machine Learning v1).

Previsão de pontuação do R2 é sempre zero

Esse problema ocorre quando os dados de treinamento contêm uma série temporal que contém o mesmo valor para os últimos pontos de dados n_cv_splits + forecasting_horizon.

Se a sua série temporal contém esse padrão, altere a métrica principal para raiz do erro quadrático médio normalizada.

Falha na implantação

Na versão 1.18.0 ou anterior do SDK, a imagem base criada para implantação pode falhar com o seguinte erro: ImportError: cannot import name cached_property from werkzeug.

As seguintes etapas podem contornar o problema:

  1. Baixe o pacote de modelos
  2. Descompacte o pacote
  3. Implante usando os ativos descompactados

Aplicativo do Azure Functions

Atualmente, o ML automatizado não oferece suporte para aplicativos do Azure Functions.

Falhas de notebook de exemplo

Caso ocorra falha do notebook de amostra com erro de propriedade, método ou biblioteca não existente:

  • Verifique se o kernel correto foi selecionado no Jupyter Notebook. O kernel é exibido no canto superior direito da página do notebook. O padrão é azure_automl. O kernel é salvo como parte do notebook. Se você alternar para um novo ambiente do Conda, precisará selecionar o novo kernel no notebook.

    • Para o Azure Notebooks, ele deve ser Python 3.6.
    • Para ambientes locais do Conda, ele deve ser o nome do ambiente do Conda que você especificou em automl_setup.
  • Para garantir que o notebook seja para a versão do SDK que você está usando,

    • Verifique a versão do SDK executando azureml.core.VERSION em uma célula do Jupyter Notebook.
    • Você pode baixar a versão anterior dos notebooks de exemplo do GitHub com estas etapas:
      1. Selecione o botão Branch
      2. Navegue até a guia Tags
      3. Selecione a versão

Limitação do experimento

Se você tiver mais de 100 experimentos de ML automatizados, isso poderá fazer com que novos experimentos de ML automatizados tenham tempos de duração longos.

Falha na configuração do firewall da VNet

Se você estiver em VNets (redes virtuais), poderá encontrar falhas de download de modelo ao usar o NLP do AutoML. Isso ocorre porque o tráfego de rede está impedido de baixar os modelos e tokenizadores da CDN do Azure. Para desbloquear isso, permita listar os URLs abaixo na configuração "Regras de aplicativo" da política de firewall da VNet:

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

Siga as instruções aqui para definir as configurações de firewall.

As instruções para configurar o workspace na vnet estão disponíveis aqui.

Próximas etapas