This template can be used for both Azure AI Studio and Azure Machine Learning.
It can be used for both AZURE and LOCAL execution.
It supports all types of flow - python Class flows, Function flows and YAML flows.
It supports Github, Azure DevOps and Jenkins CI/CD orchestration.
It supports pure python based Evaluation as well using promptflow-evals package.
It should be used for INNER-LOOP Experimentation and Evaluation.
It should be used for OUTER-LOOP Deployment and Inferencing.
NOTE: A new FAQ section is added to help Engineers, Data Scientist and developers find answers to general questions on configuring and using this template.
Часто задаваемые вопросы ЗДЕСЬ
Операции с большими языковыми моделями, или LLMOps, стали краеугольным камнем эффективного оперативного проектирования, а также разработки и развертывания приложений на основе LLM. Поскольку спрос на приложения LLM продолжает расти, организации нуждаются в целостном и оптимизированном процессе управления своим сквозным жизненным циклом.
Развитие искусственного интеллекта и моделей больших языков (LLM) изменило различные отрасли, позволив разрабатывать инновационные приложения с человеческим пониманием и возможностями генерации текста. Эта революция открыла новые возможности в таких областях, как обслуживание клиентов, создание контента и анализ данных.
Поскольку LLM быстро развивается, важность оперативного проектирования становится все более очевидной. Оперативная инженерия играет решающую роль в использовании всего потенциала LLM, создавая эффективные подсказки, соответствующие конкретным бизнес-сценариям. Этот процесс позволяет разработчикам создавать индивидуальные решения ИИ, делая ИИ более доступным и полезным для более широкой аудитории.
Это среда экспериментирования и оценки для Prompt Flow. Это просто не конвейеры CI/CD для Prompt Flow, хотя он его поддерживает. Он имеет богатый набор функций для экспериментирования, оценки, развертывания и мониторинга Prompt Flow. Это комплексное решение для ввода в эксплуатацию Prompt Flow.
Шаблон поддерживает как Azure AI Studio, так и машинное обучение Azure. В зависимости от конфигурации шаблон можно использовать как для Azure AI Studio, так и для машинного обучения Azure. Он обеспечивает плавную миграцию для экспериментирования, оценки и развертывания Prompt Flow между службами.
Этот шаблон поддерживает различные типы потоков, что позволяет вам определять и выполнять рабочие процессы в соответствии с вашими конкретными требованиями. Поддерживаются два основных типа потока:
Гибкие потоки
Потоки направленного ациклического графа (DAG)
Одной из мощных особенностей этого проекта является его способность автоматически определять тип потока и соответствующим образом выполнять поток. Это позволяет вам экспериментировать с различными типами потока и выбирать тот, который лучше всего соответствует вашим потребностям.
Этот шаблон поддерживает:
Управление потоками на основе большого языка, от локального экспериментирования до производственного развертывания, было далеко не простым и не является универсальной задачей.
Каждый поток имеет свой уникальный жизненный цикл: от первоначального экспериментирования до развертывания, и каждый этап представляет свой набор проблем.
Организации часто имеют дело с несколькими потоками одновременно, каждый из которых имеет свои цели, требования и сложности. Без надлежащих инструментов управления это может быстро стать непреодолимым.
Он включает в себя обработку нескольких потоков, их уникальных жизненных циклов, экспериментирование с различными конфигурациями и обеспечение плавного развертывания.
Вот тут-то и появляется LLMOps с потоком подсказок . LLMOps с потоком подсказок — это «шаблон и руководство LLMOps», которые помогут вам создавать приложения на основе LLM с помощью потока подсказок. Он предоставляет следующие возможности:
Централизованное размещение кода. Этот репозиторий поддерживает размещение кода для нескольких потоков на основе потока запросов, предоставляя единый репозиторий для всех ваших потоков. Думайте об этой платформе как о едином репозитории, в котором находится весь код потока подсказок. Это похоже на библиотеку ваших потоков, позволяющую легко находить, получать доступ и сотрудничать в различных проектах.
Управление жизненным циклом. Каждый поток имеет свой собственный жизненный цикл, что позволяет плавно переходить от локального экспериментирования к промышленному развертыванию.
Экспериментирование с вариантами и гиперпараметрами: экспериментируйте с несколькими вариантами и гиперпараметрами, с легкостью оценивая варианты потока. Варианты и гиперпараметры подобны ингредиентам в рецепте. Эта платформа позволяет вам экспериментировать с различными комбинациями вариантов на нескольких узлах потока.
Развертывание A/B. Легко реализуйте развертывания A/B, что позволяет без труда сравнивать различные версии потока. Как и в традиционном A/B-тестировании веб-сайтов, эта платформа облегчает A/B-развертывание для оперативных потоков потоков. Это означает, что вы можете легко сравнивать различные версии потока в реальных условиях, чтобы определить, какая из них работает лучше всего.
Отношения «многие ко многим наборам данных/потокам». Возможность использования нескольких наборов данных для каждого стандартного и оценочного потока, обеспечивая универсальность при тестировании и оценке потоков. Платформа предназначена для размещения нескольких наборов данных для каждого потока.
Несколько целей развертывания: репозиторий поддерживает развертывание потоков в Kubernetes и управляемых вычислениях Azure, управляемых посредством конфигурации, гарантируя, что ваши потоки могут масштабироваться по мере необходимости.
Комплексная отчетность: создавайте подробные отчеты для каждого варианта конфигурации, что позволит вам принимать обоснованные решения. Обеспечивает подробный сбор показателей для всех вариантов массовых запусков и экспериментов, что позволяет принимать решения на основе данных как в CSV, так и в HTML-файлах.
Предлагает BYOF (принеси свои потоки). Полноценная платформа для разработки различных вариантов использования приложений, основанных на LLM.
Предлагает разработку на основе конфигурации . Нет необходимости писать обширный стандартный код.
Обеспечивает выполнение как оперативных экспериментов, так и оценок как локально, так и в облаке.
Предоставляет блокноты для локальной оценки подсказок. Предоставляет библиотеку функций для локального экспериментирования.
Тестирование конечной точки в конвейере после развертывания для проверки ее доступности и готовности.
Предоставляет дополнительную функцию Human-in-loop для проверки подсказок перед развертыванием.
LLMOps с Prompt Flow предоставляет возможности как для простых, так и для сложных приложений, основанных на LLM. Он полностью настраивается под нужды приложения.
Каждый вариант использования (набор стандартов потока подсказок и потоков оценки) должен соответствовать структуре папок, как показано здесь:
Кроме того, существует файл experiment.yaml
, который настраивает вариант использования (более подробную информацию см. в описании файла и спецификациях). Существует также файл sample-request.json, содержащий тестовые данные для тестирования конечных точек после развертывания.
Папка .azure-pipelines содержит общие конвейеры Azure DevOps для платформы, и любые изменения в них повлияют на выполнение всех потоков.
Папка «.github» содержит рабочие процессы Github для платформы, а также варианты использования. Это немного отличается от Azure DevOps, поскольку все рабочие процессы Github для выполнения должны находиться в одной папке.
Папка «.jenkins» содержит декларативные конвейеры Jenkins для платформы, а также варианты использования и отдельные задания.
Папка docs содержит документацию с пошаговыми руководствами для Azure DevOps, рабочего процесса Github и конфигурации, связанной с Jenkins.
Папка «llmops» содержит весь код, связанный с выполнением, оценкой и развертыванием потока.
Папка dataops содержит весь код, связанный с развертыванием конвейера данных.
Папка local_execution содержит скрипты Python для локального выполнения как стандартного, так и оценочного потока.
Проект включает в себя 6 примеров, демонстрирующих разные сценарии:
Расположение: ./web_classification. Важность: демонстрирует обобщение содержимого веб-сайта с несколькими вариантами, демонстрируя возможности гибкости и настройки, доступные в шаблоне.
Местоположение: ./named_entity_recognition Важность: демонстрирует извлечение именованных сущностей из текста, что полезно для различных задач обработки естественного языка и извлечения информации.
Расположение: ./math_coding. Важность: демонстрирует возможность выполнять математические вычисления и генерировать фрагменты кода, подчеркивая универсальность шаблона при решении вычислительных задач.
Расположение: ./chat_with_pdf Важность: демонстрирует диалоговый интерфейс для взаимодействия с PDF-документами, используя возможности генерации с расширенным поиском (RAG) для предоставления точных и релевантных ответов.
Расположение: ./function_flows Важность: демонстрирует создание фрагментов кода на основе запросов пользователя, демонстрируя возможности автоматизации задач генерации кода.
Расположение: ./class_flows. Важность: демонстрирует приложение чата, созданное с использованием потоков на основе классов, иллюстрируя структурирование и организацию более сложных диалоговых интерфейсов.
Репо помогает в развертывании в Kubernetes, Kubernetes ARC, Azure Web Apps и управляемых вычислениях AzureML, а также в развертывании A/B для управляемых вычислений AzureML.
Выполнение конвейера состоит из нескольких этапов и заданий на каждом этапе:
Репозиторий генерирует несколько отчетов (показаны примеры экспериментов и показателей):
Чтобы использовать возможности локального исполнения , выполните следующие шаги установки:
git clone https://github.com/microsoft/llmops-promptflow-template.git
aoai
. Добавьте строку aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
с обновленными значениями api_key и api_base. Если в ваших потоках используются дополнительные соединения с разными именами, их следует добавить соответствующим образом. В настоящее время используйте AzureOpenAI в качестве поставщика, если это поддерживается. experiment_name=
connection_name_1={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
connection_name_2={ " api_key " : " " , " api_base " : " " , " api_type " : " azure " , " api_version " : " 2023-03-15-preview " }
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
Перенесите или запишите свои потоки в шаблон на основе документации здесь.
Напишите скрипты Python, аналогичные приведенным примерам, в папке local_execution.
DataOps сочетает в себе аспекты DevOps, гибкие методологии и практики управления данными для оптимизации процесса сбора, обработки и анализа данных. DataOps может помочь дисциплинировать создание наборов данных (обучение, экспериментирование, оценка и т. д.), необходимых для разработки приложений LLM.
Конвейеры данных хранятся отдельно от потоков оперативного проектирования. Конвейеры данных создают наборы данных, и эти наборы данных регистрируются как активы данных в Azure ML для использования потоками. Такой подход помогает независимо масштабировать и устранять неполадки различных частей системы.
Подробную информацию о том, как начать работу с DataOps, можно найти в этом документе — Как настроить DataOps.
Этот проект приветствует вклад и предложения. Большинство вкладов требует от вас согласия с Лицензионным соглашением для авторов (CLA), в котором говорится, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробную информацию можно найти на странице https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на включение, бот CLA автоматически определяет, нужно ли вам предоставить CLA, и соответствующим образом оформляет PR (например, проверку статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз во всех репозиториях, используя наш CLA.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Этот проект может содержать товарные знаки или логотипы проектов, продуктов или услуг. Разрешенное использование товарных знаков и логотипов Microsoft регулируется и должно соответствовать Руководству Microsoft по товарным знакам и брендам. Использование товарных знаков или логотипов Microsoft в измененных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование товарных знаков или логотипов третьих лиц регулируется политикой этих третьих сторон.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Авторские права (c) Корпорация Microsoft. Все права защищены.
Лицензировано по лицензии MIT.