Delen via


Problemen met geautomatiseerde ML-experimenten in Python oplossen

VAN TOEPASSING OP: Python SDK azureml v1

In deze handleiding leert u hoe u bekende problemen in uw geautomatiseerde machine learning-experimenten kunt identificeren en oplossen met de Azure Machine Learning SDK.

Versieafhankelijkheden

AutoML afhankelijkheden van nieuwere pakketversies verbreken compatibiliteit. Na SDK-versie 1.13.0 worden modellen niet geladen in oudere SDK's vanwege incompatibiliteit tussen de oudere versies die zijn vastgemaakt in eerdere AutoML pakketten en de nieuwere versies die vandaag zijn vastgemaakt.

Verwacht fouten zoals:

  • Er zijn geen fouten gevonden in de module, zoals:

    No module named 'sklearn.decomposition._truncated_svd'

  • Importfouten, zoals:

    ImportError: cannot import name 'RollingOriginValidator',

  • Kenmerkfouten zoals:

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

Oplossingen zijn afhankelijk van uw AutoML SDK-trainingsversie:

  • Als uw AutoML SDK-trainingsversie groter is dan 1.13.0, hebt u dat nodig pandas == 0.25.1 en scikit-learn==0.22.1.

    • Als er een niet-overeenkomende versie is, werkt u scikit-learn en/of pandas bij om de versie te corrigeren met het volgende:

          pip install --upgrade pandas==0.25.1
          pip install --upgrade scikit-learn==0.22.1
      
  • Als uw AutoML SDK-trainingsversie kleiner is dan of gelijk is aan 1.12.0, moet pandas == 0.23.4 u en sckit-learn==0.20.3.

    • Als er een niet-overeenkomende versie is, downgradet u scikit-learn en/of pandas om de versie te corrigeren met het volgende:

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

Instellingen

AutoML pakketwijzigingen sinds versie 1.0.76 vereisen dat de vorige versie wordt verwijderd voordat u bijwerkt naar de nieuwe versie.

  • ImportError: cannot import name AutoMLConfig

    Als u deze fout tegenkomt nadat u een upgrade hebt uitgevoerd van een SDK-versie vóór v1.0.76 naar v1.0.76 of hoger, lost u de fout op door het volgende uit te voeren: pip uninstall azureml-train automl en vervolgens pip install azureml-train-automl. Het automl_setup.cmd script doet dit automatisch.

  • automl_setup mislukt

    • Voer in Windows automl_setup uit vanaf een Anaconda-prompt. Installeer Miniconda.

    • Zorg ervoor dat conda 64-bits versie 4.4.10 of hoger is geïnstalleerd. U kunt de bit controleren met de conda info opdracht. De platform naam moet voor Windows of osx-64 voor Mac zijnwin-64. Gebruik de opdracht conda -Vom de versie te controleren. Als u een eerdere versie hebt geïnstalleerd, kunt u deze bijwerken met behulp van de opdracht: conda update conda 32-bits controleren door uit te voeren

    • Zorg ervoor dat Conda is geïnstalleerd.

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

      1. Als de gcc: error trying to exec 'cc1plus': execvp: No such file or directory fout optreedt, installeert u de GCC-buildhulpprogramma's voor uw Linux-distributie. Gebruik bijvoorbeeld op Ubuntu de opdracht sudo apt-get install build-essential.

      2. Geef een nieuwe naam door als de eerste parameter aan automl_setup om een nieuwe Conda-omgeving te maken. Bekijk bestaande Conda-omgevingen met behulp en conda env list verwijder ze met conda env remove -n <environmentname>.

  • automl_setup_linux.sh mislukt: als automl_setup_linus.sh mislukt in Ubuntu Linux met de volgende fout: unable to execute 'gcc': No such file or directory

    1. Zorg ervoor dat uitgaande poorten 53 en 80 zijn ingeschakeld. Op een virtuele Azure-machine kunt u dit doen vanuit Azure Portal door de virtuele machine te selecteren en op Netwerken te klikken.
    2. Voer de volgende opdracht uit: sudo apt-get update
    3. Voer de volgende opdracht uit: sudo apt-get install build-essential --fix-missing
    4. Opnieuw uitvoeren automl_setup_linux.sh
  • configuration.ipynb mislukt:

    • Voor lokale conda zorgt u er eerst voor dat de automl_setup uitvoering is geslaagd.
    • Zorg ervoor dat de subscription_id juist is. Zoek de subscription_id in Azure Portal door Alle services en vervolgens Abonnementen te selecteren. De tekens '<' en '>' mogen niet worden opgenomen in de subscription_id-waarde. Heeft bijvoorbeeld subscription_id = "12345678-90ab-1234-5678-1234567890abcd" de geldige indeling.
    • Zorg ervoor dat inzender of eigenaar toegang heeft tot het abonnement.
    • Controleer of de regio een van de ondersteunde regio's is: eastus2, , eastuswestcentralus, southeastasia, westeurope, , australiaeast, westus2, . southcentralus
    • Zorg ervoor dat u toegang hebt tot de regio met behulp van Azure Portal.
  • workspace.from_config mislukt:

    Als de aanroep ws = Workspace.from_config() mislukt:

    1. Zorg ervoor dat het notebook configuration.ipynb is uitgevoerd.
    2. Als het notebook wordt uitgevoerd vanuit een map die zich niet onder de map bevindt waarop het configuration.ipynb is uitgevoerd, kopieert u de map aml_config en het bestand config.json dat het bevat naar de nieuwe map. Workspace.from_config leest de config.json voor de notitieblokmap of de bovenliggende map.
    3. Als er een nieuw abonnement, resourcegroep, werkruimte of regio wordt gebruikt, moet u ervoor zorgen dat u het configuration.ipynb notebook opnieuw uitvoert. Het wijzigen van config.json werkt alleen als de werkruimte al bestaat in de opgegeven resourcegroep onder het opgegeven abonnement.
    4. Als u de regio wilt wijzigen, wijzigt u de werkruimte, resourcegroep of het abonnement. Workspace.create maakt of werkt een werkruimte niet bij als deze al bestaat, zelfs niet als de opgegeven regio anders is.

