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


GenAIOps с потоком запросов и Azure DevOps

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

В этой статье показано, как Машинное обучение Azure позволяет интегрироваться с Azure DevOps для автоматизации жизненного цикла разработки приложений LLM с потоком запроса. Поток запросов обеспечивает упрощенный и структурированный подход к разработке приложений, вложенных в LLM. Его хорошо определенный процесс и жизненный цикл помогут вам в процессе создания, тестирования, оптимизации и развертывания потоков, что завершается созданием полностью функциональных решений llM-infused.

Функции потока запросов GenAIOps

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

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

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

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

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

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

  • Развертывание A/B. GenAIOps с потоком запросов легко реализует развертывания A/B, что позволяет легко сравнивать различные версии потока. Эта платформа упрощает развертывание A/B для потока запросов так же, как и в традиционном тестировании веб-сайта A/B. Вы можете легко сравнить различные версии потока в реальном мире, чтобы определить, какая версия работает лучше всего.

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

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

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

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

  • Перенос собственных потоков (BYOF) предоставляет полную платформу для разработки нескольких вариантов использования, связанных с приложениями llM-infused.
  • Разработка на основе конфигурации означает, что нет необходимости писать обширный стандартный код.
  • Экспериментирование и оценка запросов выполняются как локально, так и в облаке.
  • Записные книжки для оценки локальных запросов предоставляют библиотеку функций для локального эксперимента.
  • Тестирование конечных точек в конвейере после развертывания проверяет доступность и готовность конечных точек.
  • Необязательный цикл для пользователя проверяет метрики запроса перед развертыванием.

Этапы GenAIOps

Жизненный цикл GenAIOps состоит из четырех отдельных этапов:

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

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

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

  • Развертывание. Оптимизируйте поток для повышения эффективности и эффективности, разверните его в рабочей среде, включая развертывание A/B, отслеживайте производительность, собирайте отзывы пользователей и используйте эти сведения для дальнейшего улучшения потока.

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

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

Поток процессов GenAIOps

Снимок экрана: процесс потока запроса GenAIOps.

  1. На этапе инициализации вы разрабатываете потоки, подготавливаете и курируете данные, а также обновляете связанные файлы конфигурации GenAIOps.
  2. После локальной разработки с помощью Visual Studio Code с расширением потока запроса вы создаете запрос на вытягивание (PR) из ветвь компонента в ветвь разработки, которая выполняет конвейер проверки сборки и потоки экспериментов.
  3. Запрос на вытягивание вручную утвержден и код объединяется с ветвью разработки.
  4. После слияния pr в ветвь разработки конвейер непрерывной интеграции (CI) для среды разработки выполняется. Конвейер CI выполняет потоки экспериментов и вычислений в последовательности и регистрирует потоки в реестре Машинное обучение Azure отдельно от других шагов в конвейере.
  5. После завершения выполнения конвейера CI триггер непрерывного развертывания (CD) выполняет конвейер CD, который развертывает стандартный поток из реестра Машинное обучение Azure в качестве Машинное обучение Azure онлайн-конечной точки. Затем конвейер выполняет тесты интеграции и дыма в развернутом потоке.
  6. Ветвь выпуска создается из ветви разработки, или pr вызывается из ветви разработки в ветвь выпуска.
  7. Pr-запрос утвержден вручную, и код объединяется с ветвью выпуска. После объединения pr в ветвь выпуска конвейер CI для рабочей среды выполняется. Конвейер выполняет потоки экспериментирования и оценки в последовательности и регистрирует потоки в реестре Машинное обучение Azure отдельно от других шагов в конвейере.
  8. После завершения выполнения конвейера CI триггер CD выполняет конвейер CD, который развертывает стандартный поток из реестра Машинное обучение Azure в качестве Машинное обучение Azure сетевой конечной точки. Затем конвейер выполняет тесты интеграции и дыма в развернутом потоке.

Создание потока запроса GenAIOps

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

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

Примечание.

Если вы используете Azure DevOps и Terraform для создания инфраструктуры, необходимо установить расширение Terraform для Azure DevOps .

Настройка подключения потока запроса

