BigBertha — это архитектурный проект, демонстрирующий, как автоматизировать LLMOps (операции с большими языковыми моделями) можно в любом кластере Kubernetes с использованием контейнерных технологий с открытым исходным кодом.
? BigBertha использует Prometheus для мониторинга обслуживающих модулей LLM (большая языковая модель). В демонстрационных целях для обслуживания LLM используется приложение Streamlit, и Prometheus извлекает из него метрики. Оповещения настраиваются для обнаружения снижения производительности.
Prometheus выдает оповещения, когда производительность модели снижается. Эти оповещения управляются AlertManager, который использует события Argo для запуска конвейера переобучения для точной настройки модели.
?️ Процесс переподготовки организуется с помощью Argo Workflows. Этот конвейер можно адаптировать для выполнения переобучения, точной настройки и отслеживания показателей LLM. MLflow используется для регистрации переобученного LLM.
MinIO используется для хранения неструктурированных данных. Argo Events настроен на прослушивание событий загрузки на MinIO, запуская рабочий процесс приема векторов при загрузке новых данных.
? Argo Workflows используется для запуска конвейера приема векторов, который использует LlamaIndex для создания и приема векторов. Эти векторы хранятся в Milvus, который служит базой знаний для генерации с расширенным поиском.
BigBertha опирается на несколько ключевых компонентов:
ArgoCD: собственный инструмент непрерывной доставки Kubernetes, который управляет всеми компонентами стека BigBertha.
Рабочие процессы Argo: собственный механизм рабочих процессов Kubernetes, используемый для запуска конвейеров приема векторов и переобучения моделей.
Argo Events: собственный менеджер зависимостей на основе событий Kubernetes, который соединяет различные приложения и компоненты, запуская рабочие процессы на основе событий.
Prometheus + AlertManager: используется для мониторинга и оповещения, связанных с производительностью модели.
LlamaIndex: платформа для подключения LLM и источников данных, используемая для приема и индексирования данных.
Milvus: собственная векторная база данных Kubernetes для хранения и запроса векторов.
MinIO: объектная система хранения с открытым исходным кодом, используемая для хранения неструктурированных данных.
MLflow: платформа с открытым исходным кодом для управления жизненным циклом машинного обучения, включая отслеживание экспериментов и управление моделями.
Kubernetes: платформа оркестрации контейнеров, которая автоматизирует развертывание, масштабирование и управление контейнерными приложениями.
Контейнеры Docker. Контейнеры Docker используются для упаковки и запуска приложений согласованным и воспроизводимым образом.
В качестве демонстрации BigBertha включает чат-бота на базе Streamlit, который обслуживает квантовую модель чат-бота Llama2 7B. Простое приложение Flask используется для предоставления метрик, а Redis выступает в качестве посредника между процессами Streamlit и Flask.
Этот проект имеет открытый исходный код и регулируется условиями, изложенными в файле ЛИЦЕНЗИИ, включенном в этот репозиторий.