Share 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 naar nieuwere pakketversies verbreken de 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 nu zijn vastgemaakt.

Verwacht fouten zoals:

  • Module niet gevonden fouten 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 en scikit-learn==0.22.1nodigpandas == 0.25.1.

    • Als er een niet-overeenkomende versie is, upgradet u scikit-learn en/of pandas 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, hebt u en sckit-learn==0.20.3nodigpandas == 0.23.4.

    • 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
      

Instellen

AutoML voor pakketwijzigingen sinds versie 1.0.76 moet de vorige versie worden verwijderd voordat de update naar de nieuwe versie wordt uitgevoerd.

  • ImportError: cannot import name AutoMLConfig

    Als deze fout optreedt na een upgrade van een SDK-versie vóór v1.0.76 naar v1.0.76 of hoger, lost u de fout op door: pip uninstall azureml-train automl en vervolgens pip install azureml-train-automluit te voeren. Het script automl_setup.cmd 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 moet voor Windows of osx-64 voor Mac zijnwin-64. Als u de versie wilt controleren, gebruikt u de opdracht conda -V. 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 in 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 van conda env list en verwijder deze 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 de uitgaande poorten 53 en 80 zijn ingeschakeld. Op een virtuele Azure-machine kunt u dit doen vanuit de Azure Portal door de VM 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 moet u eerst controleren of deze automl_setup is uitgevoerd.
    • Zorg ervoor dat de subscription_id juist is. Zoek de subscription_id in de Azure Portal door Alle service 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, eastus, westcentralus, southeastasia, westeurope, australiaeast, westus2, . southcentralus
    • Zorg voor toegang tot de regio met behulp van de 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 in de map bevindt waarin de 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 map notebook of de bovenliggende map.
    3. Als er een nieuw abonnement, resourcegroep, werkruimte of regio wordt gebruikt, moet u het configuration.ipynb notebook opnieuw uitvoeren. Het rechtstreeks 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 niet standaard TensorFlow-modellen. Als u TensorFlow wilt installeren en gebruiken met uw geautomatiseerde ML-experimenten, installeert u 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'])

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 het met 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 waarin geautomatiseerde ml-pakketten worden geïnstalleerd.
  2. Voer in pip freeze en zoek tensorflownaar , als deze wordt gevonden, moet de vermelde versie 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

Exact foutbericht: 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 resulteren in 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 de Conda-omgeving waarin geautomatiseerde ML-pakketten worden geïnstalleerd.

  2. Voer in pip freeze en zoek PyJWTnaar , als deze wordt gevonden, moet de vermelde versie 2.0.0 zijn <

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 in y ter bevestiging.
    2. Installeer 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 wordt het volgende bericht 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 een nieuw geautomatiseerd ML-experiment probeert 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 How to configure an automated ML experiment with Databricks (Azure Machine Learning SDK v1) (Een geautomatiseerd ML-experiment configureren met Databricks (Azure Machine Learning SDK v1)).

Prognose R2-score is altijd nul

Dit probleem doet zich voor als de opgegeven trainingsgegevens een tijdreeks hebben met dezelfde waarde voor de laatste n_cv_splits + forecasting_horizon gegevenspunten.

Als dit patroon wordt verwacht in uw tijdreeks, kunt u uw primaire metrische gegevens overschakelen naar genormaliseerde basisgemiddelde kwadratische fout.

Mislukte implementatie

Voor versies <= 1.18.0 van de SDK kan de basisinstallatiekopieën die voor de implementatie zijn gemaakt, 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 dat de eigenschap, methode of bibliotheek niet bestaat:

  • Zorg ervoor dat de juiste kernel is geselecteerd in de Jupyter Notebook. De kernel wordt rechtsboven op de notebookpagina 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 de notebook selecteren.

    • Voor Azure Notebooks moet dit Python 3.6 zijn.
    • Voor lokale Conda-omgevingen moet dit de naam van de Conda-omgeving 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 uit te azureml.core.VERSION voeren in een Jupyter Notebook cel.
    • U kunt de vorige versie van de voorbeeldnotebooks downloaden van GitHub met de volgende stappen:
      1. Branch De knop selecteren
      2. Ga naar het Tags tabblad
      3. De versie selecteren

Beperking van experimenten

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

Fout bij het downloaden van VNet-firewallinstellingen

Als u zich in virtuele netwerken (VNets) bevindt, kunnen er modeldownloadfouten optreden 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, moet u de onderstaande URL's in de instelling 'Toepassingsregels' van het VNet-firewallbeleid toestaan:

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

Volg de instructies hier om de firewallinstellingen te configureren.

Instructies voor het configureren van de werkruimte onder vnet vindt u hier.

Volgende stappen