Поток запросов использует ресурс подключения для подключения к конечным точкам Поиска Azure OpenAI, OpenAI или Azure AI Search. Подключение можно создать с помощью пользовательского интерфейса портала потока запроса или с помощью REST API. Дополнительные сведения см. в разделе "Подключения" в потоке запросов.

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

Настройка сеанса вычислений

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

Настройка репозитория Azure Repos

Чтобы создать вилку репозитория в организации Azure DevOps, следуйте инструкциям по настройке репозитория GitHub. В этом репозитории используются две ветви, main а developmentдля повышения уровня кода и выполнения конвейера.

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

Настройка субъекта-службы Azure

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

Создайте субъект-службу, выполнив инструкции по созданию субъекта-службы Azure. Этот субъект-служба используется для настройки подключения Azure DevOps Services и разрешения Azure DevOps Services для проверки подлинности и подключения к службам Azure. Эксперимент потока запроса и задания оценки выполняются под удостоверением субъекта-службы.

Программа установки предоставляет субъекту-службе разрешения владельца, чтобы конвейер CD автоматически предоставлял только что подготовленную конечную точку Машинное обучение Azure с доступом к рабочей области Машинное обучение Azure для чтения сведений о подключении. Конвейер также добавляет конечную точку в политику хранилища ключей, связанную с рабочей областью Машинное обучение Azure и get list разрешениями секрета. Вы можете изменить разрешения владельца на разрешения уровня участника , изменив код YAML конвейера, чтобы удалить шаг, связанный с разрешениями.

Создание проекта Azure DevOps

Чтобы создать проект в пользовательском интерфейсе Azure DevOps, следуйте инструкциям по созданию нового проекта Azure DevOps.

Настройка проверки подлинности между Azure DevOps и Azure

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

Создание группы переменных Azure DevOps

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

Настройка Azure Repos и Azure Pipelines

В примере репозитория используются две ветви, main а developmentдля повышения уровня кода и выполнения конвейера. Чтобы настроить собственные локальные и удаленные репозитории для использования кода из примера репозитория, выполните инструкции по настройке локальных и удаленных репозиториев Azure DevOps.

Клонируйте и main development ветви из примера репозитория, а также связываете код, чтобы ссылаться на новый репозиторий Azure Repos. Конвейеры pr и разработки настраиваются для автоматического выполнения на основе триггеров создания и слияния.

Политика ветвей для development ветви настроена для выполнения конвейера PR для любого запроса, поднятого в ветви разработки из ветвь компонента. Конвейер dev выполняется при слиянии pr в ветвь разработки и состоит из этапов CI и CD.

Человек в цикле также реализуется в конвейерах. После выполнения этапа CI в dev конвейере этап CD следует после того, как в пользовательском интерфейсе выполнения сборки Azure Pipelines будет предоставлено утверждение вручную.

Время ожидания утверждения по умолчанию составляет 60 минут, после чего конвейер отклоняется, а этап CD не выполняется. Утверждение выполнения вручную выполняет шаги CD конвейера.

Утверждение вручную в примере конвейера настроено для отправки replace@youremail.comуведомлений. Замените заполнитель соответствующим адресом электронной почты.

Тестирование конвейера

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

  1. Вы создаете PR из ветвь компонента в ветвь разработки.
  2. Конвейер PR выполняется автоматически из-за конфигурации политики ветви.
  3. Pr объединяется с ветвью разработки.
  4. Связанный dev конвейер выполняется, что приводит к полному выполнению CI и CD и подготовке или обновлению конечных точек Машинное обучение Azure.

Выходные данные должны выглядеть примерно так же, как в примерах сценария выполнения, оценки и развертывания.

Использование локального выполнения

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

  1. Клонируйте репозиторий следующим образом:

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. Создайте ENV-файл на верхнем уровне папок. Добавьте строки для каждого подключения, обновляя значения заполнителей. В примерах репозитория используется подключение AzureOpenAI с именем aoai и версией 2024-02-01API.

    aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"}
    <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
    
  3. Подготовьте локальную среду conda или виртуальную среду для установки зависимостей.

    python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
    
  4. Перенос или запись потоков в шаблон на основе инструкций по подключению новых потоков.

  5. Напишите скрипты Python в папке local_execution аналогично приведенным примерам.