Résoudre les problèmes d’expériences de ML automatisé

S’APPLIQUE À :Kit de développement logiciel (SDK) Python azureml v1

Dans ce guide, découvrez comment identifier et résoudre les problèmes connus dans vos expériences de machine learning automatisé avec le kit SDK Azure Machine Learning.

Dépendances de versions

Les dépendances AutoML vis-à-vis des versions de package récentes cassent la compatibilité. Après la version 1.13.0 du SDK, les modèles ne sont pas chargés dans les anciens SDK en raison d’une incompatibilité entre les anciennes versions épinglées dans les packages AutoML précédents et les versions récentes épinglées d’aujourd’hui.

Vous pouvez vous attendre à obtenir diverses erreurs, à savoir :

  • Des erreurs de type « Module introuvable », telles que

    No module named 'sklearn.decomposition._truncated_svd'

  • Des erreurs d’importation, telles que

    ImportError: cannot import name 'RollingOriginValidator',

  • Des erreurs d’attribut, telles que

    AttributeError: 'SimpleImputer' object has no attribute 'add_indicator'

La résolution dépend de votre version de formation du SDK AutoML :

  • Si votre version de formation du kit de développement logiciel (SDK) AutoML est supérieure à 1.13.0, vous avez besoin de pandas == 0.25.1 et de scikit-learn==0.22.1.

    • En cas d’incompatibilité de version, mettez à niveau scikit-learn et/ou pandas pour corriger la version comme suit :

          pip install --upgrade pandas==0.25.1
          pip install --upgrade scikit-learn==0.22.1
      
  • Si votre version de formation du kit de développement logiciel (SDK) AutoML est inférieure ou égale à 1.12.0, vous avez besoin de pandas == 0.23.4 et de sckit-learn==0.20.3.

    • En cas d’incompatibilité de version, passez à une version antérieure appropriée de scikit-learn et/ou de pandas comme suit :

        pip install --upgrade pandas==0.23.4
        pip install --upgrade scikit-learn==0.20.3
      

Programme d’installation

Les modifications dont a fait l’objet le package AutoML depuis la version 1.0.76 nécessitent la désinstallation de la version précédente avant de passer à la nouvelle.

  • ImportError: cannot import name AutoMLConfig

    Si vous rencontrez cette erreur après une mise à niveau à partir d’une version du SDK comprise entre v1.0.76 et v1.0.76 ou une version ultérieure, résolvez l’erreur en exécutant pip uninstall azureml-train automl puis pip install azureml-train-automl. Le script automl_setup.cmd le fait automatiquement.

  • Échec d’automl_setup

    • Sur Windows, exécutez automl_setup à partir d’une invite Anaconda. Installez Miniconda.

    • Vérifiez que la version 4.4.10 ou ultérieure de conda 64 bits est installée. Vous pouvez vérifier le bit avec la commande conda info. La platform doit être win-64 pour Windows ou osx-64 pour Mac. Pour vérifier la version, utilisez la commande conda -V. Si une version précédente est installée, vous pouvez la mettre à jour à l’aide de la commande : conda update conda. Pour vérifier la version 32 bits, exécutez

    • Vérifiez que conda est installé.

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

      1. Si vous rencontrez l’erreur gcc: error trying to exec 'cc1plus': execvp: No such file or directory, installez les outils de génération GCC pour votre distribution Linux. Par exemple, sur Ubuntu, utilisez la commande sudo apt-get install build-essential.

      2. Transmettez un nouveau nom comme premier paramètre à automl_setup pour créer un nouvel environnement Conda. Affichez les environnements Conda existants à l’aide de conda env list et supprimez-les avec conda env remove -n <environmentname>.

  • Échec d’automl_setup_linux.sh : Si automl_setup_linus.sh échoue sur Ubuntu Linux avec l’erreur : unable to execute 'gcc': No such file or directory

    1. Assurez-vous que les ports de sortie 53 et 80 sont activés. Sur une machine virtuelle Azure, vous pouvez le faire à partir du portail Azure en sélectionnant la machine virtuelle et en cliquant sur Réseau.
    2. Exécutez la commande sudo apt-get update
    3. Exécutez la commande sudo apt-get install build-essential --fix-missing
    4. Exécutez de nouveau automl_setup_linux.sh
  • Échec de configuration.ipynb  :

    • Pour un environnement conda local, vérifiez d’abord que automl_setup s’est bien exécuté.
    • Assurez-vous que le paramètre subscription_id est correct. Recherchez le subscription_id dans le portail Azure en sélectionnant Tous les services, puis Abonnements. Les caractères « < » et « > » ne doivent pas être inclus dans la valeur subscription_id. Par exemple, subscription_id = "12345678-90ab-1234-5678-1234567890abcd" a le format valide.
    • Vérifiez que le Contributeur ou le Propriétaire a accès à l’abonnement.
    • Vérifiez que la région est l’une des régions prises en charge : eastus2, eastus, westcentralus, southeastasia, westeurope, australiaeast, westus2, southcentralus.
    • Vérifiez l’accès à la région à l’aide du portail Azure.
  • Échec de workspace.from_config :

    Si l’appel ws = Workspace.from_config() échoue :

    1. Assurez-vous que le notebook configuration.ipynb s’est exécuté correctement.
    2. Si le notebook est exécuté à partir d’un dossier qui ne se trouve pas sous le dossier dans lequel configuration.ipynb a été exécuté, copiez le dossier aml_config et le fichier config.json qu’il contient dans le nouveau dossier. Workspace.from_config lit le fichier config.json pour le dossier du notebook ou son dossier parent.
    3. Si vous utilisez un nouvel abonnement, un nouveau groupe de ressources, un nouvel espace de travail ou une nouvelle région, veillez à exécuter à nouveau le notebook configuration.ipynb. La modification directe de config.json ne fonctionnera que si l’espace de travail existe déjà dans le groupe de ressources spécifié sous l’abonnement spécifié.
    4. Si vous souhaitez modifier la région, modifiez l’espace de travail, le groupe de ressources ou l’abonnement. Workspace.create ne crée pas ni ne met à jour un espace de travail s’il existe déjà, même si la région spécifiée est différente.

