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


Принципы проектирования рабочих нагрузок ИИ в Azure

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

Надежность

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

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

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

Воспользуйтесь преимуществами известных шаблонов дизайна.
Регулярно анализируйте потенциальные режимы сбоев в системных компонентах и создавайте устойчивость к этим сбоям. Используйте известные шаблоны проектирования для изоляции частей системы и предотвращения каскадных сбоев. Например, шаблон bulkhead может помочь изолировать сбои, а механизмы повторных попыток и выключатели могут обрабатывать временные ошибки, такие как регулирование запросов.
Балансируйте цели надежности между зависимыми компонентами. Убедитесь, что конечная точка вывода или модель и хранилище данных согласованы с точки зрения надежности. Компоненты приложения должны оставаться доступными даже в непредвиденных условиях, таких как всплеск одновременных пользователей. Кроме того, рабочая нагрузка должна иметь возможность переключаться на резервные системы в случае сбоев. Если один компонент отказывает, это влияет на надежность другого.

Аналогичным образом API уровня служб, которые являются критически важными производственными ресурсами, должны соответствовать тем же стандартам надежности, что и другие потоки рабочей нагрузки высокого уровня. Если эти API требуют высокой доступности, платформа размещения должна поддерживать зоны доступности или многорегионную структуру, чтобы обеспечить непрерывную работу и устойчивость.
Проектирование для обеспечения надежности эксплуатации. Обеспечение надежности ответов модели, гарантируя, что обновления являются частыми и своевременными. Решите, следует ли использовать последние данные или немного старые данные, балансировка необходимости up-to-date с практической степенью частоты обновления. Вы должны автоматизировать онлайн-обучение из-за его частоты и надежности. Автономная подготовка может быть оправдана с помощью анализа затрат. Вы можете использовать более дешевые ресурсы для автономного обучения.
Проектирование надежного взаимодействия с пользователем. Используйте нагрузочное тестирование, чтобы оценить, как рабочая нагрузка обрабатывает стресс, и разработать пользовательский интерфейс для управления ожиданиями пользователей во время отклика. Реализуйте элементы пользовательского интерфейса, которые информируют пользователей о потенциальном времени ожидания, и внедрите асинхронные принципы облачного проектирования для решения проблем прерывистости, задержек или сбоев.

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

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

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

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

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

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

Убедитесь, что весь трафик использует HTTPS для шифрования. Определите точки завершения TLS на каждом этапе.

Саму модель необходимо защитить, чтобы злоумышленники не извлекали конфиденциальную информацию, используемую во время обучения. Для модели требуется наивысший уровень мер безопасности. Рекомендуется использовать одноморфное шифрование, позволяющее выводить зашифрованные данные.
Инвестируйте в надежное управление доступом для идентификаторов (пользователей и системы), которые обращаются к системе. Реализуйте управление доступом на основе ролей (RBAC) и /или управление доступом на основе атрибутов (ABAC) как для управления, так и для плоскостей данных.

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

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

Интеграция компонентов ИИ в существующий тест безопасности. Например, включите конечную точку вывода в обычные тесты вместе с другими общедоступными конечными точками.

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

Предпочитайте ограниченный дизайн API за счет гибкости на стороне клиента.

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

Следующие области проектирования содержат подробные сведения о предыдущих принципах и рекомендациях.

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

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

Ознакомьтесь с принципами оптимизации затрат , фокусируясь на оптимизации тарифов и использования.

Принцип проектирования Рекомендации
Определите драйверы затрат, выполнив комплексное упражнение по моделированию затрат. Рассмотрим ключевые факторы платформы данных и приложений:
- Объем данных. Оцените объем данных, которые будут индексироваться и обрабатываться. Большие тома могут увеличить затраты на хранение и обработку.
- Количество запросов. Прогнозирование частоты и сложности запросов. Более высокие объемы запросов могут увеличить затраты, особенно если для запросов требуются значительные вычислительные ресурсы.
- Пропускная способность. Оцените ожидаемую пропускную способность, чтобы определить необходимый уровень производительности. Более высокие требования к пропускной способности могут привести к более высоким затратам.
- Затраты на зависимость. Понимайте, что в зависимостях могут быть скрытые затраты. Например, при вычислении стоимости индексирования включите стоимость набора навыков, которая является частью обработки данных, но за пределами области индекса.
Платите за то, что вы планируете использовать. Выберите технологическое решение, которое соответствует вашим потребностям, не вызывая ненужных расходов. Если вам не нужны расширенные функции, рассмотрите менее дорогие варианты и средства с открытым кодом.

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

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

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

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

Стресс-тестирование конечной точки вывода службы OpenAI Azure может быть дорогостоящим, так как каждый вызов несет расходы. Чтобы сократить затраты, используйте неиспользуемые PTUS службы OpenAI в тестовой среде или имитируйте конечную точку вывода.

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

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

Для автономного обучения оцените, можно ли использовать более дешевые ресурсы, например автономное оборудование.

Как правило, удалите данные из хранилищ компонентов, чтобы сократить затраты на простой и хранение компонентов.

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

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

Эффективность работы

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

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

Принцип проектирования Рекомендации
Способствовать непрерывному обучению и экспериментации на протяжении всего жизненного цикла разработки приложений, обработки данных и управления моделями ИИ. Операции рабочей нагрузки должны основываться на проверенных в отрасли методологиях, таких как DevOps, DataOps, MLOps и GenAIOps.

Раннее сотрудничество между операциями, разработкой приложений и командами данных важно для установления взаимного понимания приемлемой производительности модели. Команды по операциям предоставляют качественные сигналы и оповещения, доступные для действий. Команды приложений и данных помогают эффективно диагностировать и устранять проблемы.
Выберите технологии, которые свести к минимуму рабочее бремя. При выборе решений на базе платформы предпочитайте платформу как услугу (PaaS), чтобы упростить проектирование, автоматизировать оркестрацию рабочих процессов и облегчить операции на этапе эксплуатации.
Создайте автоматизированную систему мониторинга, которая поддерживает функции оповещения, включая ведение журнала и возможность аудита. Учитывая недетерминированный характер ИИ, важно установить измерения качества в начале жизненного цикла. Обратитесь к специалистам по обработке и анализу данных, чтобы определить метрики качества. Визуализировать текущие аналитические сведения на комплексных панелях мониторинга.

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

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

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

Следующие области проектирования содержат подробные сведения о предыдущих принципах и рекомендациях.

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

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

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

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

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

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

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

Серверы для инференса имеют разные характеристики производительности. Эти характеристики влияют на производительность модели во время выполнения. Выберите сервер, который соответствует базовым ожиданиям.
Сбор и анализ метрик производительности и определение узких мест.

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

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

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

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

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

Следующие области проектирования содержат подробные сведения о предыдущих принципах и рекомендациях.

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