Интеграция потока запросов с приложением DevOps на основе LLM

В этой статье вы узнаете об интеграции потока запросов с приложением devOps на основе LLM в Машинное обучение Azure. Поток запросов предлагает удобный и удобный для разработчика интерфейс кода для разработки и итерации всего рабочего процесса разработки приложений на основе LLM.

Он предоставляет пакет SDK для потока запросов и ИНТЕРФЕЙС командной строки, расширение кода VS и новый пользовательский интерфейс обозревателя папок потока для упрощения локальной разработки потоков, локального запуска потоков и выполнения оценки, а также перехода потоков из локальной среды в облако (Машинное обучение Azure рабочая область).

В этой документации основное внимание уделяется эффективному сочетанию возможностей интерфейса кода потока запросов и DevOps для улучшения рабочих процессов разработки приложений на основе LLM.

Diagram of the showing the following flow: create flow, develop and test flow, versioning in code repo, submit runs to cloud, and debut and iteration.

Введение кода в потоке запросов

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

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

  • Поток управления версиями в репозитории кода. Вы можете определить поток в формате YAML, который может оставаться в соответствии с указанными исходными файлами в структуре папок.
  • Интеграция потока выполнения с конвейером CI/CD. Поток можно активировать с помощью интерфейса командной строки запроса или пакета SDK, который можно легко интегрировать в конвейер CI/CD и процесс доставки.
  • Плавное переход из локального в облако. Вы можете легко экспортировать папку потока в локальный репозиторий или репозиторий кода для управления версиями, локальной разработки и общего доступа. Аналогичным образом папка потока может быть легко импортирована обратно в облако для дальнейшего разработки, тестирования, развертывания в облачных ресурсах.

Доступ к определению кода потока запроса

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

Машинное обучение Azure предоставляет общую файловую систему для всех пользователей рабочей области. При создании потока соответствующая папка потока автоматически создается и хранится там, расположенную в каталоге Users/<username>/promptflow .

Screenshot of standard flow creation showing the create a new flow.

Структура папок потока

Общие сведения о структуре папок потока и файлах ключей, которые он содержит:

  • flow.dag.yaml: этот файл определения основного потока в формате YAML содержит сведения о входных данных, выходных данных, узлах, инструментах и вариантах, используемых в потоке. Он является неотъемлемой частью разработки и определения потока запроса.
  • Файлы исходного кода (.py, .jinja2): папка потока также включает файлы исходного кода, управляемые пользователем, которые называются инструментами и узлами в потоке.
    • Файлы в формате Python (PY) можно ссылаться на средство Python для определения пользовательской логики Python.
    • Файлы в формате Jinja 2 (.jinja2) можно ссылаться на средство запроса или средство LLM для определения контекста запроса.
  • Файлы, отличные от источника: папка потока также может содержать файлы, отличные от источника, такие как файлы служебной программы и файлы данных, которые могут быть включены в исходные файлы.

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

Screenshot of standard flow highlighting the files explorer.

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

Screenshot of raw file mode on a standard flow.

Screenshot of flow source file in a standard flow.

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

Screenshot of notebooks in Azure Machine Learning in the prompt flow folder showing the files.

Поток запроса на управление версиями в репозитории кода

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

Screenshot of showing the download button in the file explorer.

Дополнительные сведения об интеграции DevOps с Машинное обучение Azure см. в Машинное обучение Azure интеграции с Git.

Отправка запусков в облако из локального репозитория

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

Установка пакета SDK потока запросов

pip install -r ../../examples/requirements.txt

Подключение к рабочей области Машинного обучения Azure

az login

run.yml Подготовьте конфигурацию для этого потока, выполняемую в облаке.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

column_mapping:
  url: ${data.url}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specify automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

Вы можете указать имя подключения и развертывания для каждого средства в потоке. Если вы не указываете имя подключения и развертывания, оно использует одно подключение и развертывание в flow.dag.yaml файле. Формат подключений:

...
connections:
  <node_name>:
    connection: <connection_name>
      deployment_name: <deployment_name>
...

pfazure run create --file run.yml

run_evaluation.yml Подготовьте конфигурацию для выполнения этого потока оценки в облаке.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
run: <id of web-classification flow run>
column_mapping:
  groundtruth: ${data.answer}
  prediction: ${run.outputs.category}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specif automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

pfazure run create --file run_evaluation.yml

Просмотр результатов выполнения в рабочей области Машинное обучение Azure

Отправка потока в облако вернет URL-адрес портала выполнения. Вы можете открыть URI-код для просмотра результатов выполнения на портале.

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

Потоковая передача журналов

pfazure run stream --name <run_name>

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

pfazure run show-details --name <run_name>

Просмотр метрик выполнения оценки

pfazure run show-metrics --name <evaluation_run_name>

Итеративная разработка от точной настройки

Локальная разработка и тестирование

Во время итеративной разработки при уточнении и точной настройке потока или запроса может быть полезно выполнить несколько итераций локально в репозитории кода. Версия сообщества, расширение VS Code для потока запросов и локальный пакет SDK для запроса и интерфейс командной строки предоставляются для упрощения чистой локальной разработки и тестирования без привязки Azure.

Расширение VS Code потока запросов

Установив расширение VS Code потока запросов, вы можете легко создать поток локально из редактора VS Code, предоставляя аналогичный интерфейс пользовательского интерфейса, как в облаке.