TensorFlow

Vanaf versie 1.5.0 van de SDK installeert geautomatiseerde machine learning standaard geen TensorFlow-modellen. Als u TensorFlow wilt installeren en gebruiken met uw geautomatiseerde ML-experimenten, installeert tensorflow==1.12.0 u deze 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'])

Numpy-fouten

  • import numpy mislukt in Windows: sommige Windows-omgevingen zien een fout bij het laden van numpy met de nieuwste Python-versie 3.6.8. Als u dit probleem ziet, probeert u Python versie 3.6.7.

  • import numpy mislukt: Controleer de TensorFlow-versie in de geautomatiseerde ml Conda-omgeving. Ondersteunde versies zijn < 1.13. Verwijder TensorFlow uit de omgeving als versie = 1.13 is >.

U kunt de versie van TensorFlow als volgt controleren en verwijderen:

  1. Start een opdrachtshell, activeer conda-omgeving waar geautomatiseerde ml-pakketten zijn geïnstalleerd.
  2. Voer in pip freeze en zoek naartensorflow, indien gevonden, de vermelde versie moet 1.13 zijn <
  3. Als de vermelde versie geen ondersteunde versie is, pip uninstall tensorflow voert u in de opdrachtshell y in voor bevestiging.

jwt.exceptions.DecodeError

Exacte foutmelding: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

Voor SDK-versies <= 1.17.0 kan de installatie leiden tot een niet-ondersteunde versie van PyJWT. Controleer of de PyJWT-versie in de geautomatiseerde ml conda-omgeving een ondersteunde versie is. Dat is PyJWT versie < 2.0.0.

U kunt de versie van PyJWT als volgt controleren:

  1. Start een opdrachtshell en activeer conda-omgeving waarin geautomatiseerde ML-pakketten worden geïnstalleerd.

  2. Voer pip freeze 2.0.0.0 in en zoek dezePyJWT, indien gevonden.<

Als de vermelde versie geen ondersteunde versie is:

  1. Overweeg een upgrade uit te voeren naar de nieuwste versie van de AutoML SDK: pip install -U azureml-sdk[automl]

  2. Als dat niet haalbaar is, verwijdert u PyJWT uit de omgeving en installeert u de juiste versie als volgt:

    1. pip uninstall PyJWT in de opdrachtshell en voer deze y in voor bevestiging.
    2. Installeren met behulp van pip install 'PyJWT<2.0.0'.

