Řešení potíží s experimenty automatizovaného strojového učení v Pythonu

PLATÍ PRO:Sada Python SDK azureml v1

V této příručce se dozvíte, jak identifikovat a vyřešit známé problémy v experimentech automatizovaného strojového učení pomocí sady Sdk služby Azure Machine Learning.

Závislosti verzí

AutoML závislosti na novějších verzích balíčků naruší kompatibilitu. Po sadě SDK verze 1.13.0 se modely nenačítají do starších sad SDK kvůli nekompatibilitě mezi staršími verzemi připnutými v předchozích AutoML balíčcích a novějšími verzemi, které jsou připnuté dnes.

Očekávejte chyby, jako jsou:

  • Modul nenalezl chyby, jako jsou

    No module named 'sklearn.decomposition._truncated_svd'

  • Chyby importu, například

    ImportError: cannot import name 'RollingOriginValidator',

  • Chyby atributů, jako je

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

Řešení závisí na trénovací verzi vaší AutoML sady SDK:

  • Pokud je vaše AutoML trénovací verze sady SDK vyšší než 1.13.0, potřebujete pandas == 0.25.1 a scikit-learn==0.22.1.

    • Pokud dojde k neshodě verzí, upgradujte scikit-learn a/nebo pandas a opravte verzi následujícím kódem:

          pip install --upgrade pandas==0.25.1
          pip install --upgrade scikit-learn==0.22.1
      
  • Pokud je vaše AutoML trénovací verze sady SDK menší než nebo rovna 1.12.0, potřebujete pandas == 0.23.4 a sckit-learn==0.20.3.

    • Pokud dojde k neshodě verzí, downgradujte scikit-learn nebo pandas a opravte verzi pomocí následujícího příkazu:

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

Nastavení

AutoML Změny balíčku od verze 1.0.76 vyžadují před aktualizací na novou verzi odinstalaci předchozí verze.

  • ImportError: cannot import name AutoMLConfig

    Pokud k této chybě dojde po upgradu z verze sady SDK před verzí 1.0.76 na verzi 1.0.76 nebo novější, vyřešte ji spuštěním příkazu : pip uninstall azureml-train automl a pak pip install azureml-train-automl. Skript automl_setup.cmd to provede automaticky.

  • automl_setup selhání

    • Ve Windows spusťte automl_setup z výzvy Anaconda. Nainstalujte Miniconda.

    • Ujistěte se, že je nainstalovaná 64bitová verze conda 4.4.10 nebo novější. Bit můžete zkontrolovat pomocí conda info příkazu . Hodnota platform by měla být win-64 pro Windows nebo osx-64 pro Mac. Pokud chcete zkontrolovat verzi, použijte příkaz conda -V. Pokud máte nainstalovanou předchozí verzi, můžete ji aktualizovat pomocí příkazu : conda update conda. Kontrola 32bitové verze spuštěním příkazu

    • Ujistěte se, že je nainstalovaná služba Conda.

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

      1. Pokud dojde k gcc: error trying to exec 'cc1plus': execvp: No such file or directory chybě, nainstalujte nástroje sestavení GCC pro vaši distribuci Linuxu. Například na Ubuntu použijte příkaz sudo apt-get install build-essential.

      2. Jako první parametr předejte nový název, který automl_setup k vytvoření nového prostředí Conda. Zobrazte existující prostředí Conda pomocí conda env list a odeberte je pomocí conda env remove -n <environmentname>.

  • automl_setup_linux.sh selže: Pokud automl_setup_linus.sh selže v Ubuntu Linuxu s chybou: unable to execute 'gcc': No such file or directory

    1. Ujistěte se, že jsou povolené odchozí porty 53 a 80. Na virtuálním počítači Azure to můžete udělat z Azure Portal tak, že vyberete virtuální počítač a kliknete na Sítě.
    2. Spusťte příkaz: sudo apt-get update
    3. Spusťte příkaz: sudo apt-get install build-essential --fix-missing
    4. Spustit automl_setup_linux.sh znovu
  • chyba configuration.ipynb:

    • V případě místního systému conda se nejprve ujistěte, že automl_setup se úspěšně spustilo.
    • Ujistěte se, že je subscription_id správný. Vyhledejte subscription_id v Azure Portal tak, že vyberete Všechny služby a pak Předplatná. Znaky "<" a ">" by neměly být zahrnuty do subscription_id hodnoty. Například subscription_id = "12345678-90ab-1234-5678-1234567890abcd" má platný formát.
    • Zajistěte přístup přispěvatele nebo vlastníka k předplatnému.
    • Zkontrolujte, že se jedná o jednu z podporovaných oblastí: eastus2, eastus, westcentralus, southeastasia, westeurope, australiaeast, westus2. southcentralus
    • Pomocí Azure Portal zajistěte přístup k oblasti.
  • workspace.from_config selhání:

    Pokud volání ws = Workspace.from_config() selže:

    1. Ujistěte se, že se poznámkový blok configuration.ipynb úspěšně spustil.
    2. Pokud se poznámkový blok spouští ze složky, která není ve složce, ve které configuration.ipynb byl spuštěn, zkopírujte složku aml_config a soubor config.json, který obsahuje, do nové složky. Workspace.from_config přečte soubor config.json pro složku poznámkového bloku nebo jeho nadřazenou složku.
    3. Pokud se používá nové předplatné, skupina prostředků, pracovní prostor nebo oblast, nezapomeňte poznámkový blok spustit configuration.ipynb znovu. Přímá změna souboru config.json bude fungovat pouze v případě, že pracovní prostor již existuje v zadané skupině prostředků v rámci zadaného předplatného.
    4. Pokud chcete změnit oblast, změňte pracovní prostor, skupinu prostředků nebo předplatné. Workspace.create nevytvoří ani neaktualizuje pracovní prostor, pokud již existuje, a to ani v případě, že se zadaná oblast liší.

