Condividi tramite


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 necessari pandas == 0.25.1 e scikit-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 necessari pandas == 0.23.4 e sckit-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 quindi pip 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. Il platform deve essere win-64 per Windows o osx-64 per Mac. Per controllare la versione, usare il comando conda -V. Se è installata una versione precedente, è possibile aggiornarla usando il comando : conda update conda. Per controllare a 32 bit eseguendo

    • Assicurarsi che Conda sia installato.

    • Linux: gcc: error trying to exec 'cc1plus'

      1. 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 comando sudo apt-get install build-essential.

      2. 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 con conda 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

    1. 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.
    2. Eseguire il comando sudo apt-get update
    3. Eseguire il comando sudo apt-get install build-essential --fix-missing
    4. 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.
  • workspace.from_config ha esito negativo:

    Se la chiamata ws = Workspace.from_config() ha esito negativo:

    1. Verificare che il notebook configuration.ipynb sia stato eseguito correttamente.
    2. 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.
    3. 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.
    4. 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:

  1. Avviare una shell dei comandi, attivare l'ambiente Conda in cui sono installati pacchetti ml automatizzati.
  2. Immettere pip freeze e cercare tensorflow, se presente, la versione elencata deve essere < 1.13
  3. 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:

  1. Avviare una shell dei comandi e attivare l'ambiente Conda in cui sono installati i pacchetti ml automatizzati.

  2. Immettere pip freeze e cercare PyJWT, se presente, la versione elencata deve essere < 2.0.0

Se la versione elencata non è supportata:

  1. Prendere in considerazione l'aggiornamento alla versione più recente di AutoML SDK: pip install -U azureml-sdk[automl]

  2. Se non è possibile, disinstallare PyJWT dall'ambiente e installare la versione corretta come indicato di seguito:

    1. pip uninstall PyJWT nella shell dei comandi e immettere y per confermare.
    2. 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

Vedere Come configurare un esperimento di Machine Learning automatizzato con Databricks (Azure Machine Learning SDK v1).

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:

  1. Scaricare il pacchetto del modello
  2. Decomprimere il pacchetto
  3. 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:
      1. Selezionare il pulsante Branch
      2. Passare alla scheda Tags
      3. Selezionare la versione

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