Отладка локальных конечных точек в Visual Studio Code

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

Узнайте, как использовать отладчик Microsoft Visual Studio Code для тестирования и отладки сетевых конечных точек локально перед развертыванием в Azure.

Локальные конечные точки Машинного обучения Azure позволяют локально выполнять проверку и отладку скрипта оценки, конфигурации среды, конфигурации кода и модели машинного обучения.

Внимание

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

Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Локальная отладка конечных точек перед их развертыванием в облаке поможет заранее обнаруживать ошибки в коде и конфигурации. У вас есть различные варианты отладки конечных точек локально с помощью Visual Studio Code.

В этом руководством основное внимание уделено локальным конечным точкам.

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

Сценарий HTTP-сервер вывода Локальная конечная точка
Обновление локальной среды Python без перестроения образа Docker Да Нет
Обновление сценария оценки Да Да
Обновление конфигураций развертывания (развертывание, среда, код, модель) No Да
Интеграция отладчика Visual Studio Code Да Да

Необходимые компоненты

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

Дополнительные сведения см. в руководстве по подготовке системы к развертыванию сетевых конечных точек.

Примеры, приведенные в этой статье, основаны на примерах кода, содержащихся в репозитории GitHub в azureml-examples . Чтобы выполнить команды локально без необходимости копирования и вставки YAML и других файлов, клонируйте репозиторий и измените каталоги на azureml-examples/cli:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Если вы еще не задали параметры по умолчанию для Azure CLI, сохраните их. Чтобы не указывать значения для подписки, рабочей области и группы ресурсов несколько раз, используйте следующие команды. Замените следующие параметры значениями для конкретной конфигурации:

  • Замените <subscription> идентификатором своей подписки Azure.
  • Заменить <workspace> рабочей областью машинного обучения Azure.
  • Замените <resource-group> группой ресурсов Azure, содержащей вашу рабочую область.
  • Замените <location> регионом Azure, содержащим вашу рабочую область.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Совет

Для просмотра текущих значений по умолчанию используйте команду az configure -l.

Запуск контейнера разработки

Машинное обучение Azure локальные конечные точки используют контейнеры разработки Docker и Visual Studio Code (контейнеры разработки) для создания и настройки локальной среды отладки. С помощью контейнеров разработки вы можете воспользоваться функциями Visual Studio Code из контейнера Docker. Дополнительные сведения о контейнерах разработки см. в разделе Создание контейнера разработки.

Для локальной отладки конечных точек в Visual Studio Code используйте --vscode-debug флаг при создании или обновлении и Машинное обучение Azure оперативном развертывании. В следующей команде используется пример развертывания из репозитория примеров:

az ml online-deployment create --file endpoints/online/managed/sample/blue-deployment.yml --local --vscode-debug

Внимание

В подсистема Windows для Linux (WSL) необходимо обновить переменную среды PATH, чтобы включить путь к исполняемому файлу Visual Studio Code или использовать взаимодействие WSL. Дополнительные сведения см. в статье Взаимодействие Windows и Linux.

Образ Docker создается локально. На этом этапе проявляются все ошибки в конфигурации среды или в файле модели.

Примечание.

При первом запуске нового или обновленного контейнера разработки может потребоваться несколько минут.

После успешной сборки образа контейнер разработки откроется в окне Visual Studio Code.

Для отладки развертываний в контейнере разработки вы будете использовать несколько расширений Visual Studio Code. Машинное обучение Azure автоматически устанавливает эти расширения в контейнер разработки.

Внимание

Перед началом сеанса отладки убедитесь, что расширения Visual Studio Code завершили установку в контейнере разработки.

Запуск сеанса отладки

После настройки среды используйте отладчик Visual Studio Code для тестирования и отладки развертывания локально.

  1. Откройте скрипт оценки в Visual Studio Code.

    Совет

    Скрипт score.py , используемый ранее развернутой конечной точкой, находится в azureml-samples/cli/endpoints/online/managed/sample/score.py в клонированного репозитория. Однако действия, описанные в этом руководстве, работают с любым сценарием оценки.

  2. Задайте точку останова в любом месте своего кода оценки.

    • Для отладки поведения при запуске поместите точки останова внутри функции init.
    • Для отладки поведения при оценке поместите точки останова внутри функции run.
  3. Выберите представление задания Visual Studio Code.

  4. В раскрывающемся списке "Запуск и отладка" выберите AzureML: отладка локальной конечной точки , чтобы начать отладку конечной точки локально.

    В разделе Точки останова представления выполнения проверьте следующее:

    • Флажок Вызванные исключенияне установлен
    • Флажок Необнаруженные исключенияустановлен

    Снимок экрана: настройка профиля отладки локальной среды Машинное обучение Azure отладки.

  5. Щелкните значок воспроизведения рядом с раскрывающимся списком "Запуск и отладка ", чтобы запустить сеанс отладки.

    На этом этапе будут обнаружены все точки останова в функции init. Используйте операции отладки для тщательной проверки кода. Дополнительные сведения о действиях отладки см. в Руководстве по операциям отладки.

Дополнительные сведения об отладчике Visual Studio Code см. в разделе "Отладка".

Отладка конечной точки

Когда приложение будет запущено в отладчике, попробуйте сделать прогноз по отладке вашего скрипта оценки.

Используйте команду invokeрасширения ml, чтобы выполнить запрос к локальной конечной точке.

az ml online-endpoint invoke --name <ENDPOINT-NAME> --request-file <REQUEST-FILE> --local

В этом случае <REQUEST-FILE> — это JSON-файл, содержащий образцы входных данных для модели, используемые для прогнозирования по аналогичным файлам JSON:

{"data": [
    [1,2,3,4,5,6,7,8,9,10], 
    [10,9,8,7,6,5,4,3,2,1]
]}

Совет

URI оценки — это адрес, по которому конечная точка прослушивает запросы. Используйте расширение ml, чтобы получить URI оценки.

az ml online-endpoint show --name <ENDPOINT-NAME> --local

Результат должен выглядеть следующим образом:

{
 "auth_mode": "aml_token",
 "location": "local",
 "name": "my-new-endpoint",
 "properties": {},
 "provisioning_state": "Succeeded",
 "scoring_uri": "http://localhost:5001/score",
 "tags": {},
 "traffic": {},
 "type": "online"
}

URI оценки можно найти в свойстве scoring_uri.

На этом этапе будут обнаружены все точки останова в функции run. Используйте операции отладки для тщательной проверки кода. Дополнительные сведения о действиях отладки см. в Руководстве по операциям отладки.

Изменение конечной точки

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

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

  1. Обновите код.
  2. Перезапустите сеанс отладки с помощью команды Developer: Reload Window в палитре команд. Дополнительные сведения см. в документации по палитре команд.

Примечание.

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

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

az ml online-deployment update --file <DEPLOYMENT-YAML-SPECIFICATION-FILE> --local --vscode-debug

После создания обновленного образа и запуска контейнера разработки используйте отладчик Visual Studio Code для тестирования и устранения неполадок обновленной конечной точки.