TensorFlow

Depuis la version 1.5.0 du Kit de développement logiciel (SDK), le Machine Learning automatisé n’installe pas de modèles TensorFlow par défaut. Pour installer TensorFlow et l’utiliser avec vos expériences de ML automatisé, installez 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'])

Échecs de Numpy

  • import numpy échoue dans Windows : Certains environnements Windows rencontrent une erreur lors du chargement de NumPy avec la dernière version de Python 3.6.8. Si vous rencontrez ce problème, essayez avec la version 3.6.7 de Python.

  • import numpy échoue  : Vérifiez la version de TensorFlow dans l'environnement Conda de Machine Learning automatisé. Les versions prises en charge sont celles antérieures à la version 1.13. Désinstallez TensorFlow de l’environnement si la version utilisée est supérieure ou égale à 1.13.

Vous pouvez vérifier la version de TensorFlow et la désinstaller comme suit :

  1. Démarrez un interpréteur de commandes, puis activez l’environnement Conda dans lequel les packages de ML automatisé sont installés.
  2. Entrez pip freeze et recherchez tensorflow. Le cas échéant, la version indiquée doit être antérieure à la version 1.13
  3. Si la version indiquée n’est pas une version prise en charge, exécutez pip uninstall tensorflow dans l’interpréteur de commandes et entrez « y » pour confirmer.

jwt.exceptions.DecodeError

Message d’erreur exact : jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

Pour les versions du SDK supérieures ou égales à 1.17.0, l’installation peut aboutir à une version non prise en charge de PyJWT. Vérifiez que la version de PyJWT dans l’environnement conda de ml automatisé est une version prise en charge. Il doit s’agir d’une version de PyJWT antérieure à 2.0.0.

Pour vérifier la version de PyJWT, procédez comme suit :

  1. Démarrez un interpréteur de commandes et activez l’environnement conda dans lequel les packages de ML automatisé sont installés.

  2. Entrez pip freeze et recherchez PyJWT. Le cas échéant, la version indiquée doit être antérieure à la version 2.0.0

