Устранение неполадок с автоматизированными экспериментами машинного обучения на Python

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

Из этого руководства вы узнаете, как определять и устранять известные проблемы с автоматизированными экспериментами машинного обучения с помощью пакета SDK для службы машинного обучения Azure.

Зависимости версий

Зависимости AutoML в новой версии пакета приводят к нарушению совместимости. В версиях пакета SDK после 1.13.0 модели не загружаются в старые пакеты SDK из-за несовместимости старых версий, закрепленных в предыдущих пакетах AutoML, и более поздних версий, закрепленных в новых версиях пакета.

При этом могут возникать следующие ошибки.

  • Ошибки, связанные с невозможностью найти модуль, например:

    No module named 'sklearn.decomposition._truncated_svd'

  • Ошибки импорта, например:

    ImportError: cannot import name 'RollingOriginValidator',

  • Ошибки атрибутов, например:

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

Решение зависит от версии пакета SDK AutoML для обучения.

  • Если вы используете версию пакета SDK AutoML для обучения выше 1.13.0, вам потребуется pandas == 0.25.1 и scikit-learn==0.22.1.

    • В случае несоответствия версий обновите scikit-learn и/или pandas до нужной версии следующим образом.

          pip install --upgrade pandas==0.25.1
          pip install --upgrade scikit-learn==0.22.1
      
  • Если вы используете версию пакета SDK AutoML для обучения не выше 1.12.0, вам потребуется pandas == 0.23.4 и sckit-learn==0.20.3.

    • В случае несоответствия версий перейдите на более раннюю версию scikit-learn и/или pandas следующим образом.

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

Настройка

В связи с изменениями в пакете AutoML в версиях после 1.0.76 перед обновлением до новой версии необходимо удалить предыдущую.

  • ImportError: cannot import name AutoMLConfig

    Если после обновления с версии пакета SDK, предшествующей 1.0.76, до версии 1.0.76 или более поздней возникает эта ошибка, устраните ее, выполнив команду pip uninstall azureml-train automl и затем pip install azureml-train-automl. Это можно сделать автоматически с помощью скрипта automl_setup.cmd.

  • Сбой automl_setup:

    • В ОС Windows запустите скрипт automl_setup из командной строки Anaconda. Установите Miniconda.

    • Убедитесь, что установлена 64-разрядная версия conda 4.4.10 или более поздняя. Чтобы проверить разрядность версии, воспользуйтесь командой conda info. Параметр platform должен иметь значение win-64 для Windows или osx-64 для Mac. Для проверки версии используйте команду conda -V. Если установлена предыдущая версия, ее можно обновить с помощью команды conda update conda. Чтобы проверить установку 32-разрядной версии, выполните

    • Убедитесь, что установлена среда conda.

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

      1. Если возникает ошибка gcc: error trying to exec 'cc1plus': execvp: No such file or directory, установите средства сборки GCC для дистрибутива Linux. Например, в Ubuntu используйте команду sudo apt-get install build-essential.

      2. Для создания новой среды conda передайте новое имя в качестве первого параметра в скрипт automl_setup. Для просмотра существующих сред conda используйте команду conda env list, а для их удаления — conda env remove -n <environmentname>.

  • Сбой скрипта automl_setup_linux.sh. Если скрипт automl_setup_linus.sh в Ubuntu Linux завершается с ошибкой unable to execute 'gcc': No such file or directory:

    1. Убедитесь, что включены исходящие порты 53 и 80. На виртуальной машине Azure это можно сделать с помощью портала Azure, выбрав виртуальную машину и щелкнув Сеть.
    2. Выполните команду sudo apt-get update.
    3. Выполните команду sudo apt-get install build-essential --fix-missing.
    4. Еще раз запустите automl_setup_linux.sh.
  • Сбой configuration.ipynb:

    • Для локальной среды conda убедитесь, что скрипт automl_setup был успешно выполнен.
    • Проверьте правильность значения subscription_id. Значение subscription_id можно найти на портале Azure, выбрав "Все службы" и затем "Подписки". Значение subscription_id не должно включать символы "<" и ">". Например, значение subscription_id = "12345678-90ab-1234-5678-1234567890abcd" имеет допустимый формат.
    • Проверьте наличие доступа к подписке с правами участника или владельца.
    • Убедитесь, что используемый регион входит в список поддерживаемых: eastus2, eastus, westcentralus, southeastasia, westeurope, australiaeast, westus2, southcentralus.
    • Проверьте доступность региона с портала Azure.
  • Сбой workspace.from_config:

    Если вызов ws = Workspace.from_config() завершается ошибкой

    1. Убедитесь, что записная книжка configuration.ipynb была успешно выполнена.
    2. Если записная книжка запускается не из папки, находящейся в папке, из которой была запущена записная книжка configuration.ipynb, скопируйте папку aml_config и содержащийся в ней файл config.json в новую папку. Workspace.from_config считывает файл config.json для папки записной книжки или ее родительской папки.
    3. Если используются новые подписка, группа ресурсов, рабочая область или регион, записную книжку configuration.ipynb необходимо запустить повторно. Изменение файла config.json напрямую будет работать только в том случае, если рабочая область уже существует в заданной группе ресурсов в указанной подписке.
    4. Если вы хотите изменить регион, измените рабочую область, группу ресурсов или подписку. Workspace.create не будет создавать или обновлять рабочую область, если она уже существует, даже если указан другой регион.

