Поделиться через


Запуск конечных точек пакетной службы из событий сетки событий в хранилище

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

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

На следующей схеме показана архитектура для этого решения:

Концептуальная схема показывает компоненты для этой архитектуры.

Ниже описаны высокоуровневые шаги в этом решении:

  1. При создании нового большого двоичного объекта в определенной учетной записи хранения создается событие создания файла.

  2. Событие отправляется в сетку событий, чтобы получить обработку всем подписчикам.

  3. Рабочий процесс приложения логики подписывается и прослушивает эти события.

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

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

    1. Возвращает маркер авторизации для вызова конечных точек пакетной службы с использованием учетных данных субъекта-службы.

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

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

Внимание

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

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

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

  • Пакетное развертывание выполняется в вычислительном кластере batch-cluster.

  • Создаваемое приложение логики взаимодействует с Машинное обучение Azure конечными точками пакетной службы с помощью REST.

    Дополнительные сведения об использовании REST API для конечных точек пакетной службы см. в разделе "Создание заданий и входных данных" для конечных точек пакетной службы.

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

Azure Logic Apps может вызывать REST API пакетных конечных точек с помощью действия HTTP . Конечные точки пакетной службы поддерживают идентификатор Microsoft Entra для авторизации, поэтому запрос, сделанный в API, требует правильной обработки проверки подлинности.

В этом руководстве используется субъект-служба для проверки подлинности и взаимодействия с конечными точками пакетной службы в этом сценарии.

  1. Создайте субъект-службу, выполнив регистрацию приложения с помощью идентификатора Microsoft Entra и создав субъект-службу.

  2. Создайте секрет для проверки подлинности, выполнив команду 3. Создайте новый секрет клиента.

  3. Сохраните созданное значение секрета клиента, которое отображается только один раз.

  4. Сохраните его client ID и в tenant id области обзора приложения.

  5. Предоставьте субъекту-службе доступ к рабочей области, следуя инструкции "Предоставить доступ". В этом примере субъект-служба требует следующего:

    • Разрешение в рабочей области для чтения пакетных развертываний и выполнения действий над ними.
    • Разрешения на чтение и запись в хранилищах данных.

Включение доступа к данным

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

  1. Создайте ресурс управляемого удостоверения:

    IDENTITY=$(az identity create  -n azureml-cpu-cluster-idn  --query id -o tsv)
    
  2. Обновите вычислительный кластер, чтобы использовать созданное управляемое удостоверение:

    Примечание.

    В этом примере предполагается, что вы создали вычислительный кластер, который cpu-cluster используется для развертывания по умолчанию в конечной точке.

    az ml compute update --name cpu-cluster --identity-type user_assigned --user-assigned-identities $IDENTITY
    
  3. В портал Azure убедитесь, что управляемое удостоверение имеет правильные разрешения для чтения данных.

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

Создание приложения логики

  1. В портал Azure на домашней странице Azure выберите "Создать ресурс".

  2. В меню Azure Marketplace выберите Интеграция>Приложение логики.

    Снимок экрана: меню Azure Marketplace с выбранными параметрами интеграции и приложения логики.

  3. В области Создание приложения логики на вкладке Основные сведения укажите следующие сведения о ресурсе приложения логики.

    Свойство Обязательное поле значение Описание
    Подписка Да <имя-подписки-Azure> Имя подписки Azure. В этом примере используется оплата по мере использования.
    Группа ресурсов Да LA-TravelTime-RG Группа ресурсов Azure, в которой будут созданы ресурс приложения логики и связанные ресурсы. Это имя должно быть уникальным во всех регионах и может содержать только буквы, цифры, дефисы (-), символы подчеркивания (_), круглые скобки ((, )) и точки (.).
    Имя Да LA-TravelTime Имя ресурса приложения логики, которое должно быть уникальным во всех регионах и может содержать только буквы, цифры, дефисы (-), символы подчеркивания (_), круглые скобки ((, )) и точки (.).

    Снимок экрана: портал Azure, область создания приложения логики и сведения о новом ресурсе приложения логики.

  4. Прежде чем продолжить выбор, перейдите к разделу План. Для типа плана выберите "Потребление ", чтобы отобразить только параметры рабочего процесса приложения логики потребления, который выполняется в мультитенантных Azure Logic Apps.

    Внимание

    Для рабочих областей с поддержкой приватного канала необходимо использовать стандартный план azure Logic Apps с разрешением конфигурации частной сети.

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

    Тип плана Description
    Стандартные Этот тип приложения логики является выбранным по умолчанию и выполняется в Azure Logic Apps с одним клиентом и использует стандартную модель ценообразования.
    Потребление Этот тип приложения логики выполняется в глобальных мультитенантных Azure Logic Apps и использует модель ценообразования на потребление.
  5. Далее выберите значения следующих свойств.

    Свойство Обязательное поле значение Описание
    Регион Да Западная часть США Регион центра обработки данных Azure, в котором будет храниться информация приложения. В этом примере приложение логики развертывается в регионе Западная часть США в Azure.
    Включение анализа журналов Да Нет Этот параметр отображается и применяется только при выборе типа приложения логики Потребление. Измените этот параметр, только если требуется включить ведение журнала диагностики. Для целей этого учебника оставьте выбор по умолчанию.
  6. Когда все будет готово, выберите Просмотр и создание. После того, как Azure проверит сведения о ресурсе приложения логики, выберите Создать.

  7. После развертывания приложения в Azure выберите Перейти к ресурсу.

    Azure открывает конструктор рабочих процессов для приложения логики.

