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 depandas == 0.25.1
escikit-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 esckit-learn==0.20.3
pandas == 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 . Oplatform
deve serwin-64
para Windows ouosx-64
para Mac. Para verificar a versão, utilize o comandoconda -V
. Se tiver uma versão anterior instalada, pode atualizá-la com o comando :conda update conda
. Para verificar 32 bits ao executarCertifique-se de que a conda está instalada.
Linux -
gcc: error trying to exec 'cc1plus'
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 comandosudo apt-get install build-essential
.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 comconda 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
- 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.
- Execute o comando:
sudo apt-get update
- Execute o comando:
sudo apt-get install build-essential --fix-missing
- 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
,southeastasia
westeurope
, ,australiaeast
,westus2
, .southcentralus
- Confirme o acesso à região com o portal do Azure.
- Para a conda local, primeiro certifique-se de que
workspace.from_config falha:
Se a chamada
ws = Workspace.from_config()
falhar:- Certifique-se de que o bloco de notas configuration.ipynb foi executado com êxito.
- 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. - 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. - 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:
- Inicie uma shell de comandos, ative o ambiente conda onde estão instalados pacotes ml automatizados.
- Introduza
pip freeze
e procuretensorflow
, se for encontrada, a versão listada deve ser < 1.13 - 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:
Inicie uma shell de comandos e ative o ambiente conda onde estão instalados pacotes ML automatizados.
Introduza
pip freeze
e procurePyJWT
, se for encontrada, a versão listada deve ser < 2.0.0
Se a versão listada não for uma versão suportada:
Considere atualizar para a versão mais recente do SDK autoML:
pip install -U azureml-sdk[automl]
Se isso não for viável, desinstale o PyJWT a partir do ambiente e instale a versão certa da seguinte forma:
pip uninstall PyJWT
na shell de comandos e introduzay
para confirmação.- 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
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:
- Transferir o pacote de modelo
- Deszipar o pacote
- 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:
- Selecione o
Branch
botão - Navegar para o
Tags
separador - Selecionar a versão
- Selecione o
- Verifique a versão do SDK ao executar
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.