TensorFlow

Начиная с версии 1.5.0 пакета SDK, автоматизированное машинное обучение по умолчанию не устанавливает модели TensorFlow. Чтобы установить TensorFlow и использовать его вместе с автоматизированными экспериментами машинного обучения, установите 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'])

Сбои Numpy

  • Сбой import numpy в Windows. В некоторых средах Windows возникает ошибка при загрузке numpy с использованием последней версии Python 3.6.8. Если возникает эта ошибка, попробуйте использовать версию Python 3.6.7.

  • Сбой import numpy . Проверьте версию TensorFlow в среде автоматизированного машинного обучения conda. Поддерживаются версии, предшествующие версии 1.13. Если библиотека TensorFlow имеет версию 1.13 или более позднюю, удалите ее из среды.

Чтобы проверить версию библиотеки TensorFlow и удалить ее, выполните следующие действия.

  1. Запустите командную оболочку и активируйте среду conda, в которой установлены пакеты автоматизированного машинного обучения.
  2. Введите pip freeze и найдите tensorflow. Если этот параметр присутствует, он должен указывать версию ниже 1.13
  3. Если указанная версия не поддерживается, выполните команду pip uninstall tensorflow в командной оболочке и введите "y" (да) для подтверждения.

jwt.exceptions.DecodeError

Точное сообщение об ошибке: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

Для версий пакета SDK не выше 1.17.0 установка может привести к наличию неподдерживаемой версии PyJWT. Убедитесь, что версия PyJWT в среде автоматического машинного обучения conda поддерживается. Поддерживаются версии PyJWT, предшествующие версии 2.0.0.

Чтобы проверить версию PyJWT, выполните следующие действия.

  1. Запустите командную оболочку и активируйте среду conda, в которой установлены пакеты автоматизированного машинного обучения.

  2. Введите pip freeze и найдите PyJWT. Если этот параметр присутствует, он должен указывать версию ниже 2.0.0

Если указанная версия не поддерживается, выполните следующие действия.

  1. Рассмотрите возможность обновления до последней версии пакета SDK для AutoML (pip install -U azureml-sdk[automl]).

  2. Если это невозможно, удалите PyJWT из среды и установите поддерживаемую версию, выполнив следующие действия.

    1. Введите команду pip uninstall PyJWT в командной оболочке и затем введите y для подтверждения.
    2. Выполните установку, используя pip install 'PyJWT<2.0.0'.

