Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Мониторинг ML-модели: Prometheus + Grafana, дообучение на потоке, дрейф признаков (PSI), алерты. FastAPI, scikit-learn, Docker Compose
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Живой дашборд Grafana: model-monitoring.185.79.138.118.nip.io — модель работает на сервере, поток идёт непрерывно, вход не нужен. Запись полного прогона по всему датасету: bestmark1.github.io/model-monitoring. Деплой: docs/deployment.md. Модель предсказывает, вырастет ли цена на электроэнергию относительно среднего за сутки, получает поток запросов, после каждого прогноза узнаёт истинный ответ и регулярно дообучается. Prometheus собирает метрики качества, дообучения, дрейфа данных и самого сервиса, Grafana показывает их на дашборде.檢視完整 README ↗
Живой дашборд Grafana: model-monitoring.185.79.138.118.nip.io — модель работает на сервере, поток идёт непрерывно, вход не нужен. Запись полного прогона по всему датасету: bestmark1.github.io/model-monitoring. Деплой: docs/deployment.md.
Модель предсказывает, вырастет ли цена на электроэнергию относительно среднего за сутки, получает поток запросов, после каждого прогноза узнаёт истинный ответ и регулярно дообучается. Prometheus собирает метрики качества, дообучения, дрейфа данных и самого сервиса, Grafana показывает их на дашборде.
Прогон по всему потоку: 40 312 примеров (май 1996 — декабрь 1998), дообучение каждые 1000 размеченных примеров.
| Модель | Accuracy по потоку |
|---|---|
| Дообучаемая (live) | 74,8% |
| Первая версия без дообучения (frozen) | 70,1% |
| Всегда угадывать частый класс | 57,1% |
Дообучение дало +4,7 п.п. Главная причина видна на панели дрейфа: в обучающих данных признаки рынка Виктории (vicprice, vicdemand, transfer) были константой, а в потоке появились реальные значения. Замороженная модель этого изменения не замечает, дообучаемая подстраивается.
| Критерий задания | Где |
|---|---|
| Создана модель | SGDClassifier (логистическая регрессия) + StandardScaler, app/model.py |
| Метрики модели передаются в Prometheus | эндпоинт /metrics (prometheus_client), скрапинг каждые 5 с, prometheus/prometheus.yml |
| На дашборде отображены метрики модели | 18 панелей, источник данных и дашборд подключаются автоматически (provisioning), grafana/ |
| Модель можно дообучать | partial_fit на накопленных размеченных примерах: автоматически каждые RETRAIN_EVERY примеров или вручную POST /retrain; каждая версия сохраняется (model_v{N}.joblib) |
Сверх задания:
promtool в CI.simulator ──POST /predict──▶ model (FastAPI) ◀──scrape /metrics── Prometheus ◀── Grafana
──POST /feedback─▶ ├─ live-модель: дообучается каждые 1000 ответов
├─ frozen v1: контрольная, не меняется
└─ PSI признаков, окно качества, версии модели
simulator проигрывает датасет в хронологическом порядке: отправляет признаки в /predict, затем истинный ответ в /feedback (на реальном рынке ответ известен через полчаса).partial_fit), версия увеличивается, чекпоинт сохраняется в том models.| Метрика | Тип | Что показывает |
|---|---|---|
model_accuracy, model_f1, model_logloss {model="live"|"frozen"} | gauge | качество на последних 500 размеченных примерах |
model_errors_total, model_labels_total | counter | ошибки и размеченные примеры (из них — доля ошибок за любой интервал) |
model_predictions_total{predicted_class}, model_prediction_probability | counter, histogram | распределение прогнозов: сигнал, доступный до прихода ответов |
model_version, model_retrains_total{trigger}, model_retrain_duration_seconds, model_trained_samples, model_retrain_buffer_size | gauge, counter, histogram | жизненный цикл дообучения |
model_feature_psi{feature} | gauge | дрейф каждого признака |
model_requests_total{endpoint}, model_prediction_latency_seconds | counter, histogram | нагрузка и задержка сервиса |
Electricity (Elec2) — Harries, M. (1999), Splice-2 comparative evaluation: Electricity pricing. 45 312 получасовых записей рынка Нового Южного Уэльса (Австралия), май 1996 — декабрь 1998. Целевая переменная — выросла ли цена (UP/DOWN) относительно среднего за 24 часа. Классический датасет для моделей на потоке со сдвигом распределения. Первые 5000 записей идут на первичное обучение, остальные 40 312 — поток. Датасет скачивается при сборке Docker-образа, в репозитории не хранится.
Нужен Docker.
git clone https://github.com/bestmark1/model-monitoring.git
cd model-monitoring
docker compose up -d --build
| Сервис | Адрес |
|---|---|
| Grafana (дашборд открывается сразу, вход не нужен) | http://localhost:3000 |
| Prometheus | http://localhost:9090 |
| Модель: Swagger | http://localhost:8000/docs |
| Модель: метрики | http://localhost:8000/metrics |
Первая точка на графиках качества появится через несколько секунд, первое дообучение — меньше чем через минуту.
Параметры (переменные окружения при docker compose up):
| Переменная | По умолчанию | Смысл |
|---|---|---|
RATE | 20 | запросов в секунду от симулятора |
RETRAIN_EVERY | 1000 | дообучать после N размеченных примеров; 0 — только вручную |
WINDOW | 500 | размер окна для метрик качества |
LIMIT | 0 | остановить симулятор после N примеров; 0 — крутить поток по кругу |
GRAFANA_ADMIN_PASSWORD | admin | пароль администратора Grafana |
Ручное дообучение и проверка прогноза:
curl -X POST localhost:8000/retrain
curl -s localhost:8000/model
Обновить демо-страницу после своего прогона: python scripts/export_snapshot.py --minutes 15.
python -m venv .venv && source .venv/bin/activate
pip install -r requirements-dev.txt
ruff check . && pytest -q
python scripts/build_dashboard.py # дашборд описан кодом; JSON генерируется
/feedback; на этом датасете оно занимает миллисекунды, для тяжёлой модели его нужно вынести в фоновую задачу.ModelWorseThanFrozen.Python · scikit-learn · FastAPI · prometheus_client · Prometheus · Grafana · Docker Compose · pytest · Ruff · GitHub Actions