TensorFlow

Od verze 1.5.0 sady SDK automatizované strojové učení ve výchozím nastavení neinstaluje modely TensorFlow. Pokud chcete nainstalovat TensorFlow a použít ho s experimenty automatizovaného strojového učení, nainstalujte tensorflow==1.12.0 ho přes 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 selhání

  • import numpy selhání ve Windows: V některých prostředích Windows dochází k chybě při načítání numpy s nejnovější verzí Pythonu 3.6.8. Pokud narazíte na tento problém, zkuste použít Python verze 3.6.7.

  • import numpy selhání: Zkontrolujte verzi TensorFlowu v automatizovaném prostředí ml conda. Podporované verze jsou < 1.13. Odinstalujte TensorFlow z prostředí, pokud je >verze = 1.13.

Verzi TensorFlow můžete zkontrolovat a odinstalovat následujícím způsobem:

  1. Spusťte příkazové prostředí a aktivujte prostředí Conda, ve kterém jsou nainstalované automatizované balíčky ml.
  2. Zadejte a vyhledejte pip freezetensorflow. Pokud se najde, uvedená verze by měla být < 1.13.
  3. Pokud uvedená verze není podporovanou verzí, pip uninstall tensorflow v příkazovém prostředí zadejte y pro potvrzení.

jwt.exceptions.DecodeError

Přesná chybová zpráva: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

V případě sady SDK verze <1.17.0 může instalace způsobit nepodporovanou verzi PyJWT. Zkontrolujte, že verze PyJWT v automatizovaném prostředí ml conda je podporovanou verzí. To je PyJWT verze < 2.0.0.

Verzi PyJWT můžete zkontrolovat takto:

  1. Spusťte příkazové prostředí a aktivujte prostředí Conda, ve kterém jsou nainstalované balíčky automatizovaného strojového učení.

  2. Zadejte a vyhledejte pip freezePyJWT. Pokud se najde, uvedená verze by měla být < 2.0.0.

Pokud uvedená verze není podporovanou verzí:

  1. Zvažte upgrade na nejnovější verzi sady AutoML SDK: pip install -U azureml-sdk[automl]

  2. Pokud to není možné, odinstalujte PyJWT z prostředí a nainstalujte správnou verzi následujícím způsobem:

    1. pip uninstall PyJWT v příkazovém prostředí a pro potvrzení zadejte y .
    2. Instalace pomocí pip install 'PyJWT<2.0.0'.