Настройка параметров рабочего процесса

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

  1. На панели инструментов конструктора рабочих процессов выберите параметры.

    Снимок экрана: панель параметров для определения параметров, необходимых для рабочего процесса.

  2. На панели параметров выберите "Создать параметр" и укажите следующие сведения о каждом параметре для создания:

    Совет

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

    Наименование параметра Description Пример значения
    tenant_id Идентификатор клиента, в котором развернута конечная точка. 00000000-0000-0000-00000000
    client_id Идентификатор клиента для субъекта-службы, используемого для вызова конечной точки. 00000000-0000-0000-00000000
    client_secret Секрет клиента субъекта-службы, используемый для вызова конечной точки. ABCDEFGhijkLMNOPQRstUVwz
    endpoint_uri URI оценки конечной точки.

    Важно. Этот универсальный код ресурса (URI) предназначен для конечной точки, которую требуется выполнить. Конечная точка должна быть настроена по умолчанию.
    https://<endpoint_name>.<region>.inference.ml.azure.com/jobs

    В следующем примере показан пример параметра:

    Снимок экрана: добавление одного параметра в конструкторе.

    Дополнительные сведения см. в статье "Создание параметров между средами для входных данных рабочего процесса в Azure Logic Apps".

Добавление триггера

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

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

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

  3. В окне триггера укажите следующие сведения:

    Свойство Значение Описание
    Тип ресурса Microsoft.Storage.StorageAccounts Тип ресурса, создающий события.
    Подписка Имя подписки. Подписка для учетной записи хранения.
    Имя ресурса Имя учетной записи хранения Имя учетной записи хранения, в которой создаются файлы.
    Элемент типа события Microsoft.Storage.BlobCreated Тип события.
  4. В списке дополнительных параметров выберите фильтр префикса и укажите следующее значение:

    /blobServices/default/container</container-name>/blobs/<path-to-data-folder>

    Внимание

    Свойство фильтра префикса позволяет сетке событий уведомлять рабочий процесс только при создании большого двоичного объекта в указанном пути. В этом случае предполагается, что файлы создаются внешним процессом в папке, указанной <в папке> пути к данным внутри имени> контейнера<, которая находится в выбранной учетной записи хранения. Настройте этот параметр для сопоставления расположения данных. В противном случае событие запускается для любого файла, созданного в любом расположении учетной записи хранения. Дополнительные сведения см. в разделе "Фильтрация событий" для сетки событий.

    В следующем примере показано, как отображается триггер:

    Снимок экрана: действие триггера приложения логики.

Настройка действий

  1. В разделе "При возникновении события ресурса" выполните следующие общие действия, чтобы добавить действие HTTP. Переименуйте действие в авторизовать.

  2. В действии авторизации укажите следующие сведения:

    Свойство Значение Примечания.
    Method POST Метод HTTP
    URI-адрес concat('https://login.microsoftonline.com/', parameters('tenant_id'), '/oauth2/token') Чтобы ввести это выражение, выберите внутри поля URI . В отображаемых параметрах выберите редактор выражений (значок формулы).
    Заголовки Content-Type со значением application/x-www-form-urlencoded
    Текст concat('grant_type=client_credentials&client_id=', parameters('client_id'), '&client_secret=', parameters('client_secret'), '&resource=https://ml.azure.com') Чтобы ввести это выражение, выберите внутри поля "Текст ". В отображаемых параметрах выберите редактор выражений (значок формулы).

    В следующем примере показан пример действия авторизации :

    Снимок экрана: пример действия авторизации в рабочем процессе приложения логики.

  3. В действии "Авторизовать" добавьте другое действие HTTP и переименуйте заголовок в Invoke.

  4. В действии Invoke укажите следующие сведения:

    Свойство Значение Примечания.
    Method POST Метод HTTP
    URI-адрес endpoint_uri Выберите внутри поля URI , а затем в разделе "Параметры" выберите endpoint_uri.
    Заголовки Content-Type со значением application/json
    Заголовки Authorization со значением concat('Bearer ', body('Authorize')['access_token']) Чтобы ввести это выражение, выберите внутри поля "Заголовки ". В отображаемых параметрах выберите редактор выражений (значок формулы).
  5. Выберите внутри поля "Текст " и в появившемся окне выберите редактор выражений (значок формулы), чтобы ввести следующее выражение:

    replace('{
     "properties": {
       "InputData": {
         "mnistinput": {
            "JobInputType" : "UriFile",
            "Uri" : "<JOB_INPUT_URI>"
         }
       }
      }
    }', '<JOB_INPUT_URI>', triggerBody()?[0]['data']['url'])
    

    Совет

    Предыдущие полезные данные соответствуют развертыванию модели. Если вы работаете с развертыванием компонента конвейера, измените формат в соответствии с ожиданиями входных данных конвейера. Дополнительные сведения о структуре входных данных в вызовах REST см. в разделе "Создание заданий и входных данных" для конечных точек пакетной службы (REST).

    В следующем примере показан пример действия Invoke :

    Снимок экрана: пример действия Invoke в рабочем процессе приложения логики.

    Примечание.

    Действие Invoke активирует пакетное задание, но действие не ожидает завершения. По умолчанию Azure Logic Apps не настраивается для длительных приложений. Если вам нужно дождаться завершения задания, рекомендуется переключиться на конечные точки пакетной службы из Фабрика данных Azure.

  6. Закончив работу, сохраните свой рабочий процесс.

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

  7. Чтобы убедиться, что приложение успешно получило событие, проверьте журнал запусков приложения:

    Снимок экрана: журнал выполнения для рабочего процесса приложения логики.

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