Hack_Change_2025 — ML & Visualization Pipeline
| | | | __ _ | | () ___ | | () _ _
| || |/ |/ __| |/ / |/ _ \/ _ | |/ / | ' \ / _ \ '|
| _ | (| | (__| <| | __/ (| | <| | | | | / |
| || |/ |/ __| |/ / |/ _ \/ ___
|___/
Автор ветки: Boris Cherkasov
Контакт: boris.cherkasov@example.com
📌 О проекте
Проект представляет собой полный пайплайн для анализа текстов, визуализации данных и классификации тональности.
Он включает:
- модуль с генерацией PNG-графиков;
- ML-пайплайн со всеми компонентами современного обучения (K-Fold, ensembles, stacking, pseudo-labeling);
- API для визуализации и инференса;
- фронтенд (HTML/JS) для просмотра графиков и работы с моделью.
Решение полностью подготовлено для развёртывания на бесплатных облаках и дальнейшего промышленного использования.
🗂 Структура репозитория
project/
│
├── train_pipeline.py # основной ML-пайплайн
├── stacker.py # stacking (meta-модель)
├── pseudo_label.py # pseudo-labeling
│
├── visualize/
│ ├── scripts/ # генерация графиков EDA
│ └── api/
│ └── main.py # FastAPI backend
│
├── eda_output/ # PNG графики
├── rubert_out_kfold/ # K-Fold результаты
├── rubert_out_pseudo/ # pseudo-label результаты
├── index.html # фронтенд-дэшборд
└── requirements.txt
⚙ ️ Подготовка окружения
Локально
python -m venv .venv
source .venv/bin/activate # Linux / MacOS
.venv\Scripts\activate # Windows
pip install --upgrade pip
pip install -r requirements.txt
Kaggle
- Включить Internet (Settings -> ON)
- Установить зависимости
pip install -q transformers datasets evaluate scikit-learn sentencepiece pymorphy3
pip install protobuf==3.20.1
- Перезапустить ядро
🚀 Запуск пайплайна
python train_pipeline.py \
--train_csv /kaggle/input/.../train.csv \
--test_csv /kaggle/input/.../test.csv \
--output_dir rubert_out_smoke \
--epochs 1 \
--batch_size 8
K-Fold прогон
python train_pipeline.py \
--train_csv /kaggle/input/.../train.csv \
--test_csv /kaggle/input/.../test.csv \
--output_dir rubert_out_kfold \
--model_name DeepPavlov/rubert-base-cased-sentiment \
--epochs 3 \
--batch_size 8 \
--kfold 5 \
--n_splits 5 \
--save_metrics True
Stacking
python stacker.py \
--oof_path rubert_out_kfold/oof_predictions.csv \
--test_path rubert_out_kfold/test_predictions_ensemble.csv \
--output_dir rubert_out_kfold/stacker_out
Pseudo-labeling
Создаем новый train
python pseudo_label.py \
--train_csv /kaggle/input/.../train.csv \
--predictions_csv rubert_out_kfold/stacker_out/stacked_predictions.csv \
--threshold 0.95 \
--output_dir pseudo_out \
--retrain False
+ дообучение
python pseudo_label.py \
--train_csv /kaggle/input/.../train.csv \
--predictions_csv rubert_out_kfold/stacker_out/stacked_predictions.csv \
--threshold 0.95 \
--output_dir pseudo_out \
--retrain True \
--retrain_output_dir rubert_out_pseudo \
--retrain_epochs 5 \
--kfold 5
🧪 Примеры использования
- Через REST API
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"text":"Мне понравилась работа сервиса"}'
Ответ:
{"label":1, "confidence":0.94}
- Построение графика
curl http://localhost:8000/plot/distribution
Вернет изображение
🪩 FastAPI приложение
Запуск сервера
uvicorn visualize.api.main:app --host 0.0.0.0 --port 8000 --reload
Открыть фронтенд:
open index.html
Функции:
- генерация весх графиков;
- быстрый EDA;
- тестирование ML модели;
- кнопка очистки экрана
📊 Что создаёт pipeline
В output_dir формируются:
- oof_predictions.csv
- test_predictions_ensemble.csv
- stacker_out/stacked_predictions.csv
- predictions.csv
- metrics.json
- модели по фолдам: fold_*/pytorch_model.bin
- токенизатор: tokenizer.json, vocab.txt, tokenizer_config.json, * special_tokens_map.json
- Эти файлы подходят для деплоя модели в продакшен.
🧠 ML Архитектура
Используем:
- ruBERT (Tiny / Base)
- Weighted CrossEntropy
- Focal Loss
- Stratified K-Fold
- Soft Voting Ensemble
- Meta Stacking (TF-IDF + LogisticRegression)
- Pseudo-labeling (автоматическое самообучение)
- Gradient Accumulation
- Апсемплинг (опционально)
- Обученная модель стабильно даёт высокие значения F1-макро благодаря ансамблевым техникам.
🧩 Поддержка
По вопросам запуска, багам или расширению функционала:
- Email: boris.cherkasov@example.com
- Issue Tracker: используйте раздел Issues в репозитории
- Telegram: @bor1s_cherkas0v
🗺 Дорожная карта
- Краткосрочные задачи
- Hyperparameter tuning (Optuna)
- Продвинутая визуализация в UI
- Docker-контейнеры для деплоя
- Среднесрочные задачи
- Мульти-язычный сентимент-анализ
- Автоматическая проверка токсичности
- Интеграция аналитики через Grafana
- Долгосрочные задачи
- Полный MLOps: CI/CD + автоматический деплой
- Интеграция с MLflow
- Расширение на topic modeling
🤝 Внести свой вклад
Сделайте форк Создайте ветку:
git checkout -b feature/new-feature
Внесите изменения Запустите форматирование:
black .
flake8 .
Откройте Pull Request
🙏 Авторы и благодарности
Boris Cherkasov — разработка, ML, архитектура проекта Команда организаторов Hack&Change 2025
Open-source сообщество: Transformers, Datasets, Torch, Scikit-learn
📜 Лицензия
Проект распространяется под лицензией MIT.
📌 Статус проекта
Готово к демонстрации • Поддерживается • Принимает Pull Requests
Проект активно развивается — любые предложения приветствуются!