Přístup k datům

U automatizovaných úloh ML je potřeba zajistit, aby úložiště dat souborů, které se připojuje k vašemu úložišti AzureFile Storage, má příslušné přihlašovací údaje pro ověřování. V opačném případě se zobrazí následující zpráva. Zjistěte, jak aktualizovat přihlašovací údaje pro ověřování přístupu k datům.

Chybová zpráva: 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.

Schéma dat

Když se pokusíte vytvořit nový experiment automatizovaného strojového učení pomocí tlačítka Upravit a odeslat v studio Azure Machine Learning, musí se schéma dat pro nový experiment shodovat se schématem dat použitým v původním experimentu. V opačném případě se zobrazí chybová zpráva podobná následujícím výsledkům. Přečtěte si další informace o tom, jak upravovat a odesílat experimenty z uživatelského rozhraní studia.

Chybové zprávy nevidomé experimenty: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)

Chybová zpráva pro datové sady Vision: 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

Viz Konfigurace experimentu automatizovaného strojového učení pomocí Databricks (Azure Machine Learning SDK v1).

Prognózování skóre R2 je vždy nula

K tomuto problému dochází v případě, že zadaná trénovací data obsahují časové řady, které obsahují stejnou hodnotu pro poslední n_cv_splits + forecasting_horizon datové body.

Pokud je tento vzor ve vaší časové řadě očekávaný, můžete primární metriku přepnout na normalizovanou odmocněnou střední kvadratickou chybu.

Neúspěšné nasazení

Pro verze <= 1.18.0 sady SDK může selhat základní image vytvořená pro nasazení s následující chybou: ImportError: cannot import name cached_property from werkzeug.

Tento problém můžete obejít pomocí následujících kroků:

  1. Stažení balíčku modelu
  2. Rozbalení balíčku
  3. Nasazení s využitím rozbalených prostředků

Azure Functions aplikace

Automatizované strojové učení v současné době nepodporuje Azure Functions aplikace.

Ukázková selhání poznámkového bloku

Pokud ukázkový poznámkový blok selže s chybou, že tato vlastnost, metoda nebo knihovna neexistuje:

  • Ujistěte se, že je v Jupyter Notebook vybrané správné jádro. Jádro se zobrazí v pravém horním rohu stránky poznámkového bloku. Výchozí hodnota je azure_automl. Jádro se uloží jako součást poznámkového bloku. Pokud přepnete na nové prostředí Conda, musíte v poznámkovém bloku vybrat nové jádro.

    • Pro Azure Notebooks by to měl být Python 3.6.
    • Pro místní prostředí Conda by to měl být název prostředí conda, který jste zadali v automl_setup.
  • Pokud chcete zajistit, aby poznámkový blok byl pro verzi sady SDK, kterou používáte,

    • Zkontrolujte verzi sady SDK spuštěním příkazu azureml.core.VERSION v buňce Jupyter Notebook.
    • Předchozí verzi ukázkových poznámkových bloků si můžete stáhnout z GitHubu pomocí těchto kroků:
      1. Branch Výběr tlačítka
      2. Přechod na Tags kartu
      3. Vyberte verzi.

Omezování experimentů

Pokud máte více než 100 experimentů automatizovaného strojového učení, může to způsobit dlouhou dobu trvání nových experimentů automatizovaného strojového učení.

Selhání stahování nastavení brány firewall virtuální sítě

Pokud se nacházíte ve virtuálních sítích, můžete při použití technologie NLP automatizovaného strojového učení narazit na selhání stahování modelu. Důvodem je to, že stahování modelů a tokenizátorů z Azure CDN blokuje síťový provoz. Pokud chcete tento postup odblokovat, v nastavení Pravidla aplikací v zásadách brány firewall virtuální sítě přidejte následující adresy URL:

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

Postupujte podle pokynů tady a nakonfigurujte nastavení brány firewall.

Pokyny ke konfiguraci pracovního prostoru ve virtuální síti najdete tady.

Další kroky