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á depandas == 0.25.1
escikit-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á depandas == 0.23.4
esckit-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 depoispip 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 deplatform
deve serwin-64
para Windows ouosx-64
para Mac. Para verificar a versão, use o comandoconda -V
. Se houver uma versão anterior instalada, atualize com o comando:conda update conda
. Para verificar 32 bits, executeVerifique se o Conda está instalado.
Linux –
gcc: error trying to exec 'cc1plus'
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
.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 econda 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
- 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.
- Execute o comando:
sudo apt-get update
- Execute o comando:
sudo apt-get install build-essential --fix-missing
- 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.
- No Conda local, primeiro verifique se o
Falha de workspace.from_config:
Em caso de falha da chamada
ws = Workspace.from_config()
:- Verifique se o notebook configuration.ipynb foi executado com êxito.
- 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. - 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. - 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:
- Inicie um shell de comando, ative o ambiente do Conda em que os pacotes de ML automatizado são instalados.
- Insira
pip freeze
e procuretensorflow
. Se encontrado, a versão listada deverá ser anterior à 1.13 - 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:
Inicie um shell de comando e ative o ambiente do Conda em que os pacotes de ML automatizado são instalados.
Insira
pip freeze
e procurePyJWT
. 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:
Considere atualizar para a versão mais recente do SDK do AutoML:
pip install -U azureml-sdk[automl]
Se isso não for viável, desinstale o PyJWT do ambiente e instale a versão correta da seguinte maneira:
pip uninstall PyJWT
no shell de comando e digitey
para confirmação.- 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
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:
- Baixe o pacote de modelos
- Descompacte o pacote
- 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:
- Selecione o botão
Branch
- Navegue até a guia
Tags
- Selecione a versão
- Selecione o botão
- Verifique a versão do SDK executando
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.