Доступ к данным

Для автоматизированных заданий машинного обучения необходимо убедиться, что хранилище файловых данных, которое подключается к вашему хранилищу Azure Files, имеет соответствующие учетные данные для проверки подлинности. В противном случае появится следующее сообщение. Узнайте, как обновить учетные данные для проверки подлинности доступа к данным.

Сообщение об ошибке: 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.

Схема данных

При попытке создать новый эксперимент по автоматизированному машинному обучению с помощью кнопки Изменить и отправить в Cтудии машинного обучения Azure схема данных для нового эксперимента должна совпадать со схемой данных, которая использовалась в исходном эксперименте. В противном случае появится сообщение об ошибке, подобное приведенному ниже. Узнайте больше о том, как изменять и отправлять эксперименты из пользовательского интерфейса студии.

Сообщение об ошибке для экспериментов без машинного зрения: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)

Сообщение об ошибке для наборов данных машинного зрения: 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

См. статью Настройка эксперимента автоматизированного машинного обучения с помощью Databricks (пакет SDK машинного обучения Azure версии 1).

Прогнозная оценка R2 всегда равна нулю

Эта проблема возникает в тех случаях, когда в предоставленных данных для обучения присутствуют временные ряды, которые содержат одинаковые значения для последних n_cv_splits + forecasting_horizon точек данных.

Если это возможно в ваших временных рядах, попробуйте заменить основную метрику на нормализованную среднеквадратическую погрешность.

Сбой развертывания

Для версий пакета SDK не выше 1.18.0 может происходить сбой базового образа, созданного для развертывания, со следующей ошибкой: ImportError: cannot import name cached_property from werkzeug.

В качестве обходного решения этой проблемы можно выполнить следующие действия.

  1. Скачайте пакет модели.
  2. Распакуйте пакет.
  3. Выполните развертывание с использованием распакованных ресурсов.

Приложение функций Azure

В настоящее время среда автоматизированного машинного обучения не поддерживает приложения функций Azure.

Сбои образцов записных книжек

Если происходит сбой образца записной книжки с ошибкой, указывающей на отсутствие свойства, метода или библиотеки

  • Убедитесь, что в Jupyter Notebook выбрана соответствующая версия ядра. Версия ядра отображается в правом верхнем углу страницы записной книжки. По умолчанию используется azure_automl. Версия ядра сохраняется в составе записной книжки. Если вы переходите на новую среду conda, необходимо выбрать новую версию ядра в записной книжке.

    • Для записных книжек Azure следует использовать Python 3.6.
    • Для локальных сред conda это должно быть имя среды conda, которое указано в скрипте automl_setup.
  • Чтобы убедиться, что записная книжка предназначена для используемой версии пакета SDK, выполните следующие действия.

    • Проверьте версию пакета SDK, выполнив команду azureml.core.VERSION в ячейке Jupyter Notebook.
    • Скачайте предыдущие версии образцов записных книжек из GitHub, выполнив следующие действия.
      1. Нажмите кнопку Branch.
      2. Перейдите на вкладку Tags.
      3. Выберите нужную версию.

Регулирование эксперимента

Если вы используете более 100 экспериментов автоматизированного ML, новые эксперименты автоматизированного ML могут иметь длительное время выполнения.

Сбой скачивания параметра брандмауэра виртуальной сети

Если вы используете виртуальные сети, при использовании AutoML NLP могут возникнуть сбои загрузки модели. Это связано с тем, что сетевому трафику блокируется скачивание моделей и создателей маркеров из Azure CDN. Чтобы разблокировать эту возможность, разрешите перечислить приведенные ниже URL-адреса в параметре "Правила приложений" политики брандмауэра виртуальной сети:

Следуйте инструкциям здесь, чтобы настроить параметры брандмауэра.

Инструкции по настройке рабочей области в виртуальной сети доступны здесь.

Дальнейшие действия