Устранение неполадок с пакетными конечными точками

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

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

Основные сведения о журналах задания пакетной оценки

Получение журналов

После вызова пакетной конечной точки с помощью Azure CLI или REST задание пакетной оценки выполняется асинхронно. Получить журналы для задания пакетной оценки можно двумя способами.

Вариант 1. Потоковая передача журналов на локальную консоль

С помощью команды ниже можно настроить потоковую передачу созданных системой журналов на консоль. Потоковая передача выполняется только для журналов в папке azureml-logs.

az ml job stream --name <job_name>

Вариант 2. Просмотр журналов в студии

Чтобы получить ссылку на запуск в студии, выполните следующую команду:

az ml job show --name <job_name> --query interaction_endpoints.Studio.endpoint -o tsv
  1. Откройте задание в студии, используя значение, возвращенное приведенной выше командой.
  2. Выберите batchscoring.
  3. Откройте вкладку Выходные данные и журналы.
  4. Выберите журналы, которые хотите просмотреть.

Общие сведения о структуре журнала

Существует две папки журналов верхнего уровня: azureml-logs и logs.

Файл ~/azureml-logs/70_driver_log.txt содержит сведения о контроллере, который запускает скрипт оценки.

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

  • ~/logs/job_progress_overview.txt: этот файл содержит общие сведения о количестве мини-пакетов (т. н. задач), созданных до этого момента, и количестве мини-пакетов, обработанных на данный момент. Когда мини-пакеты заканчиваются, в журнал записываются результаты выполнения задания. Если задание завершилось сбоем, отображается сообщение об ошибке и где начать устранение неполадок.

  • ~/logs/sys/master_role.txt: В этом файле доступно представление главного узла (т. н. оркестратор) выполняемого задания. Этот журнал содержит сведения о создании задач, мониторинге хода выполнения и результатах заданий.

Следующие признаки позволяют быстро распознать ошибки в сценарии.

  • ~/logs/user/error.txt: этот файл попытается свести итоги ошибок в скрипте.

Дополнительные сведения об ошибках в сценарии:

  • ~/logs/user/error/: этот файл содержит полные данные трассировки стека исключений, возникших при загрузке и выполнении начального сценария.

Если необходимо в полной мере оценить, как сценарий оценки выполняется на каждом из узлов, просмотрите отдельные журналы процесса для каждого узла. Журналы процесса можно найти в папке sys/node. Они сгруппированы по рабочим узлам:

  • ~/logs/sys/node/<ip_address>/<process_name>.txt: Этот файл содержит подробные сведения о каждом мини-пакете, который выбирается или выполняется рабочей ролью. Для каждого мини-пакета этот файл содержит:

    • IP-адрес и идентификатор рабочего процесса.
    • Общее число элементов, число успешно обработанных элементов и число элементов, для которых возник сбой.
    • Время начала, продолжительность, время обработки и время запуска метода.

Вы также можете просмотреть результаты периодических проверок использования ресурсов для каждого узла. Файлы журнала и файлы установки находятся в этой папке:

  • ~/logs/perf: Задайте --resource_monitor_interval для изменения интервала проверки в секундах. По умолчанию используется интервал 600, который составляет приблизительно 10 минут. Чтобы остановить наблюдение, задайте значение 0. Каждая папка <ip_address> включает:

    • os/: Сведения обо всех выполняющихся в узле процессах. Одна проверка запускает команду операционной системы и сохраняет результат в файл. В системе Linux используется команда ps.
      • %Y%m%d%H: Имя вложенной папки — это время в часах.
        • processes_%M: Файл завершается минутой времени проверки.
    • node_disk_usage.csv: Подробные сведения об использовании диска узлом.
    • node_resource_usage.csv: Общие сведения об использовании ресурсов узла.
    • processes_resource_usage.csv: Отчет об использовании ресурсов для каждого процесса.

Как вести журналы в скрипте оценки

В скрипте оценки можно использовать средства ведение журналов Python. Журнал сохраняется в файл logs/user/stdout/<node_id>/processNNN.stdout.txt.

import argparse
import logging

# Get logging_level
arg_parser = argparse.ArgumentParser(description="Argument parser.")
arg_parser.add_argument("--logging_level", type=str, help="logging level")
args, unknown_args = arg_parser.parse_known_args()
print(args.logging_level)

# Initialize Python logger
logger = logging.getLogger(__name__)
logger.setLevel(args.logging_level.upper())
logger.info("Info log statement")
logger.debug("Debug log statement")

Распространенные проблемы

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

Нет модуля с именем Azureml

Сообщение в журнале: No module named 'azureml'.

Причина: Машинное обучение Azure развертывания пакетной службы требуют установки пакетаazureml-core.

Решение. Добавьте azureml-core в файл зависимостей conda.

Выходные данные уже существуют

Причина: Машинное обучение Azure пакетное развертывание не может перезаписать predictions.csv файл, созданный выходными данными.

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

Функция run() в скрипте записи имела время ожидания [число]

Сообщение зарегистрировано: No progress update in [number] seconds. No progress update in this check. Wait [number] seconds since last update.

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

Решение. Увеличьте timemout значение развертывания, обновив развертывание. Эти свойства настраиваются в параметре retry_settings. По умолчанию настроен и timeout=30retries=3 настроен. При принятии решения о значении timeoutследует учитывать количество обрабатываемых файлов в каждом пакете и размер каждого из этих файлов. Вы также можете уменьшить их, чтобы учесть больше мини-пакетов меньшего размера и, следовательно, быстрее выполнять.

ScriptExecution.StreamAccess.Authentication

