Partilhar via


Solucionar problemas de experimentos automatizados de ML em Python

APLICA-SE A: Python SDK azureml v1

Neste guia, saiba como identificar e resolver problemas conhecidos em seus experimentos de aprendizado de máquina automatizados com o SDK do Azure Machine Learning.

Dependências de versão

AutoML dependências para versões de pacotes mais recentes 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 anteriores AutoML e as versões mais recentes fixadas hoje.

Espere erros como:

  • Módulo não encontrou erros como,

    No module named 'sklearn.decomposition._truncated_svd'

  • Erros de importação, tais como,

    ImportError: cannot import name 'RollingOriginValidator',

  • Erros de atributo, tais como,

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

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

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

    • Se houver uma incompatibilidade de 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 AutoML versão de treinamento do SDK for menor ou igual a 1.12.0, você precisará e pandas == 0.23.4 sckit-learn==0.20.3.

    • Se houver uma incompatibilidade de versão, faça o downgrade do 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
      

Configurar

AutoML As alterações de 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 você encontrar esse erro depois de atualizar de uma versão do SDK antes de v1.0.76 para v1.0.76 ou posterior, resolva o erro executando: pip uninstall azureml-train automl e, em seguida pip install azureml-train-automl, . O script automl_setup.cmd faz isso automaticamente.

  • automl_setup falha

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

    • Certifique-se de que o conda 64-bit versão 4.4.10 ou posterior está instalado. Você pode verificar o bit com o conda info comando. O platform deve ser win-64 para Windows ou osx-64 Mac. Para verificar a versão, use o comando conda -V. Se você tiver uma versão anterior instalada, poderá atualizá-la usando o comando: conda update conda. Para verificar 32 bits executando

    • Certifique-se de que o conda está instalado.

    • 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 do GCC para sua distribuição Linux. Por exemplo, no Ubuntu, use o comando sudo apt-get install build-essential.

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

  • 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. Em uma máquina virtual do Azure, você pode fazer isso no portal do Azure selecionando a VM e clicando 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 conda local, primeiro certifique-se de que automl_setup foi executado com sucesso.
    • Certifique-se de que o subscription_id está correto. Encontre o subscription_id no portal do Azure selecionando Todo o Serviço e, em seguida, Assinaturas. Os caracteres "<" 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.
    • Garanta o acesso do Colaborador ou Proprietário à assinatura.
    • Verifique se a região é uma das regiões suportadas: eastus2, eastus, westcentralus, , southeastasia, australiaeastwesteurope, , southcentraluswestus2.
    • Garanta o acesso à região usando o portal do Azure.
  • workspace.from_config falha:

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

    1. Verifique se o bloco de anotações configuration.ipynb foi executado com êxito.
    2. Se o bloco de anotações estiver sendo executado a partir de uma pasta que não esteja sob a pasta onde o configuration.ipynb foi executado, copie o aml_config da pasta e o config.json de arquivo que ele contém para a nova pasta. Workspace.from_config lê o config.json da pasta do bloco de anotações ou da pasta pai.
    3. Se estiver a ser utilizada uma nova subscrição, grupo de recursos, espaço de trabalho ou região, certifique-se de que executa novamente o configuration.ipynb bloco de notas. Alterar config.json diretamente só funcionará se o espaço de trabalho já existir no grupo de recursos especificado sob a assinatura especificada.
    4. Se quiser alterar a região, altere o espaço de trabalho, o grupo de recursos ou a assinatura. Workspace.create não criará ou atualizará um espaço de trabalho se ele já existir, mesmo que a região especificada seja diferente.

TensorFlow

A partir da versão 1.5.0 do SDK, o aprendizado de máquina automatizado não instala modelos TensorFlow por padrão. Para instalar o TensorFlow e usá-lo com seus experimentos automatizados de ML, instale tensorflow==1.12.0 via 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 numpy

  • import numpy falha no Windows: Alguns ambientes Windows veem um erro ao carregar numpy com a versão mais recente do Python 3.6.8. Se você vir esse problema, tente com o Python versão 3.6.7.

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

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

  1. Inicie um shell de comando, ative o ambiente conda onde pacotes ml automatizados estão instalados.
  2. Entre pip freeze e procure , tensorflowse encontrado, a versão listada deve ser < 1.13
  3. Se a versão listada não for uma versão suportada, 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 versões <do SDK = 1.17.0, a instalação pode resultar em uma versão não suportada do PyJWT. Verifique se a versão PyJWT no ambiente automatizado ml conda é uma versão suportada. Essa é a versão < 2.0.0 do PyJWT.

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

  1. Inicie um shell de comando e ative o ambiente conda onde pacotes de ML automatizados são instalados.

  2. Digite pip freeze e procure , PyJWTse encontrado, 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 AutoML SDK: 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 o pip install 'PyJWT<2.0.0'.

Acesso a dados

Para trabalhos de ML automatizados, você precisa garantir que o armazenamento de dados de arquivo que se conecta ao seu armazenamento AzureFile tenha as credenciais de autenticação apropriadas. Caso contrário, a seguinte mensagem resulta. 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 experimento 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 que foram usados no experimento original. Caso contrário, uma mensagem de erro semelhante aos seguintes resultados. Saiba mais sobre como editar e enviar experimentos da interface do usuário do estúdio.

Mensagem de erro experimentos sem visão: 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

Consulte Como configurar uma experiência de ML automatizada com Databricks (SDK do Azure Machine Learning v1).

A pontuação R2 prevista é sempre zero

Esse problema surge se os dados de treinamento fornecidos tiverem séries temporais que contenham o mesmo valor para os últimos n_cv_splits + forecasting_horizon pontos de dados.

Se esse padrão for esperado em sua série temporal, você poderá alternar sua métrica primária para erro quadrático médio de raiz normalizado.

Falha na implantação

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

As etapas a seguir podem contornar o problema:

  1. Faça o download do pacote de modelos
  2. Descompacte o pacote
  3. Implantar usando os ativos descompactados

Aplicativo Azure Functions

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

Exemplos de falhas no bloco de notas

Se um bloco de anotações de exemplo falhar com um erro, essa propriedade, método ou biblioteca não existirá:

  • Certifique-se de que o kernel correto foi selecionado no Jupyter Notebook. O kernel é exibido no canto superior direito da página do bloco de anotações. O padrão é azure_automl. O kernel é salvo como parte do bloco de anotações. Se você mudar para um novo ambiente conda, você precisa selecionar o novo kernel no notebook.

    • Para Blocos de Anotações do Azure, deve ser Python 3.6.
    • Para ambientes conda locais, deve ser o nome do ambiente conda especificado em automl_setup.
  • Para garantir que o bloco de anotações 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 blocos de anotações de exemplo do GitHub com estas etapas:
      1. Selecione o Branch botão
      2. Navegue até ao Tags separador
      3. Selecione a versão

Limitação de experimentos

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

Falha de download da configuração do firewall VNet

Se você estiver em redes virtuais (VNets), poderá encontrar falhas de download de modelo ao usar o AutoML NLP. Isso ocorre porque o tráfego de rede é 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 de rede virtual:

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

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

As instruções para configurar o espaço de trabalho em vnet estão disponíveis aqui.

Próximos passos