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á epandas == 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á epandas == 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 seguidapip 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. Oplatform
deve serwin-64
para Windows ouosx-64
Mac. Para verificar a versão, use o comandoconda -V
. Se você tiver uma versão anterior instalada, poderá atualizá-la usando o comando:conda update conda
. Para verificar 32 bits executandoCertifique-se de que o conda está instalado.
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 do GCC para sua distribuição Linux. Por exemplo, no Ubuntu, use o comandosudo apt-get install build-essential
.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 comconda 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
- 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.
- 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 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
,australiaeast
westeurope
, ,southcentralus
westus2
. - Garanta o acesso à região usando o portal do Azure.
- Para conda local, primeiro certifique-se de que
workspace.from_config falha:
Se a chamada
ws = Workspace.from_config()
falhar:- Verifique se o bloco de anotações configuration.ipynb foi executado com êxito.
- 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. - 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. - 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 numpy
falha: 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:
- Inicie um shell de comando, ative o ambiente conda onde pacotes ml automatizados estão instalados.
- Entre
pip freeze
e procure ,tensorflow
se encontrado, a versão listada deve ser < 1.13 - 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:
Inicie um shell de comando e ative o ambiente conda onde pacotes de ML automatizados são instalados.
Digite
pip freeze
e procure ,PyJWT
se encontrado, 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 AutoML SDK:
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 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
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:
- Faça o download do pacote de modelos
- Descompacte o pacote
- 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:
- Selecione o
Branch
botão - Navegue até ao
Tags
separador - Selecione a versão
- Selecione o
- Verifique a versão do SDK executando
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
Saiba mais sobre como treinar um modelo de regressão com o aprendizado de máquina automatizado ou como treinar usando o aprendizado de máquina automatizado em um recurso remoto.
Saiba mais sobre como e onde implantar um modelo.