Сообщение зарегистрировано: ScriptExecutionException было вызвано StreamAccessException. StreamAccessException была вызвана AuthenticationException.

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

Решения. Убедитесь, что удостоверение, связанное с вычислительным кластером, где выполняется развертывание, имеет по крайней мере служба хранилища доступ к учетной записи хранения. Только владельцы учетных записей хранения могут изменять уровень доступа с помощью портала Azure.

Сбой инициализации набора данных

Сообщение в журнале: сбой инициализации набора данных: UserErrorException: Сообщение: не удается подключить набор данных(id='xxxxx-xxxx-xxxxx-xxxx', name='None', version=None). Источник набора данных недоступен или не содержит никаких данных.

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

Решения. Убедитесь, что удостоверение, связанное с вычислительным кластером, где выполняется развертывание, имеет по крайней мере служба хранилища доступ к учетной записи хранения. Только владельцы учетных записей хранения могут изменять уровень доступа с помощью портала Azure.

Узел набора данных [код] ссылается на параметр dataset_param который не имеет указанного значения или значения по умолчанию

Сообщение зарегистрировано: узел набора данных [код] ссылается на параметр dataset_param который не имеет указанного значения или значения по умолчанию.

Причина. Входной ресурс данных, предоставленный пакетной конечной точке, не поддерживается.

Решение. Убедитесь, что вы предоставляете входные данные, поддерживаемые для конечных точек пакетной службы.

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

Сообщение зарегистрировано: сбой пользовательской программы с исключением: сбой выполнения, проверка журналы для получения сведений. Вы можете проверка журналы или readme.txt для макета журналов.

Причина. При выполнении init() скрипта оценки возникла run() ошибка.

Решение. Перейдите к выходным данным и журналам и откройте файл logs > user > error > 10.0.0.X > process000.txtв . Отображается сообщение об ошибке, созданное методом или run() методомinit().

ValueError: нет объектов для объединения

Сообщение зарегистрировано: ValueError: нет объектов для объединения.

Причина. Все файлы в созданном мини-пакете повреждены или неподдерживаемые типы файлов. Помните, что модели MLflow поддерживают подмножество типов файлов, как описано в рекомендациях при развертывании в пакетном выводе.

Решение. Перейдите к файлу logs/usr/stdout/<process-number>/process000.stdout.txt и найдите такие ERROR:azureml:Error processing input fileзаписи. Если тип файла не поддерживается, просмотрите список поддерживаемых файлов. Возможно, потребуется изменить тип файла входных данных или настроить развертывание, предоставив скрипт оценки, как показано в инструкции "Использование моделей MLflow" со скриптом оценки.

Не удалось выполнить мини-пакетный элемент, возвращенный из run()

Сообщение зарегистрировано: не удалось получить мини-пакетный элемент, возвращенный из run(). В проверка "ответ: run()".https://aka.ms/batch-inference-documentation

Причина: конечная точка пакетной службы не смогла предоставить данные в ожидаемом формате методу run() . Это может быть вызвано тем, что поврежденные файлы считываются или несовместимы с входными данными с сигнатурой модели (MLflow).

Решение. Чтобы понять, что может происходить, перейдите в раздел "Выходные данные и журналы " и откройте файл по адресу logs > user > stdout > 10.0.0.X > process000.stdout.txt. Найдите такие записи ошибок Error processing input file. Дополнительные сведения о том, почему входной файл не может быть правильно прочитан.

Аудитории в JWT не допускаются

Контекст. При вызове конечной точки пакетной службы с помощью REST API.

Причина. Маркер доступа, используемый для вызова REST API для конечной точки или развертывания, указывает маркер, выданный для другой аудитории или службы. Маркеры Microsoft Entra выдаются для определенных действий.

Решение. При создании маркера проверки подлинности для использования с REST API пакетной конечной точки убедитесьresource, что параметр задан.https://ml.azure.com Обратите внимание, что этот ресурс отличается от ресурса, который необходимо указать для управления конечной точкой с помощью REST API. Все ресурсы Azure (включая конечные точки пакетной службы) используют ресурс https://management.azure.com для управления ими. Убедитесь, что в каждом случае используется правильный URI ресурса. Обратите внимание, что если вы хотите использовать API управления и API вызова заданий одновременно, вам потребуется два маркера. Дополнительные сведения см. в статье "Проверка подлинности на конечных точках пакетной службы (REST)".

Нет допустимых развертываний для маршрутизации. Проверка, что конечная точка имеет по крайней мере одно развертывание с положительными значениями веса или используйте определенный заголовок развертывания для маршрутизации.

Причина. Развертывание пакетной службы по умолчанию не задано правильно.

Решение. Убедитесь, что пакетное развертывание по умолчанию настроено правильно. Возможно, потребуется обновить пакетное развертывание по умолчанию. Дополнительные сведения см. в статье Об обновлении пакетного развертывания по умолчанию

Ограничения и не поддерживаемые сценарии

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

Следующие конфигурации рабочей области не поддерживаются:

  • Рабочие области, настроенные с включенным функцией карантина с реестрами контейнеров Azure.
  • Рабочие области с ключами, управляемыми клиентом (CMK).

Следующие конфигурации вычислений не поддерживаются.

  • Кластеры Azure ARC Kubernetes.
  • Подробный запрос ресурсов (память, виртуальный ЦП, GPU) для кластеров Azure Kubernetes. Можно запрашивать только количество экземпляров.

Следующие типы входных данных не поддерживаются:

  • Табличные наборы данных (V1).
  • Папки и наборы данных файлов (версия 1).
  • MLtable (версия 2).

Следующие шаги