Risolvere i problemi relativi agli esperimenti di Machine Learning automatizzato in Python
Si applica a: Python SDK azureml v1
Questa guida illustra come identificare e risolvere i problemi noti negli esperimenti di Machine Learning automatizzati con Azure Machine Learning SDK.
Dipendenze della versione
AutoML
dipendenze alle versioni più recenti del pacchetto interrompono la compatibilità. Dopo l'SDK versione 1.13.0, i modelli non vengono caricati negli SDK precedenti a causa di incompatibilità tra le versioni precedenti aggiunte nei pacchetti di AutoML
precedenti e le versioni più recenti aggiunte oggi.
Si prevedono errori come:
Errori relativi al modulo non trovato, ad esempio,
No module named 'sklearn.decomposition._truncated_svd'
Errori di importazione, ad esempio,
ImportError: cannot import name 'RollingOriginValidator'
,Errori di attributo, ad esempio,
AttributeError: 'SimpleImputer' object has no attribute 'add_indicator'
Le risoluzioni dipendono dalla versione di training di SDK AutoML
:
Se la versione di training di SDK
AutoML
è superiore alla 1.13.0, sono necessaripandas == 0.25.1
escikit-learn==0.22.1
.In caso di mancata corrispondenza della versione, aggiornare scikit-learn e/o Pandas alla versione corretta con quanto segue:
pip install --upgrade pandas==0.25.1 pip install --upgrade scikit-learn==0.22.1
Se la versione di training di SDK
AutoML
è inferiore alla 1.12.0 o è questa stessa, sono necessaripandas == 0.23.4
esckit-learn==0.20.3
.In caso di mancata corrispondenza della versione, effettuare il downgrade di scikit-learn e/o Pandas alla versione corretta con quanto segue:
pip install --upgrade pandas==0.23.4 pip install --upgrade scikit-learn==0.20.3
Impostazione
AutoML
modifiche al pacchetto dalla versione 1.0.76 richiedono la disinstallazione della versione precedente prima dell'aggiornamento alla nuova versione.
ImportError: cannot import name AutoMLConfig
Se si verifica questo errore dopo l'aggiornamento da una versione SDK precedente alla versione 1.0.76, la versione 1.0.76 stessa o successiva, risolvere l'errore eseguendo:
pip uninstall azureml-train automl
e quindipip install azureml-train-automl
. Lo script automl_setup.cmd esegue automaticamente questa operazione.automl_setup fails
In Windows eseguire automl_setup da un prompt di Anaconda. Installare Miniconda.
Assicurarsi che sia installata la versione Conda a 64 bit 4.4.10 o successiva. È possibile controllare i bit con il comando
conda info
. Ilplatform
deve esserewin-64
per Windows oosx-64
per Mac. Per controllare la versione, usare il comandoconda -V
. Se è installata una versione precedente, è possibile aggiornarla usando il comando :conda update conda
. Per controllare a 32 bit eseguendoAssicurarsi che Conda sia installato.
Linux:
gcc: error trying to exec 'cc1plus'
Se viene rilevato l'errore di
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
, installare gli strumenti di compilazione GCC per la distribuzione Linux. Ad esempio, in Ubuntu usare il comandosudo apt-get install build-essential
.Passare un nuovo nome come primo parametro ad automl_setup per creare un nuovo ambiente Conda. Visualizzare gli ambienti Conda esistenti usando
conda env list
e rimuoverli conconda env remove -n <environmentname>
.
automl_setup_linux.sh ha esito negativo: se automl_setup_linus.sh ha esito negativo in Ubuntu Linux con l'errore:
unable to execute 'gcc': No such file or directory
- Assicurarsi che le porte in uscita 53 e 80 siano abilitate. In una macchina virtuale di Azure è possibile eseguire questa operazione dal portale di Azure selezionando la macchina virtuale e facendo clic su Rete.
- Eseguire il comando
sudo apt-get update
- Eseguire il comando
sudo apt-get install build-essential --fix-missing
- Eseguire di nuovo
automl_setup_linux.sh
configuration.ipynb ha esito negativo:
- Per Conda locale, assicurarsi prima di tutto che
automl_setup
sia stato eseguito correttamente. - Assicurarsi che subscription_id sia corretto. Trovare il subscription_id nel portale di Azure selezionando Tutti i servizi e quindi Sottoscrizioni. I caratteri "<" e ">" non devono essere inclusi nel valore subscription_id. Ad esempio,
subscription_id = "12345678-90ab-1234-5678-1234567890abcd"
ha il formato valido. - Verificare l'accesso Collaboratore o Proprietario alla sottoscrizione.
- Verificare che la regione sia tra quelle supportate:
eastus2
,eastus
,westcentralus
,southeastasia
,westeurope
,australiaeast
,westus2
,southcentralus
. - Assicurarsi di accedere alla regione usando il portale di Azure.
- Per Conda locale, assicurarsi prima di tutto che
workspace.from_config ha esito negativo:
Se la chiamata
ws = Workspace.from_config()
ha esito negativo:- Verificare che il notebook configuration.ipynb sia stato eseguito correttamente.
- Se il notebook viene eseguito da una cartella che non si trova nella cartella in cui è stata eseguito
configuration.ipynb
, copiare la cartella aml_config e il file config.json che contiene nella nuova cartella. Workspace.from_config legge il config.json per la cartella del notebook o la relativa cartella padre. - Se viene usata una nuova sottoscrizione, un gruppo di risorse, un'area di lavoro o una regione, assicurarsi di eseguire nuovamente il notebook
configuration.ipynb
. La modifica di config.json funzionerà direttamente solo se l'area di lavoro esiste già nel gruppo di risorse specificato nella sottoscrizione specificata. - Se si vuole modificare la regione, l'area di lavoro, il gruppo di risorse o la sottoscrizione.
Workspace.create
non creerà o aggiornerà un'area di lavoro se esiste già, anche se la regione specificata è diversa.
TensorFlow
A partire dalla versione 1.5.0 dell'SDK, il Machine Learning automatizzato non installa i modelli TensorFlow per impostazione predefinita. Per installare TensorFlow e usarlo con gli esperimenti di Machine Learning automatizzati, installare tensorflow==1.12.0
tramite 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'])
Errori di Numpy
import numpy
ha esito negativo in Windows: alcuni ambienti Windows visualizzano un errore durante il caricamento di numpy con la versione 3.6.8 di Python più recente. Se viene visualizzato questo problema, provare con Python versione 3.6.7.import numpy
ha esito negativo: controllare la versione di TensorFlow nell'ambiente Conda ml automatizzato. Le versioni supportate sono < 1.13. Disinstallare TensorFlow dall'ambiente se la versione è >= 1.13.
È possibile controllare la versione di TensorFlow e disinstallarla nel modo seguente:
- Avviare una shell dei comandi, attivare l'ambiente Conda in cui sono installati pacchetti ml automatizzati.
- Immettere
pip freeze
e cercaretensorflow
, se presente, la versione elencata deve essere < 1.13 - Se la versione elencata non è supportata, eseguire
pip uninstall tensorflow
nella shell dei comandi e immettere y per la conferma.
jwt.exceptions.DecodeError
Messaggio di errore esatto: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode()
.
Per le versioni dell'SDK <= 1.17.0, l'installazione potrebbe restituire una versione non supportata di PyJWT. Verificare che la versione PyJWT nell'ambiente ml conda automatizzato sia una versione supportata. Questa è la versione PyJWT < 2.0.0.
È possibile controllare la versione di PyJWT come indicato di seguito:
Avviare una shell dei comandi e attivare l'ambiente Conda in cui sono installati i pacchetti ml automatizzati.
Immettere
pip freeze
e cercarePyJWT
, se presente, la versione elencata deve essere < 2.0.0
Se la versione elencata non è supportata:
Prendere in considerazione l'aggiornamento alla versione più recente di AutoML SDK:
pip install -U azureml-sdk[automl]
Se non è possibile, disinstallare PyJWT dall'ambiente e installare la versione corretta come indicato di seguito:
pip uninstall PyJWT
nella shell dei comandi e immetterey
per confermare.- Installare utilizzando
pip install 'PyJWT<2.0.0'
.
Accesso ai dati
Per i processi di Machine Learning automatizzati, è necessario assicurarsi che l'archivio dati dei file che si connette all'archiviazione AzureFile disponga delle credenziali di autenticazione appropriate. In caso contrario, viene restituito il messaggio seguente. Informazioni su come aggiornare le credenziali di autenticazione dell'accesso ai dati.
Messaggio di errore: 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.
Schema dati
Quando si tenta di creare un nuovo esperimento di Machine Learning automatizzato tramite il pulsante Modifica e invia nello studio di Azure Machine Learning Studio, lo schema dei dati per il nuovo esperimento deve corrispondere allo schema dei dati usati nell'esperimento originale. In caso contrario, viene visualizzato un messaggio di errore simile ai risultati seguenti. Altre informazioni su come modificare e inviare esperimenti dall'interfaccia utente di Studio.
Messaggio di errore esperimenti non visivi: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)
Messaggio di errore per i set di dati di visione: 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
La previsione del punteggio R2 è sempre zero
Questo problema si verifica se i dati di training forniti hanno serie temporali che contengono lo stesso valore per gli ultimi n_cv_splits
+ forecasting_horizon
punti dati.
Se questo criterio è previsto nella serie temporale, è possibile passare alla metrica primaria per radice errore quadratico medio normalizzato.
Distribuzione non riuscita
Per le versioni <= 1.18.0 dell'SDK, l'immagine di base creata per la distribuzione potrebbe avere esito negativo con l'errore seguente: ImportError: cannot import name cached_property from werkzeug
.
La procedura seguente può evitare il problema:
- Scaricare il pacchetto del modello
- Decomprimere il pacchetto
- Distribuire usando gli asset decompressi
Applicazione delle Funzioni di Azure
Il Machine Learning automatizzato attualmente non supporta le applicazioni delle Funzioni di Azure.
Errori del notebook di esempio
Se un notebook di esempio ha esito negativo con un errore che indica che la proprietà, il metodo o la libreria non esiste:
Assicurarsi che il kernel corretto sia stato selezionato in Jupyter Notebook. Il kernel sia visualizzato in alto a destra nella pagina del notebook. L'impostazione predefinita è azure_automl. Il kernel viene salvato come parte del notebook. Se si passa a un nuovo ambiente Conda, è necessario selezionare il nuovo kernel nel notebook.
- Per Azure Notebooks, deve essere Python 3.6.
- Per gli ambienti conda locali, deve essere il nome dell'ambiente Conda specificato in automl_setup.
Per assicurarsi che il notebook sia per la versione dell'SDK in uso,
- controllare la versione dell'SDK eseguendo
azureml.core.VERSION
in una cella di Jupyter Notebook. - È possibile scaricare la versione precedente dei notebook di esempio da GitHub con questa procedura:
- Selezionare il pulsante
Branch
- Passare alla scheda
Tags
- Selezionare la versione
- Selezionare il pulsante
- controllare la versione dell'SDK eseguendo
Limitazione dell'esperimento
Se sono presenti più di 100 esperimenti di Machine Learning automatizzati, questo potrebbe provocare lunghi tempi di esecuzione ai nuovi esperimenti di Machine Learning automatizzati.
Errore di download dell'impostazione del firewall della rete virtuale
Se si è in reti virtuali, è possibile che si verifichino errori di download del modello quando si usa l'elaborazione del linguaggio naturale (NLP) di Machine Learning automatizzato. Questo perché il traffico di rete è bloccato dal download dei modelli e dei tokenizer dalla rete CDN di Azure. Per sbloccare questo problema, consentire l'elenco degli URL seguenti nell'impostazione "Regole applicazione" dei criteri firewall della rete virtuale:
aka.ms
https://automlresources-prod.azureedge.net
Seguire le istruzioni qui per configurare le impostazioni del firewall.
Le istruzioni per la configurazione dell'area di lavoro nella rete virtuale sono disponibili qui.
Passaggi successivi
Altre informazioni su come eseguire il training di un modello di regressione con il Machine Learning automatizzato oppure come eseguire il training con il Machine Learning automatizzato in una risorsa remota.
Altre informazioni su come e dove distribuire un modello.