Пакетная оценка для моделей глубокого обучения с помощью конвейеров Машинное обучение Azure

Logic Apps
Машинное обучение
Управление доступом на основе ролей в Azure
Служба хранилища

В этой эталонной архитектуре показано, как применить перенос нейронного стиля к видео с помощью Машинное обучение Azure. Передача стиля —это глубокое обучения, которое объединяет существующий образ в стиле другого. Эту архитектуру можно обобщить для любого сценария, использующего пакетную оценку с глубоким обучением.

Архитектура

Architecture diagram for deep learning models using Azure Machine Learning.

Рабочий процесс

Архитектура состоит из следующих компонентов.

Вычисления

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

Память

Хранилище BLOB-объектов Azure хранит все изображения (входные изображения, образы стилей и выходные изображения). Машинное обучение Azure интегрируется с служба хранилища BLOB-объектов, чтобы пользователям не нужно было вручную перемещать данные на вычислительных платформах и хранилищах BLOB-объектов. Служба хранилища BLOB-объектов также экономически эффективна для производительности, необходимой для этой рабочей нагрузки.

Триггер

Azure Logic Apps активирует рабочий процесс. Когда приложение логики обнаруживает, что большой двоичный объект был добавлен в контейнер, он активирует конвейер Машинное обучение Azure. Logic Apps подходит для этой эталонной архитектуры, так как это простой способ обнаружения изменений в хранилище BLOB-объектов с простым процессом изменения триггера.

Предварительная обработка и постобработка данных

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

  1. Используйте FFmpeg, чтобы извлечь звуковой файл, чтобы позже его можно было объединить с выходным видео.
  2. Используйте FFmpeg, чтобы разбить видео на отдельные кадры. Кадры обрабатываются независимо друг от друга.
  3. На этом этапе можно параллельно применять передачу нейронного стиля к каждому отдельному кадру.
  4. После обработки каждого кадра используйте FFmpeg, чтобы восстановить кадры вместе.
  5. Наконец, повторно прикачивание звукового файла к отложенным кадрам.

Компоненты

Сведения о решении

Эта эталонная архитектура предназначена для рабочих нагрузок, которые активируются при наличие нового носителя в службе хранилища Azure.

Обработка предусматривает указанные ниже действия.

  1. Отправьте видеофайл в Хранилище BLOB-объектов Azure.
  2. Видеофайл активирует Azure Logic Apps для отправки запроса в опубликованную конечную точку Машинное обучение Azure конвейера.
  3. Конвейер обрабатывает видео, применяет передачу стиля с помощью MPI и выполняет постобработку видео.
  4. Выходные данные сохраняются обратно в большой двоичный объект служба хранилища после завершения конвейера.

Потенциальные варианты использования

Организация, занимающаяся мультимедиа, выпустила видео, стиль которого необходимо изменить с тем, чтобы оно выглядело как определенная картинка. Организация хочет применить этот стиль ко всем кадрам видео своевременно и автоматизированно. Дополнительные сведения об алгоритмах нейронной передачи стиля см. статью Image Style Transfer Using Convolutional Neural Networks (Передача стиля образа с помощью сверточных нейронных сетей) (PDF-файл).

Особенности

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

Уровень производительности

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

GPU и ЦП

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

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

Параллелизация между виртуальными машинами и ядрами

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

Для этой рабочей нагрузки эти два варианта имеют сравнимую производительность. С помощью меньшего числа виртуальных машин с несколькими GPU, на виртуальную машину можно сократить перемещение данных. Тем не менее объем данных для каждого задания для этой рабочей нагрузки не велик, поэтому вы не будете наблюдать большое количество регулирования по служба хранилища BLOB-объектов.

Этап MPI

При создании конвейера Машинное обучение Azure одним из шагов, используемых для выполнения параллельных вычислений, является шаг MPI (интерфейс обработки сообщений). Шаг MPI помогает равномерно разделить данные по доступным узлам. Шаг MPI не выполняется до тех пор, пока все запрошенные узлы не будут готовы. Если один узел завершится сбоем или вытеснен (если это виртуальная машина с низким приоритетом), необходимо повторно запустить шаг MPI.

Безопасность

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

Ограничение доступа к хранилищу BLOB-объектов Azure

В этой эталонной архитектуре Хранилище BLOB-объектов Azure является основным компонентом хранилища, который необходимо защитить. Развертывание базовых показателей, показанное в репозитории GitHub использует ключи учетной записи хранения для доступа к хранилищу BLOB-объектов. Для дальнейшего управления и защиты вместо этого рассмотрите возможность использования подписанного URL-адреса (SAS ). Это предоставляет ограниченный доступ к объектам в хранилище, без необходимости жесткого кодирования ключей учетной записи или сохранения их в виде открытого текста. Этот подход особенно полезен, так как ключи учетной записи отображаются в виде обычного текста внутри интерфейса конструктора приложения логики. Использование SAS гарантирует, что учетная запись хранения имеет надлежащее управление, и что доступ предоставляется только пользователям, которым он необходим.

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

Шифрование и перемещение данных

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

Защита вычислений в виртуальной сети

Развертываемый кластер вычислений Машинного обучения можно подготовить к работе в подсети виртуальной сети. Эта подсеть позволяет вычислительным узлам кластера безопасно взаимодействовать с другими виртуальными машинами.

Обеспечивайте защиту от вредоносных действий.

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

  • Используйте управление доступом на основе ролей Azure (Azure RBAC), чтобы ограничить доступ пользователей только к нужным ресурсам.
  • Подготовьте две отдельные учетные записи хранения. Храните входные и выходные данные в первой учетной записи. Доступ к этой учетной записи можно предоставить внешним пользователям. Храните исполняемые сценарии и выходные файлы журналов в другой учетной записи. Внешние пользователи не должны иметь доступ к этой учетной записи. Это разделение гарантирует, что внешние пользователи не могут изменять исполняемые файлы (внедрять вредоносный код) и не имеют доступа к файлам журналов, которые могут содержать конфиденциальную информацию.
  • Вредоносные пользователи могут выполнять атаки DDoS в очередь заданий или внедрять неправильные подозрительные сообщения в очередь заданий, что приводит к блокировке системы или возникновению ошибок отмены.

Оптимизация затрат

Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".

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

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

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

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

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

Мониторинг пакетных заданий

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

Чтобы проверить общее состояние кластера, перейдите в службу Машинное обучение в портал Azure, чтобы проверить состояние узлов в кластере. Если узел неактивен или задание завершилось сбоем, журналы ошибок сохраняются в служба хранилища BLOB-объектов, а также доступны в портал Azure.

Мониторинг можно оптимизировать, подключив журналы к Application Insights или запустив отдельные процессы для опроса состояния кластера и его заданий.

Вход с помощью Машинное обучение Azure

Машинное обучение Azure автоматически записывает все stdout/stderr в связанную учетную запись служба хранилища BLOB-объектов. Если не указано иное, ваша рабочая область Машинное обучение Azure будет автоматически подготавливать учетную запись хранения и сбрасывать в нее журналы. Вы также можете использовать средство навигации по хранилищу, например Обозреватель службы хранилища Azure, что упрощает навигацию по файлам журналов.

Развертывание этого сценария

Для развертывания этой эталонной архитектуры, выполните действия, описанные в репозитории GitHub.

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

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