Rozwiązywanie problemów z eksperymentami zautomatyzowanego uczenia maszynowego w języku Python
DOTYCZY: Zestaw SDK języka Python w wersji 1
Z tego przewodnika dowiesz się, jak identyfikować i rozwiązywać znane problemy w eksperymentach zautomatyzowanego uczenia maszynowego za pomocą zestawu AZURE Machine Learning SDK.
Zależności wersji
AutoML
zależności od nowszych wersji pakietów przerywają zgodność. Po zestawie SDK w wersji 1.13.0 modele nie są ładowane w starszych zestawach SDK z powodu niezgodności między starszymi wersjami przypiętymi w poprzednich AutoML
pakietach, a nowszymi wersjami przypiętymi dzisiaj.
Oczekiwano błędów, takich jak:
Nie znaleziono błędów modułu, takich jak:
No module named 'sklearn.decomposition._truncated_svd'
Błędy importu, takie jak,
ImportError: cannot import name 'RollingOriginValidator'
,Błędy atrybutów, takie jak,
AttributeError: 'SimpleImputer' object has no attribute 'add_indicator'
Rozwiązania zależą od wersji szkoleniowej AutoML
zestawu SDK:
AutoML
Jeśli wersja szkoleniowa zestawu SDK jest większa niż 1.13.0, potrzebne są elementypandas == 0.25.1
iscikit-learn==0.22.1
.Jeśli występuje niezgodność wersji, uaktualnij bibliotekę scikit-learn i/lub bibliotekę pandas, aby poprawić wersję przy użyciu następujących elementów:
pip install --upgrade pandas==0.25.1 pip install --upgrade scikit-learn==0.22.1
AutoML
Jeśli wersja szkoleniowa zestawu SDK jest mniejsza lub równa 1.12.0, potrzebne są elementypandas == 0.23.4
isckit-learn==0.20.3
.Jeśli występuje niezgodność wersji, należy obniżyć wersję biblioteki scikit-learn i/lub biblioteki pandas, aby poprawić wersję, wykonując następujące czynności:
pip install --upgrade pandas==0.23.4 pip install --upgrade scikit-learn==0.20.3
Ustawienia
AutoML
zmiany pakietu od wersji 1.0.76 wymagają odinstalowania poprzedniej wersji przed aktualizacją do nowej wersji.
ImportError: cannot import name AutoMLConfig
Jeśli ten błąd wystąpi po uaktualnieniu z wersji zestawu SDK przed wersją 1.0.76 do wersji 1.0.76 lub nowszej, rozwiąż ten błąd, uruchamiając polecenie:
pip uninstall azureml-train automl
ipip install azureml-train-automl
. Skrypt automl_setup.cmd wykonuje to automatycznie.automl_setup kończy się niepowodzeniem
W systemie Windows uruchom automl_setup z poziomu wiersza polecenia platformy Anaconda. Zainstaluj narzędzie Miniconda.
Upewnij się, że zainstalowano 64-bitową wersję conda 4.4.10 lub nowszą. Możesz sprawdzić bit za
conda info
pomocą polecenia . Elementplatform
powinien byćwin-64
przeznaczony dla systemu Windows lubosx-64
dla komputerów Mac. Aby sprawdzić wersję, użyj poleceniaconda -V
. Jeśli masz zainstalowaną poprzednią wersję, możesz ją zaktualizować przy użyciu polecenia :conda update conda
. Aby sprawdzić 32-bitową uruchomić polecenieUpewnij się, że conda jest zainstalowana.
Linux —
gcc: error trying to exec 'cc1plus'
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
Jeśli wystąpi błąd, zainstaluj narzędzia kompilacji GCC dla dystrybucji systemu Linux. Na przykład w systemie Ubuntu użyj poleceniasudo apt-get install build-essential
.Przekaż nową nazwę jako pierwszy parametr do automl_setup, aby utworzyć nowe środowisko conda. Wyświetl istniejące środowiska conda przy użyciu polecenia i usuń je za pomocą
conda env list
poleceniaconda env remove -n <environmentname>
.
automl_setup_linux.sh kończy się niepowodzeniem: jeśli automl_setup_linus.sh kończy się niepowodzeniem w systemie Ubuntu Linux z powodu błędu:
unable to execute 'gcc': No such file or directory
- Upewnij się, że porty wychodzące 53 i 80 są włączone. Na maszynie wirtualnej platformy Azure możesz to zrobić w witrynie Azure Portal, wybierając maszynę wirtualną i klikając pozycję Sieć.
- Uruchom polecenie:
sudo apt-get update
- Uruchom polecenie:
sudo apt-get install build-essential --fix-missing
- Uruchom
automl_setup_linux.sh
ponownie
configuration.ipynb kończy się niepowodzeniem:
- W przypadku lokalnego środowiska conda najpierw upewnij się, że
automl_setup
zostało pomyślnie uruchomione. - Upewnij się, że subscription_id jest poprawna. Znajdź subscription_id w witrynie Azure Portal, wybierając pozycję Wszystkie usługi, a następnie pozycję Subskrypcje. Znaki "<" i ">" nie powinny być uwzględniane w wartości subscription_id. Na przykład
subscription_id = "12345678-90ab-1234-5678-1234567890abcd"
ma prawidłowy format. - Upewnij się, że dostęp współautora lub właściciela do subskrypcji.
- Sprawdź, czy region jest jednym z obsługiwanych regionów:
eastus2
, ,eastus
,westeurope
westcentralus
australiaeast
southeastasia
,westus2
, .southcentralus
- Upewnij się, że dostęp do regionu jest uzyskiwany przy użyciu witryny Azure Portal.
- W przypadku lokalnego środowiska conda najpierw upewnij się, że
workspace.from_config kończy się niepowodzeniem:
Jeśli wywołanie
ws = Workspace.from_config()
nie powiedzie się:- Upewnij się, że notes configuration.ipynb został uruchomiony pomyślnie.
- Jeśli notes jest uruchamiany z folderu, który nie znajduje się w folderze, w którym
configuration.ipynb
został uruchomiony, skopiuj folder aml_config i plik config.json, który zawiera w nowym folderze. Workspace.from_config odczytuje config.json dla folderu notesu lub jego folderu nadrzędnego. - Jeśli jest używana nowa subskrypcja, grupa zasobów, obszar roboczy lub region, upewnij się, że notes został uruchomiony
configuration.ipynb
ponownie. Zmiana config.json bezpośrednio będzie działać tylko wtedy, gdy obszar roboczy już istnieje w określonej grupie zasobów w ramach określonej subskrypcji. - Jeśli chcesz zmienić region, zmień obszar roboczy, grupę zasobów lub subskrypcję.
Workspace.create
program nie utworzy ani nie zaktualizuje obszaru roboczego, jeśli już istnieje, nawet jeśli określony region jest inny.
TensorFlow
Od wersji 1.5.0 zestawu SDK zautomatyzowane uczenie maszynowe nie instaluje domyślnie modeli TensorFlow. Aby zainstalować bibliotekę TensorFlow i używać jej z eksperymentami zautomatyzowanego uczenia maszynowego, zainstaluj program za pośrednictwem programu tensorflow==1.12.0
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'])
Błędy narzędzia Numpy
import numpy
niepowodzenie w systemie Windows: niektóre środowiska systemu Windows widzą błąd ładowania numpy z najnowszą wersją języka Python w wersji 3.6.8. Jeśli widzisz ten problem, spróbuj użyć języka Python w wersji 3.6.7.import numpy
niepowodzenie: sprawdź wersję biblioteki TensorFlow w zautomatyzowanym środowisku ml conda. Obsługiwane wersje to < 1.13. Odinstaluj bibliotekę TensorFlow ze środowiska, jeśli jest to wersja >= 1.13.
Możesz sprawdzić wersję biblioteki TensorFlow i odinstalować w następujący sposób:
- Uruchom powłokę poleceń, aktywuj środowisko conda, w którym instalowane są zautomatyzowane pakiety uczenia maszynowego.
- Wprowadź
pip freeze
i wyszukajtensorflow
ciąg , jeśli zostanie znaleziona, wyświetlana wersja powinna mieć < wartość 1.13 - Jeśli wymieniona wersja nie jest obsługiwaną wersją,
pip uninstall tensorflow
w powłoce poleceń i wprowadź wartość y w celu potwierdzenia.
jwt.exceptions.DecodeError
Dokładny komunikat o błędzie: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode()
.
W przypadku wersji <zestawu SDK = 1.17.0 instalacja może spowodować nieobsługiwaną wersję PyJWT. Sprawdź, czy wersja PyJWT w zautomatyzowanym środowisku ml conda jest obsługiwaną wersją. To jest PyJWT w wersji < 2.0.0.
Możesz sprawdzić wersję PyJWT w następujący sposób:
Uruchom powłokę poleceń i aktywuj środowisko conda, w którym instalowane są zautomatyzowane pakiety uczenia maszynowego.
Wprowadź
pip freeze
i wyszukajPyJWT
ciąg , jeśli zostanie znaleziona, wyświetlona wersja powinna mieć < wartość 2.0.0
Jeśli wymieniona wersja nie jest obsługiwana:
Rozważ uaktualnienie do najnowszej wersji zestawu AutoML SDK:
pip install -U azureml-sdk[automl]
Jeśli nie jest to możliwe, odinstaluj narzędzie PyJWT ze środowiska i zainstaluj odpowiednią wersję w następujący sposób:
pip uninstall PyJWT
w powłoce poleceń i wprowadź wy
celu potwierdzenia.- Zainstaluj przy użyciu polecenia
pip install 'PyJWT<2.0.0'
.
Dostęp do danych
W przypadku zautomatyzowanych zadań uczenia maszynowego należy upewnić się, że magazyn danych plików łączący się z usługą AzureFile Storage ma odpowiednie poświadczenia uwierzytelniania. W przeciwnym razie następujące wyniki komunikatu. Dowiedz się, jak zaktualizować poświadczenia uwierzytelniania dostępu do danych.
Komunikat o błędzie: 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.
Schemat danych
Podczas próby utworzenia nowego eksperymentu zautomatyzowanego uczenia maszynowego za pomocą przycisku Edytuj i prześlij w usłudze Azure Machine Learning Studio schemat danych dla nowego eksperymentu musi być zgodny ze schematem danych użytych w oryginalnym eksperymencie. W przeciwnym razie komunikat o błędzie podobny do poniższych wyników. Dowiedz się więcej na temat edytowania i przesyłania eksperymentów z interfejsu użytkownika programu Studio.
Komunikat o błędzie — eksperymenty niezwiązane z wizją: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)
Komunikat o błędzie dla zestawów danych przetwarzania obrazów: 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
Prognozowanie wyniku R2 zawsze wynosi zero
Ten problem występuje, jeśli podane dane szkoleniowe zawierają szeregi czasowe zawierające tę samą wartość dla ostatnich n_cv_splits
+ forecasting_horizon
punktów danych.
Jeśli ten wzorzec jest oczekiwany w szeregach czasowych, możesz przełączyć podstawową metryki na znormalizowany błąd średniokwadratowy katalogu głównego.
Wdrażanie nie powiodło się
W przypadku wersji <= 1.18.0 zestawu SDK podstawowy obraz utworzony na potrzeby wdrożenia może zakończyć się niepowodzeniem z powodu następującego błędu: ImportError: cannot import name cached_property from werkzeug
.
Poniższe kroki mogą obejść ten problem:
- Pobieranie pakietu modelu
- Rozpakuj pakiet
- Wdrażanie przy użyciu rozpakowanych zasobów
Aplikacja usługi Azure Functions
Zautomatyzowane uczenie maszynowe nie obsługuje obecnie aplikacji usługi Azure Functions.
Błędy przykładowego notesu
Jeśli przykładowy notes zakończy się niepowodzeniem z powodu błędu, że właściwość, metoda lub biblioteka nie istnieje:
Upewnij się, że w notesie Jupyter Notebook wybrano prawidłowe jądro. Jądro jest wyświetlane w prawym górnym rogu strony notesu. Wartość domyślna to azure_automl. Jądro jest zapisywane w ramach notesu. Jeśli przejdziesz do nowego środowiska conda, musisz wybrać nowe jądro w notesie.
- W przypadku usługi Azure Notebooks powinna to być wersja Python 3.6.
- W przypadku lokalnych środowisk Conda powinna to być nazwa środowiska Conda określona w automl_setup.
Aby upewnić się, że notes jest przeznaczony dla używanej wersji zestawu SDK,
- Sprawdź wersję zestawu SDK, wykonując polecenie
azureml.core.VERSION
w komórce notesu Jupyter Notebook. - Poprzednią wersję przykładowych notesów można pobrać z usługi GitHub, wykonując następujące kroki:
Branch
Wybierz przycisk- Przejdź do
Tags
karty - Wybierz wersję
- Sprawdź wersję zestawu SDK, wykonując polecenie
Ograniczanie przepływności eksperymentów
Jeśli masz ponad 100 eksperymentów zautomatyzowanego uczenia maszynowego, może to spowodować, że nowe eksperymenty zautomatyzowanego uczenia maszynowego będą miały długi czas uruchomić.
Niepowodzenie pobierania ustawień zapory sieci wirtualnej
Jeśli korzystasz z sieci wirtualnych (sieci wirtualnych), możesz napotkać błędy pobierania modelu podczas korzystania z funkcji nlP rozwiązania AutoML. Dzieje się tak, ponieważ ruch sieciowy nie może pobierać modeli i tokenizatorów z usługi Azure CDN. Aby to odblokować, zezwól na listę poniższych adresów URL w ustawieniu "Reguły aplikacji" zasad zapory sieci wirtualnej:
aka.ms
https://automlresources-prod-d0eaehh7g8andvav.b02.azurefd.net
Postępuj zgodnie z instrukcjami podanymi tutaj, aby skonfigurować ustawienia zapory.
Instrukcje dotyczące konfigurowania obszaru roboczego w sieci wirtualnej są dostępne tutaj.
Następne kroki
Dowiedz się więcej na temat trenowania modelu regresji za pomocą zautomatyzowanego uczenia maszynowego lub trenowania przy użyciu zautomatyzowanego uczenia maszynowego na zasobie zdalnym.
Dowiedz się więcej o tym, jak i gdzie wdrożyć model.