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 nodigpandas == 0.25.1
enscikit-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, moetpandas == 0.23.4
u ensckit-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 vervolgenspip 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. Deplatform
naam moet voor Windows ofosx-64
voor Mac zijnwin-64
. Gebruik de opdrachtconda -V
om 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 voerenZorg ervoor dat Conda is geïnstalleerd.
Linux -
gcc: error trying to exec 'cc1plus'
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 opdrachtsudo apt-get install build-essential
.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 metconda 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
- 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.
- Voer de volgende opdracht uit:
sudo apt-get update
- Voer de volgende opdracht uit:
sudo apt-get install build-essential --fix-missing
- 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
, ,eastus
westcentralus
,southeastasia
,westeurope
, ,australiaeast
,westus2
, .southcentralus
- Zorg ervoor dat u toegang hebt tot de regio met behulp van Azure Portal.
- Voor lokale conda zorgt u er eerst voor dat de
workspace.from_config mislukt:
Als de aanroep
ws = Workspace.from_config()
mislukt:- Zorg ervoor dat het notebook configuration.ipynb is uitgevoerd.
- 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. - 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. - 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:
- Start een opdrachtshell, activeer conda-omgeving waar geautomatiseerde ml-pakketten zijn geïnstalleerd.
- Voer in
pip freeze
en zoek naartensorflow
, indien gevonden, de vermelde versie moet 1.13 zijn < - 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:
Start een opdrachtshell en activeer conda-omgeving waarin geautomatiseerde ML-pakketten worden geïnstalleerd.
Voer
pip freeze
2.0.0.0 in en zoek dezePyJWT
, indien gevonden.<
Als de vermelde versie geen ondersteunde versie is:
Overweeg een upgrade uit te voeren naar de nieuwste versie van de AutoML SDK:
pip install -U azureml-sdk[automl]
Als dat niet haalbaar is, verwijdert u PyJWT uit de omgeving en installeert u de juiste versie als volgt:
pip uninstall PyJWT
in de opdrachtshell en voer dezey
in voor bevestiging.- 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:
- Het modelpakket downloaden
- Pak het pakket uit
- 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:
- Selecteer de
Branch
knop - Naar het
Tags
tabblad navigeren - Selecteer de versie
- Selecteer de
- Controleer de SDK-versie door deze uit te
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
Meer informatie over het trainen van een regressiemodel met geautomatiseerde machine learning of het trainen met geautomatiseerde machine learning op een externe resource.
Meer informatie over hoe en waar u een model kunt implementeren.