Устранение неполадок с автоматизированными экспериментами машинного обучения на Python
ОБЛАСТЬ ПРИМЕНЕНИЯ: Пакет SDK для Python версии 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'
.Если возникает ошибка
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
, установите средства сборки GCC для дистрибутива Linux. Например, в Ubuntu используйте командуsudo apt-get install build-essential
.Для создания новой среды 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
:- Убедитесь, что включены исходящие порты 53 и 80. На виртуальной машине Azure это можно сделать с помощью портала Azure, выбрав виртуальную машину и щелкнув Сеть.
- Выполните команду
sudo apt-get update
. - Выполните команду
sudo apt-get install build-essential --fix-missing
. - Еще раз запустите
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.
- Для локальной среды conda убедитесь, что скрипт
Сбой workspace.from_config:
Если вызов
ws = Workspace.from_config()
завершается ошибкой- Убедитесь, что записная книжка configuration.ipynb была успешно выполнена.
- Если записная книжка запускается не из папки, находящейся в папке, из которой была запущена записная книжка
configuration.ipynb
, скопируйте папку aml_config и содержащийся в ней файл config.json в новую папку. Workspace.from_config считывает файл config.json для папки записной книжки или ее родительской папки. - Если используются новые подписка, группа ресурсов, рабочая область или регион, записную книжку
configuration.ipynb
необходимо запустить повторно. Изменение файла config.json напрямую будет работать только в том случае, если рабочая область уже существует в заданной группе ресурсов в указанной подписке. - Если вы хотите изменить регион, измените рабочую область, группу ресурсов или подписку.
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 и удалить ее, выполните следующие действия.
- Запустите командную оболочку и активируйте среду conda, в которой установлены пакеты автоматизированного машинного обучения.
- Введите
pip freeze
и найдитеtensorflow
. Если этот параметр присутствует, он должен указывать версию ниже 1.13 - Если указанная версия не поддерживается, выполните команду
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, выполните следующие действия.
Запустите командную оболочку и активируйте среду conda, в которой установлены пакеты автоматизированного машинного обучения.
Введите
pip freeze
и найдитеPyJWT
. Если этот параметр присутствует, он должен указывать версию < 2.0.0
Если указанная версия не поддерживается, выполните следующие действия.
Рассмотрите возможность обновления до последней версии пакета SDK для AutoML (
pip install -U azureml-sdk[automl]
).Если это невозможно, удалите PyJWT из среды и установите поддерживаемую версию, выполнив следующие действия.
- Введите команду
pip uninstall PyJWT
в командной оболочке и затем введитеy
для подтверждения. - Выполните установку, используя
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
Прогнозная оценка R2 всегда равна нулю
Эта проблема возникает в тех случаях, когда в предоставленных данных для обучения присутствуют временные ряды, которые содержат одинаковые значения для последних n_cv_splits
+ forecasting_horizon
точек данных.
Если это возможно в ваших временных рядах, попробуйте заменить основную метрику на нормализованную среднеквадратическую погрешность.
Сбой развертывания
Для версий пакета SDK не выше 1.18.0 может происходить сбой базового образа, созданного для развертывания, со следующей ошибкой: ImportError: cannot import name cached_property from werkzeug
.
В качестве обходного решения этой проблемы можно выполнить следующие действия.
- Скачайте пакет модели.
- Распакуйте пакет.
- Выполните развертывание с использованием распакованных ресурсов.
Приложение функций Azure
В настоящее время среда автоматизированного машинного обучения не поддерживает приложения функций Azure.
Сбои образцов записных книжек
Если происходит сбой образца записной книжки с ошибкой, указывающей на отсутствие свойства, метода или библиотеки
Убедитесь, что в Jupyter Notebook выбрана соответствующая версия ядра. Версия ядра отображается в правом верхнем углу страницы записной книжки. По умолчанию используется azure_automl. Версия ядра сохраняется в составе записной книжки. Если вы переходите на новую среду conda, необходимо выбрать новую версию ядра в записной книжке.
- Для записных книжек Azure следует использовать Python 3.6.
- Для локальных сред conda это должно быть имя среды conda, которое указано в скрипте automl_setup.
Чтобы убедиться, что записная книжка предназначена для используемой версии пакета SDK, выполните следующие действия.
- Проверьте версию пакета SDK, выполнив команду
azureml.core.VERSION
в ячейке Jupyter Notebook. - Вы можете скачать предыдущую версию примеров записных книжек из GitHub, выполнив следующие действия:
- Нажмите кнопку
Branch
. - Перейдите на вкладку
Tags
. - Выберите нужную версию.
- Нажмите кнопку
- Проверьте версию пакета SDK, выполнив команду
Регулирование эксперимента
Если вы используете более 100 экспериментов автоматизированного ML, новые эксперименты автоматизированного ML могут иметь длительное время выполнения.
Сбой загрузки параметра брандмауэра виртуальной сети
Если вы находитесь в виртуальных сетях (виртуальных сетях), при использовании autoML NLP могут возникнуть сбои загрузки модели. Это связано с тем, что сетевой трафик заблокирован для скачивания моделей и токенизаторов из Azure CDN. Чтобы разблокировать эту политику, разблокируйте указанные ниже URL-адреса в параметре "Правила приложения" политики брандмауэра виртуальной сети:
aka.ms
https://automlresources-prod.azureedge.net
Следуйте инструкциям здесь, чтобы настроить параметры брандмауэра.
Инструкции по настройке рабочей области в виртуальной сети доступны здесь.
Следующие шаги
Узнайте больше о том, как обучить модель регрессии с помощью автоматизированного машинного обучения или как обучить ее с использованием автоматизированного машинного обучения на удаленном ресурсе.
Узнайте больше о том, как и где можно развернуть модель.