Udostępnij za pośrednictwem


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ą elementy pandas == 0.25.1 i scikit-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ą elementy pandas == 0.23.4 i sckit-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 i pip 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 . Element platform powinien być win-64 przeznaczony dla systemu Windows lub osx-64 dla komputerów Mac. Aby sprawdzić wersję, użyj polecenia conda -V. Jeśli masz zainstalowaną poprzednią wersję, możesz ją zaktualizować przy użyciu polecenia : conda update conda. Aby sprawdzić 32-bitową uruchomić polecenie

    • Upewnij się, że conda jest zainstalowana.

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

      1. 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 polecenia sudo apt-get install build-essential.

      2. 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 polecenia conda 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

    1. 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ć.
    2. Uruchom polecenie: sudo apt-get update
    3. Uruchom polecenie: sudo apt-get install build-essential --fix-missing
    4. 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, westeuropewestcentralusaustraliaeastsoutheastasia, westus2, . southcentralus
    • Upewnij się, że dostęp do regionu jest uzyskiwany przy użyciu witryny Azure Portal.
  • workspace.from_config kończy się niepowodzeniem:

    Jeśli wywołanie ws = Workspace.from_config() nie powiedzie się:

    1. Upewnij się, że notes configuration.ipynb został uruchomiony pomyślnie.
    2. 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.
    3. 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.
    4. 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:

  1. Uruchom powłokę poleceń, aktywuj środowisko conda, w którym instalowane są zautomatyzowane pakiety uczenia maszynowego.
  2. Wprowadź pip freeze i wyszukaj tensorflowciąg , jeśli zostanie znaleziona, wyświetlana wersja powinna mieć < wartość 1.13
  3. 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:

  1. Uruchom powłokę poleceń i aktywuj środowisko conda, w którym instalowane są zautomatyzowane pakiety uczenia maszynowego.

  2. Wprowadź pip freeze i wyszukaj PyJWTciąg , jeśli zostanie znaleziona, wyświetlona wersja powinna mieć < wartość 2.0.0

Jeśli wymieniona wersja nie jest obsługiwana:

  1. Rozważ uaktualnienie do najnowszej wersji zestawu AutoML SDK: pip install -U azureml-sdk[automl]

  2. Jeśli nie jest to możliwe, odinstaluj narzędzie PyJWT ze środowiska i zainstaluj odpowiednią wersję w następujący sposób:

    1. pip uninstall PyJWT w powłoce poleceń i wprowadź w y celu potwierdzenia.
    2. 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

Zobacz How to configure an automated ML experiment with Databricks (Azure Machine Learning SDK v1)(Jak skonfigurować eksperyment zautomatyzowanego uczenia maszynowego z usługą Databricks (zestaw AZURE Machine Learning SDK w wersji 1).

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:

  1. Pobieranie pakietu modelu
  2. Rozpakuj pakiet
  3. 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:
      1. Branch Wybierz przycisk
      2. Przejdź do Tags karty
      3. Wybierz wersję

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.azureedge.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