Чтобы использовать расширение, выполните следующие действия.

  1. Откройте папку потока запроса в VS Code Desktop.
  2. Откройте файл flow.dag.yaml в представлении записной книжки.
  3. Используйте визуальный редактор, чтобы внести необходимые изменения в поток, например настроить запросы в вариантах или добавить дополнительные инструменты.
  4. Чтобы протестировать поток, нажмите кнопку "Запустить поток " в верхней части визуального редактора. Это активирует тест потока.

Screenshot of VS Code showing running the flow in the visual editor.

Локальный пакет SDK для потока запросов и интерфейс командной строки

Если вы предпочитаете использовать Jupyter, PyCharm, Visual Studio или другие идентификаторы, вы можете напрямую изменить определение YAML в flow.dag.yaml файле.

Screenshot of a yaml file in VS Code highlighting the default input and flow directory.

Затем можно активировать один запуск потока для тестирования с помощью интерфейса командной строки запроса или пакета SDK.

Предположим, что вы находитесь в рабочем каталоге <path-to-the-sample-repo>/examples/flows/standard/

pf flow test --flow web-classification  # "web-classification" is the directory name

Screenshot of the flow test output in PowerShell.

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

Дополнительные сведения и рекомендации по использованию локальных версий см. в сообществе GitHub потока запросов.

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

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

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

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

Screenshot of the create a new flow panel with upload to local highlighted.

Интеграция CI/CD

CI: запуск потока триггеров в конвейере CI

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

На протяжении всего жизненного цикла итерации потока можно автоматизировать несколько операций:

  • Выполнение потока запроса после запроса на вытягивание
  • Выполнение оценки потока запроса для обеспечения высокого качества результатов
  • Регистрация моделей потоков запроса
  • Развертывание моделей потока запросов

Полное руководство по сквозному конвейеру MLOps, который выполняет поток веб-классификации, см. в разделе "Настройка конечных версий LLMOps" с помощью flow и GitHub и демонстрационного проекта GitHub.

CD: непрерывное развертывание

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

Дополнительные сведения о развертывании потока см. в статье "Развертывание потоков в Машинное обучение Azure управляемой веб-конечной точке для вывода в режиме реального времени с помощью интерфейса командной строки и пакета SDK".

Совместная работа по разработке потоков в рабочей среде

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

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

Введение пакета SDK для потока запроса или интерфейса командной строки и расширения Visual Studio Code в рамках процесса запроса упрощает совместную работу над потоком разработки в репозитории кода. Рекомендуется использовать облачный репозиторий кода, например GitHub или Azure DevOps, для отслеживания изменений, управления версиями и интеграции этих изменений в окончательный проект.

Рекомендации по разработке для совместной работы

  1. Создание и одно тестирование потока локально — репозиторий кода и расширение VSC

    • Первый шаг этого процесса совместной работы включает использование репозитория кода в качестве основы для кода проекта, который включает код потока запроса.
      • Этот централизованный репозиторий обеспечивает эффективную организацию, отслеживание всех изменений кода и совместную работу между участниками группы.
    • После настройки репозитория участники группы могут использовать расширение VSC для локального разработки и одно входного тестирования потока.
      • Эта стандартизованная интегрированная среда разработки способствует совместной работе между несколькими членами, работающими над различными аспектами потока. Screenshot of local development.
  2. Облачная экспериментальная пакетная проверка и оценка — пользовательский интерфейс интерфейса командной строки и пакета SDK и портала рабочей области

    • На этапе локальной разработки и тестирования разработчики потоков могут использовать интерфейс командной строки или пакет SDK для отправки пакетных запусков и вычислений из локальных файлов потока в облако.
      • Это действие обеспечивает способ использования облачных ресурсов, результаты сохранятся постоянно и эффективно управляются с помощью пользовательского интерфейса портала в рабочей области Машинное обучение Azure. Этот шаг позволяет использовать облачные ресурсы, включая вычислительные ресурсы и хранилище, а также дополнительную конечную точку для развертываний. Screenshot of pfazure command to submit run to cloud.
    • После отправки в облако участники группы могут получить доступ к пользовательскому интерфейсу портала облака, чтобы просмотреть результаты и эффективно управлять экспериментами.
      • Эта облачная рабочая область предоставляет централизованное расположение для сбора и управления всеми журналами выполнения, журналами, моментальными снимками, комплексными результатами, включая входные и выходные данные уровня экземпляра. Screenshot of cloud run snapshot.
      • В списке выполнения, который записывает всю историю выполнения во время разработки, члены команды могут легко сравнить результаты различных запусков, помогая в анализе качества и необходимых корректировках. Screenshot of run list in workspace. Screenshot of run comparison in workspace.
  3. Локальная итеративная разработка или одношаговое развертывание пользовательского интерфейса для рабочей среды

    • После анализа экспериментов члены группы могут вернуться в репозиторий кода для другой разработки и точной настройки. Последующие запуски можно отправить в облако в итеративном режиме.
      • Этот итеративный подход обеспечивает согласованное улучшение до тех пор, пока команда не будет удовлетворена качеством, готовым к работе.
    • После того как команда полностью уверена в качестве потока, ее можно легко развернуть с помощью мастера пользовательского интерфейса в качестве сетевой конечной точки в Машинное обучение Azure. После того как команда полностью уверена в качестве потока, ее можно легко перейти в рабочую среду с помощью мастера развертывания пользовательского интерфейса в качестве сетевой конечной точки в надежной облачной среде.
      • Это развертывание в сетевой конечной точке может основываться на моментальном снимке запуска, что позволяет обеспечить стабильную и безопасную обслуживание, дальнейшее выделение ресурсов и отслеживание использования ресурсов и мониторинг журналов в облаке. Screenshot of deploying flow from a run snapshot. Screenshot of deploy wizard.

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

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

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

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

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