Si la version indiquée n'est pas prise en charge :

  1. Envisagez une mise à niveau vers la dernière version du SDK AutoML : pip install -U azureml-sdk[automl]

  2. Si cela se révèle impossible, désinstallez PyJWT de l'environnement et installez la version appropriée en procédant comme suit :

    1. pip uninstall PyJWT dans l'interpréteur de commandes et entrez y pour confirmer.
    2. Installez à l’aide de pip install 'PyJWT<2.0.0'.

Accès aux données

Pour les tâches de ML automatisé, vous devez vous assurer que le magasin de données de fichiers qui se connecte à votre stockage AzureFile dispose des informations d’identification d’authentification appropriées. Si ce n’est pas le cas, le message suivant s’affiche. Découvrez comment mettre à jour vos informations d’authentification d’accès aux données.

Message d’erreur : 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.

Schéma de données

Lorsque vous essayez de créer une expérience de ML automatisé via le bouton Modifier et envoyer dans Azure Machine Learning Studio, le schéma de données de la nouvelle expérience doit correspondre au schéma des données utilisées dans l’expérience d’origine. Sinon, un message d’erreur semblable au suivant s’affiche : Apprenez-en davantage sur la façon de modifier et envoyer des expériences à partir de l’interface utilisateur de Studio.

Message d’erreur pour les expériences non-vision : Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)

Message d’erreur pour les jeux de données de vision : 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

Consultez Comment configurer une expérience AutoML avec Databricks (Kit de développement logiciel (SDK) Azure Machine Learning v1).

Le score R2 de prévision est toujours égal à zéro

Ce problème survient si les données d’apprentissage fournies contiennent des séries chronologiques contenant la même valeur pour les n_cv_splits + forecasting_horizon derniers points de données.

Si ce modèle est attendu dans votre série chronologique, vous pouvez faire passer votre métrique principale en erreur quadratique moyenne normalisée.

Déploiement en échec

Pour les versions supérieures ou égales à 1.18.0 du SDK, l’image de base créée pour le déploiement peut échouer avec l’erreur suivante : ImportError: cannot import name cached_property from werkzeug.

La procédure suivante peut permettre de contourner le problème :

  1. Téléchargez le package de modèle.
  2. Décompressez le package.
  3. Déployez à l’aide des ressources décompressées.

Application Azure Functions

Le ML automatisé ne prend pas actuellement en charge les applications Azure Functions.

Échecs d’exemple de notebook

Si un exemple de notebook échoue avec une erreur indiquant que la propriété, la méthode ou la bibliothèque n'existe pas :

  • Assurez-vous que le noyau approprié a été sélectionné dans Jupyter Notebook. Le noyau est affiché en haut à droite de la page du notebook. La valeur par défaut est azure_automl. Le noyau est enregistré dans le cadre du notebook. Si vous basculez vers un nouvel environnement conda, vous devez sélectionner le nouveau noyau dans le notebook.

    • Pour Azure Notebooks, il doit s’agir de Python 3.6.
    • Pour les environnements Conda locaux, il doit s'agir du nom de l'environnement Conda que vous avez spécifié dans automl_setup.
  • Pour vérifier que le notebook convient pour la version du SDK que vous utilisez,

    • Vérifiez la version du SDK en exécutant azureml.core.VERSION dans une cellule Jupyter Notebook.
    • Vous pouvez télécharger la version précédente des exemples de notebook à partir de GitHub en effectuant ces étapes :
      1. Sélectionnez le bouton Branch.
      2. Accédez à l’onglet Tags.
      3. Sélectionnez la version.

Limitation des expériences

Si vous avez plus de 100 expériences de ML automatisé, cela peut allonger le délai d’exécution des nouvelles expériences de ML automatisé.

Échec de téléchargement du paramètre de pare-feu de réseau virtuel

Si vous êtes sous des réseaux virtuels, vous pouvez rencontrer des échecs de téléchargement de modèle lors de l’utilisation d’AutoML NLP. Cela est dû au fait que le trafic réseau est bloqué pour le téléchargement des modèles et des générateurs de jetons à partir d’Azure CDN. Pour débloquer cela, veuillez autoriser la liste des URL ci-dessous dans le paramètre « Règles d’application » de la stratégie de pare-feu de réseau virtuel :

Suivez les instructions ci-dessous pour configurer les paramètres du pare-feu.

Les instructions de configuration de l’espace de travail sous réseau virtuel sont disponibles ici.

Étapes suivantes