Toegang tot gegevens

Voor geautomatiseerde ML-taken moet u ervoor zorgen dat het bestandsgegevensarchief dat verbinding maakt met uw AzureFile-opslag de juiste verificatiereferenties heeft. Anders worden de volgende berichtresultaten weergegeven. Meer informatie over het bijwerken van uw verificatiereferenties voor gegevenstoegang.

Foutbericht: 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.

Gegevensschema

Wanneer u probeert een nieuw geautomatiseerd ML-experiment te maken via de knop Bewerken en verzenden in de Azure Machine Learning-studio, moet het gegevensschema voor het nieuwe experiment overeenkomen met het schema van de gegevens die in het oorspronkelijke experiment zijn gebruikt. Anders wordt er een foutbericht weergegeven dat lijkt op de volgende resultaten. Meer informatie over het bewerken en verzenden van experimenten vanuit de gebruikersinterface van studio.

Foutbericht niet-visuele experimenten: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)

Foutbericht voor vision-gegevenssets: 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

Zie Hoe u een geautomatiseerd ML-experiment configureert met Databricks (Azure Machine Learning SDK v1).

R2-score voorspellen is altijd nul

Dit probleem doet zich voor als de opgegeven trainingsgegevens tijdreeksen bevatten die dezelfde waarde voor de laatste n_cv_splits + forecasting_horizon gegevenspunten bevatten.

Als dit patroon wordt verwacht in uw tijdreeks, kunt u uw primaire metrische waarde omzetten in genormaliseerde wortel van gemiddelde kwadratische fout.

Mislukte implementatie

Voor versies <= 1.18.0 van de SDK kan de basisinstallatiekopieën die zijn gemaakt voor implementatie mislukken met de volgende fout: ImportError: cannot import name cached_property from werkzeug

De volgende stappen kunnen het probleem omzeilen:

  1. Het modelpakket downloaden
  2. Pak het pakket uit
  3. Implementeren met behulp van de uitgepakte assets

Azure Functions-toepassing

Geautomatiseerde ML biedt momenteel geen ondersteuning voor Azure Functions-toepassingen.

Voorbeeld van notebookfouten

Als een voorbeeldnotitieblok mislukt met een fout die eigenschap, methode of bibliotheek niet bestaat:

  • Zorg ervoor dat de juiste kernel is geselecteerd in jupyter notebook. De kernel wordt rechtsboven op de notitieblokpagina weergegeven. De standaardwaarde is azure_automl. De kernel wordt opgeslagen als onderdeel van het notebook. Als u overschakelt naar een nieuwe Conda-omgeving, moet u de nieuwe kernel in het notebook selecteren.

    • Voor Azure Notebooks moet dit Python 3.6 zijn.
    • Voor lokale Conda-omgevingen moet dit de conda-omgevingsnaam zijn die u hebt opgegeven in automl_setup.
  • Om ervoor te zorgen dat het notebook voor de SDK-versie is die u gebruikt,

    • Controleer de SDK-versie door deze uit te azureml.core.VERSION voeren in een Jupyter Notebook-cel.
    • U kunt de vorige versie van de voorbeeldnotebooks downloaden vanuit GitHub met de volgende stappen:
      1. Selecteer de Branch knop
      2. Naar het Tags tabblad navigeren
      3. Selecteer de versie

Beperking van experiment

Als u meer dan 100 geautomatiseerde ML-experimenten hebt, kan dit ertoe leiden dat nieuwe geautomatiseerde ML-experimenten lange uitvoeringstijden hebben.

Downloaden van VNet-firewallinstelling mislukt

Als u zich onder virtuele netwerken (VNets) bevindt, kunnen er fouten optreden bij het downloaden van modellen bij het gebruik van AutoML NLP. Dit komt doordat netwerkverkeer wordt geblokkeerd voor het downloaden van de modellen en tokenizers van Azure CDN. Als u dit wilt deblokkeren, staat u de onderstaande URL's toe in de instelling 'Toepassingsregels' van het VNet-firewallbeleid:

  • aka.ms
  • https://automlresources-prod.azureedge.net

Volg de instructies hier om de firewallinstellingen te configureren.

Hier vindt u instructies voor het configureren van werkruimten onder vnet.

Volgende stappen