Начало работы с LLMOps: создание более качественных AI-приложений
Появление OpenAI ChatGPT вызвало волну интереса к большим языковым моделям (LLMs) среди корпораций. Крупные технологические компании и исследовательские организации теперь делают LLM более доступными, стремясь улучшить инфраструктуру данных, тонко настраивать модели для специализированных приложений и отслеживать такие проблемы, как галлюцинации и предвзятость. Этот растущий интерес также привел к резкому увеличению спроса на поставщиков технологий, поддерживающих операции с большими языковыми моделями (LLMOps). Эти поставщики предоставляют комплексные рабочие процессы для разработки, тонкой настройки и развертывания LLM в производственных средах.
На нашей недавней встрече Unstructured Data Meetup Sage Elliott, инженер по машинному обучению в Union.ai, обсудил развертывание и управление LLM, предложив ценные сведения об инструментах, стратегиях и лучших практиках, необходимых для интеграции этих моделей в бизнес-приложения. Его презентация была особенно полезна для разработчиков ИИ и менеджеров по эксплуатации, уделяя особое внимание обеспечению надежности и масштабируемости LLM-приложений в производственных средах.
В этом посте мы подведем итоги ключевых выводов из выступления Sage и обсудим концепцию и методологии LLMOps.
<< Посмотрите запись выступления Sage Elliott >>
Что такое LLMOps?
LLMOps означает Large Language Model Operations — операции с большими языковыми моделями, аналогичные MLOps, но специально для больших языковых моделей (LLM). Чтобы понять LLMOps, давайте сначала разберем MLOps.
MLOps (Machine Learning Operations) относится к практикам и инструментам, используемым для эффективного развертывания и сопровождения моделей машинного обучения в производственных средах. Это расширение DevOps (Development and Operations), которое объединяет разработку приложений и эксплуатацию в единый процесс. Такой подход гарантирует, что разработка и эксплуатация рассматриваются совместно, а не функционируют в отдельных изолированных подразделениях.
Что такое MLOps?
Что такое MLOps? Источник изображения: https://ml-ops.org/content/MLOps-principles
До появления методологии DevOps команды разработки сосредотачивались на написании приложений или обновлений как можно быстрее, тогда как команды эксплуатации отдавали приоритет стабильности, эффективности и пользовательскому опыту приложения. Такой разделенный подход часто приводил к неэффективности, создавая неоптимальные приложения с медленной разработкой и редкими обновлениями.
DevOps преобразует этот процесс, стимулируя сотрудничество между командами разработки и эксплуатации, обеспечивая более упорядоченный и эффективный рабочий процесс. MLOps распространяет эти принципы на машинное обучение, решая проблемы развертывания и сопровождения ML-моделей.
LLMOps фокусируется на целостном подходе MLOps, применяя его принципы к приложениям больших языковых моделей (LLM). Он охватывает все аспекты разработки, развертывания, сопровождения и непрерывного улучшения LLM-приложений.
Центральная философия сотрудничества также присуща определению LLMOps, данному Sage, — «создание ИИ вместе», что подчеркивает идею о том, что все соответствующие бизнес-подразделения, например разработка, эксплуатация, управление продуктом и т. д., должны работать вместе, чтобы своевременно и экономически эффективно создавать наиболее производительные LLM-приложения.
Непрерывная интеграция и непрерывная доставка/развертывание (CI/CD)
Как и в DevOps, одним из ключевых принципов LLMOps является непрерывная интеграция/непрерывное развертывание (CI/CD): процесс автоматизации жизненного цикла разработки LLM-приложений.
Непрерывная интеграция (CI) — это практика автоматического принятия обновлений приложения и их слияния с основной веткой, т. е. с версией LLM-приложения, которая в данный момент работает в production. Когда разработчик отправляет код в репозиторий, например GitHub, это действие запускает автоматизированный рабочий процесс, который проверяет, готовы ли обновления к интеграции. CI поощряет частые изменения со стороны команд разработки и помогает избегать конфликтов при слиянии кода.
Непрерывная доставка/развертывание (CD) относится к процессу автоматического развертывания изменений в приложении в production-среде после интеграции и проверки. Этот процесс включает дополнительные тесты, такие как функциональное и пользовательское приемочное тестирование, а также настройку инфраструктуры.
Хотя непрерывная доставка и развертывание часто используются как взаимозаменяемые понятия, между ними есть различие. Непрерывная доставка останавливается до автоматического развертывания в production, обычно для финальных проверок человеком, чтобы обеспечить соответствие организационным и нормативным требованиям. Напротив, непрерывное развертывание автоматически выпускает обновления приложения для пользователей. С учетом этой концепции настоящее непрерывное развертывание встречается редко — особенно в разработке LLM-приложений, которая все еще находится на ранней стадии.
Кто должен использовать LLMOps?
Кратко говоря, любой, кто разрабатывает LLM-приложение, должен в той или иной степени использовать LLMOps.
С одной стороны, LLMOps необходим для AI-приложений production-уровня, при этом конкретная инфраструктура зависит от потребностей приложения. В то же время даже простой личный AI-проект выиграет от внедрения простого LLMOps-конвейера.
Интеграция LLMOps в ваше AI-приложение дает следующие преимущества:
Управление ресурсами и масштабируемость: понимание использования вычислительных ресурсов для обеспечения оптимального пользовательского опыта. Для эффективной работы LLM требуется большой объем памяти, поэтому способность определить, достаточно ли вашего аппаратного обеспечения, т. е. GPU, для потребностей вашего приложения, имеет решающее значение.
Обновление и улучшение модели: способность быстрее выявлять сбои или недостатки модели и соответствующим образом обновлять ее.
Этичные и ответственные практики AI: осознание предполагаемой цели вашего AI-приложения и потенциальных последствий его неправильной работы. Одна из главных проблем LLM — их склонность к «галлюцинациям», т. е. к выдаче неточного или нерелевантного результата; эта проблема может оказаться катастрофической, например, в приложении для предоставления медицинских рекомендаций.
Пример упрощенного LLMOps-конвейера
Карта рынка, созданная CBInsights, выделяет 90+ компаний в 12 категориях, которые помогают предприятиям управлять LLM-проектами от начала до конца. Этот ландшафт также показывает размер рынка LLMOps.
Ландшафт рынка LLMOps
Ландшафт рынка LLMOps: 90+ компаний в 12 различных категориях, помогающих предприятиям доводить LLM-проекты от начала до конца.
Чтобы упростить понимание, Sage создала упрощенный LLMOps-конвейер.
Упрощенный LLMOps-конвейер
Объясним элементы этой диаграммы:
Sys Prompt: Пользовательский ввод становится частью системного промпта и передается в LLM.
Model: LLM лежит в основе приложения для генерации ответов.
Guardrail: Контрольные механизмы, которые вы внедрили, чтобы пользователь вводил только допустимые данные, т. е. не пытался заставить модель генерировать вредоносный или оскорбительный контент.
Хранилище данных: Векторные базы данных, такие как Milvus и Zilliz Cloud (управляемый Milvus). Эти базы данных предоставляют LLM долговременную память и контекстную информацию для запросов, а также помогают LLM генерировать более точные результаты. Этот компонент особенно полезен в приложениях Retrieval Augmented Generation (RAG).
Мониторинг: Инструменты, используемые для непрерывного мониторинга LLM-приложения
CI/CD-оркестратор: Платформа, которая управляет вашим приложением и помогает автоматизировать его интеграцию и развертывание в производственных средах.
Начало работы с LLMOps
Хотя LLMOps быстро меняется, а поставщики ежедневно выпускают новые инструменты LLMOps, к счастью, основные принципы LLMOps остаются прежними.
Вот простая трехэтапная философия для начала работы с LLMOps.
Выпустите модель
Отслеживайте производительность модели
Улучшайте модель
Давайте рассмотрим каждый шаг подробнее.
Выпустите свою модель
Выпуск модели означает развертывание вашего LLM-приложения в производственной среде как можно скорее. Этот подход важен, поскольку позволяет получать точные данные от пользователей, взаимодействующих с моделью, и быстро понять, как адаптировать ваше LLM-приложение к потребностям пользователя. Яркий пример — приложение-чатбот, где гораздо полезнее получить примеры реального пользовательского ввода и того, что модель выдает в ответ, чем просто прогнозировать ввод в тестовой среде.
HuggingFace Spaces — это отличный ресурс, который упрощает выпуск вашей модели в production. Это хостинговая платформа для большинства ML-приложений, предоставляющая недорогие облачные GPU для работы LLM, что делает ее идеальной для прототипирования. Вы также можете развернуть свое приложение в приватном пространстве, предоставив ограниченный доступ тем, кому вы хотите дать протестировать свое LLM-приложение, или сделать его публичным, чтобы получить обратную связь от большого и активного сообщества HuggingFace.
HuggingFace Spaces
HuggingFace Spaces
HuggingFace предлагает не только Spaces для развертывания моделей; он предоставляет комплексную экосистему для разработки и развертывания приложений. В центре их предложений — обширная коллекция из более чем 640 000 open-source ML-моделей, включая модели речи, компьютерного зрения и языковые модели. Кроме того, HuggingFace предоставляет несколько библиотек, которые включают все необходимые компоненты для создания end-to-end LLM-приложений, а также наборы данных, необходимые для обучения.
Чтобы показать, как можно создавать LLM-приложения с помощью HuggingFace, давайте рассмотрим, как загрузить и обучить модель, используя его библиотеки Transformer (для доступа к LLM) и Datasets (для доступа к обучающим данным).
Сначала необходимо установить соответствующие библиотеки:
pip install torch transformers datasets
Далее мы загрузим LLM, которую хотим использовать в нашем приложении. Как указано выше, HuggingFace содержит сотни тысяч моделей, каждая из которых предоставляет необходимый код для интеграции в ваше приложение. Например, мы загрузим модель Llama 3 следующим образом:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct”)
Далее нам нужно загрузить набор данных для дообучения модели. В этом примере мы используем один из множества доступных наборов данных HuggingFace. Однако если вы предпочитаете использовать собственные данные для предметно-специфической или задаче-специфической цели, вам просто нужно заменить путь к файлу на тот, который указывает на папку с вашими обучающими данными.
from datasets import load_dataset
dataset = load_dataset("talkmap/telecom-conversation-corpus")
После загрузки набора данных нам нужно токенизировать его, преобразовав в субсловные токены, которые LLM может легко обработать. Мы должны использовать токенизатор, связанный с моделью Llama 3, чтобы гарантировать, что данные токенизируются согласованно с процессом предварительного обучения и сохраняют те же соответствия токенов индексам, или «словарь». Вы можете выполнить этот шаг всего несколькими строками кода.
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct")
# Define tokenizer function
def tokenize_function(examples):
return tokenizer(examples["text"], padding="True", truncation=True)
tokenized_dataset = dataset.map(tokenize_function, batched=True)
Теперь нам нужно задать конфигурации гиперпараметров для дообучения нашей модели с помощью объекта TrainingArguments. Эта конфигурация предлагает 109 необязательных параметров, давая вам детальный контроль над процессом обучения. Если хотите, вы можете положиться на настройки по умолчанию, не передавая никаких конкретных параметров.
from transformers import TrainingArguments
training_args = TrainingArguments()
Наконец, после определения элементов нашей модели нам нужно лишь поместить их внутрь обучающего объекта и вызвать соответствующую функцию обучения следующим образом:
После настройки элементов нашего объекта trainer остается только собрать все вместе и вызвать функцию train, чтобы дообучить нашу базовую модель Llama 3.
from transformers import Trainer
trainer = Trainer(
model=model,
dataset=dataset,
args=training_args,
)
trainer.train()
Вот и всё: всего несколькими строками кода вы можете скачать и обучить языковую модель, которую можно использовать для обеспечения работы LLM-приложения.
Более конкретный и подробный пример того, как HuggingFace упрощает разработку LLM-приложений, см. в нашем руководстве по созданию QA-приложения с Milvus
Непрерывный мониторинг и оценка
После развертывания вашего LLM-приложения в производственной среде важно отслеживать ваше приложение по следующим причинам:
Чтобы определить, как ваша модель работает в production, выполняет ли она свой предполагаемый сценарий использования? Соответствует ли она ожиданиям пользователя?
Как можно улучшить модель?
Впоследствии, когда вы вносите улучшения в модель, приводят ли они к ожидаемому повышению производительности, или требуются дальнейшие изменения?
Вычислительные ресурсы, которые потребляет ваша модель: нужно ли выделить больше ресурсов, например GPUs, чтобы ваше приложение работало лучше? Кроме того, с учетом ресурсов, которые оно потребляет, насколько масштабируемо ваше приложение?
Как оно работает после изменений, например дополнительного обучения, дообучения?
Метрики оценки помогают измерить способность вашей модели выдавать правильный результат в ответ на запрос пользователя. Наиболее часто используемые метрики включают BLEU, ROUGE и BERTScore, которые описаны ниже.
| Метрика | Назначение |
| BLEU (Bilingual Evaluation Understudy) | Часто используется в машинном переводе, измеряет сходство между текстом, сгенерированным моделью, и эталонным текстом на основе совпадения n-грамм (n последовательных слов) |
| ROUGE (Recall-Oriented Understudy for Gisting Evaluation) | Оценивает качество сводок, сгенерированных моделью, сравнивая совпадение n-грамм, последовательностей слов и пар слов с эталонными сводками. |
| BERTScore (Bidirectional Encoder Representations from Transformers) Score | Измеряет текстовое сходство, используя эмбеддинги BERT для захвата семантического значения; предоставляет более подробную оценку, чем поверхностное совпадение n-грамм, как в BLEU и ROUGE. |
Кроме того, существуют и другие качественные способы оценить производительность вашего LLM-приложения.
Оценка точности и релевантности вывода: ответ может быть хорошо составлен, но насколько он полезен в отношении входного запроса? Предоставляет ли он ценность, которую ожидает пользователь?
Определение того, как пользователи используют ваше LLM-приложение и нужно ли вам соответствующим образом донастроить его.
Оценка тональности ответов: отвечает ли приложение в желаемом тоне?
Есть ли какие-либо попытки джейлбрейка, т. е. попытки заставить модель выдать результат, который она не должна выдавать? Например, вопрос чат-боту о том, как изготовить самодельное оружие. Этот подход определяет, следует ли вам включить защитные механизмы в ваше приложение или улучшить те, которые вы, возможно, уже внедрили.
Непрерывный мониторинг ваших LLM-приложений несложен. На рынке доступно множество инструментов для оценки ваших приложений на базе LLM, включая LangKit, как Sage отметил в своем выступлении, Ragas, Continuous Eval, TruLens-Eval, LlamaIndex, Phoenix, DeepEval, LangSmith и OpenAI Evals.
Чтобы узнать больше об оценке LLM-приложений, ознакомьтесь с нашей статьей об оценке RAG.
Улучшение вашей модели
Используя метрики и обратную связь от мониторинга вашей модели, вы можете создавать новые итерации своих LLM за гораздо меньшее время. Мощный и эффективный способ внедрения улучшений — интегрировать MLOps-оркестратор, такой как Flyte, в ваш pipeline. MLOps-оркестратор упрощает управление вашим LLM-приложением следующими способами:
Автоматизированное тестирование: автоматический запуск тестов при внесении изменений.
Сборки программного обеспечения: компиляция кода и подготовка его к развертыванию.
Развертывание: перенос последней версии приложения в production.
Мониторинг и отчетность: отслеживание статуса сборок, тестов и развертываний и предоставление обратной связи.
Оркестратор управляет вашим приложением с помощью workflows, которые представляют собой серию шагов, необходимых для выполнения конкретной задачи или достижения цели. Каждый шаг в workflow может быть выполнен, протестирован и проверен отдельно, в то время как оркестратор управляет последовательностью выполнения каждой задачи. Примеры workflows включают обучение или fine-tuning LLM, развертывание приложения в среде или интеграцию новых функций в приложение, работающее в production.
Workflows упрощают разработку и поддержку LLM-приложений несколькими способами. Во-первых, workflows воспроизводимы, поэтому существующий workflow можно копировать между различными pipelines, экономя значительное время и усилия. Аналогично, workflows можно версионировать, что позволяет откатить pipeline к тому состоянию, в котором он был в определенный момент времени.
На практике MLOps-оркестратор лучше всего подходит для LLM-приложений корпоративного уровня, разрабатываемых несколькими людьми или командами, и, вероятно, будет избыточным для небольшого приложения. Вместо оркестратора более практичным подходом будет вывести вашу модель в production, отслеживать ее использование и вручную обновлять приложение в соответствии с полученными вами инсайтами.
Резюме
Итак, подведем итоги выступления Сейджа Эллиота о LLMOps:
LLMOps — это набор философий и технологий, которые способствуют эффективной разработке, развертыванию, поддержке и улучшению LLM-приложений.
LLMOps также можно определить как "Building AI Together", что означает, что, как и в DevOps (от которого оно произошло), разные команды внутри организации сотрудничают для создания LLM-приложений, вместо того чтобы работать изолированно с противоположными целями.
Несмотря на кажущуюся сложность, начать работу с LLMOps можно с трехэтапного процесса:
Ship: разверните модель в production как можно скорее, чтобы получить обратную связь от реальных пользователей
Monitor: используйте метрики для оценки ее производительности
Improve: используйте инсайты, полученные в ходе мониторинга, чтобы улучшить ваше приложение.
HuggingFace — отличный ресурс для быстрого развертывания прототипов в production. Библиотека Transformer позволяет легко скачивать и fine-tune модели, библиотека Datasets предоставляет данные для fine-tuning, а Spaces предоставляет хостинговую платформу для быстрого развертывания в production.
Flyte — пример MLOps-оркестратора, который упрощает управление вашим LLM-приложением.
Дополнительные ресурсы
Мы рекомендуем вам изучить ресурсы ниже, чтобы углубить понимание LLMOps и узнать, как применять его в процессе разработки вашего AI-приложения.
Чтобы узнать больше о векторных базах данных, больших языковых моделях (LLM) и других ключевых концепциях AI и машинного обучения, посетите базу знаний Zilliz Learn .
Читать далее

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

DeepSeek-OCR Explained: Optical Compression for Scalable Long-Context and RAG Systems
Discover how DeepSeek-OCR uses visual tokens and Contexts Optical Compression to boost long-context LLM efficiency and reshape RAG performance.

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.


