Skip to content

kap40nka/NeftecodeTeamRocket

 
 

Repository files navigation

НЕФТЕКОД 2026 — Team ROCKET

ROCKET

Финальный репозиторий хакатонного решения команды ROCKET.

Состав репозитория

  • inference.ipynb Predict-only ноутбук. Он читает исходные CSV из папки data, сам строит признаки и через зафиксированный checkpoint воспроизводимо формирует финальный predictions.csv.

  • train.py Код обучения модели. Скрипт строит component/scenario-level таблицы из data/ и обучает historical hierarchical model.

  • predict.py Код получения предсказаний. Скрипт строит те же признаки, загружает зафиксированный checkpoint модели и воспроизводимо формирует финальный [predictions.csv].

  • streamlit_app.py Продуктовый интерфейс для загрузки CSV, обучения модели с нуля и дообучения из checkpoint.

  • model/hierarchical_o2_baseline.pt Зафиксированный checkpoint baseline-модели.

  • data Источник входных данных для решения:

    • daimler_component_properties.csv
    • daimler_mixtures_train.csv
    • daimler_mixtures_test.csv
  • predictions.csv Файл, который формируется контейнерным запуском для отправки на платформу.

  • docks Служебные материалы для сдачи:

    • logo.png
  • Dockerfile

  • requirements-docker.txt

  • requirements-dev.txt

  • scripts/local_ci.ps1

  • tests/

  • .dockerignore

  • patent_data Папка с патентными данными и отдельным локальным pipeline для экспериментов с расширенным train:

    • daimler_mixtures_train_patent_attach.csv
    • daimler_component_properties_patent_attach.csv
    • train.py
    • predict.py
    • inference.ipynb
    • README.md

    Что это за папка:

    • отдельные скрипты для локального обучения и предсказания на объединённых data + patent_data.

    Важно: baseline-скрипты в корне проекта эти файлы автоматически не читают.

  • tools/merge_patent_attach_into_data.py Вспомогательный скрипт для локального объединения патент-пакета с исходными CSV в отдельную папку data_with_patents/.

Что делает inference.ipynb

  • читает исходные CSV из data/;
  • строит те же признаки, что и predict.py;
  • загружает checkpoint model/hierarchical_o2_baseline.pt;
  • сохраняет итоговый predictions.csv.

Во время исполнения создается временная папка _notebook_runtime_o2. Это runtime-артефакт.

Код обучения baseline сохранен в train.py.

Структура запуска

Ожидаемая структура проекта:

Neftecode/
├── data/
│   ├── daimler_component_properties.csv
│   ├── daimler_mixtures_train.csv
│   └── daimler_mixtures_test.csv
├── docks/
│   └── logo.png
├── inference.ipynb
├── patent_data/
│   ├── daimler_component_properties_patent_attach.csv
│   ├── daimler_mixtures_train_patent_attach.csv
│   ├── inference.ipynb
│   ├── predict.py
│   ├── train.py
│   └── README.md
├── train.py
├── predict.py
├── src/
├── model/
│   └── hierarchical_o2_baseline.pt
├── predictions.csv
├── Dockerfile
└── requirements-docker.txt

Запуск локально

Нужны пакеты:

  • numpy
  • pandas
  • scikit-learn
  • torch

В Docker используется CPU-only сборка PyTorch.

Обучение модели:

python train.py

Скрипт обучит модель с нуля и сохранит:

  • model/trained_model.pt
  • prediction_fresh_retrain.csv

Параметры эксперимента можно менять через CLI:

python train.py --epochs 50 --batch-size 8 --seed 42

Дообучение из существующего checkpoint:

python train.py --epochs 30 --init-checkpoint model/hierarchical_o2_baseline.pt

Запуск Streamlit-интерфейса:

pip install -r requirements-dev.txt
streamlit run streamlit_app.py

В интерфейсе можно:

  • использовать CSV из папки data/ или загрузить свои train, test и component_properties;
  • обучить модель с нуля;
  • дообучить модель из baseline checkpoint или загруженного .pt;
  • скачать checkpoint, validation predictions и test predictions после запуска.

Логирование эксперимента в MLflow:

python train.py --epochs 20 --enable-mlflow --mlflow-tracking-uri sqlite:///mlflow.db

Локальная CI-проверка:

pip install -r requirements-dev.txt
powershell -ExecutionPolicy Bypass -File scripts/local_ci.ps1

CI-скрипт запускает unit-тесты, python predict.py и smoke-test обучения на 1 эпоху.

Получение финальных предсказаний через зафиксированный checkpoint:

python predict.py

Результат:

  • в корне проекта будет создан или обновлен predictions.csv

Для патентного контура есть отдельный самостоятельный predict-only ноутбук:

jupyter notebook patent_data/inference.ipynb

Запуск через Docker

Сборка образа:

docker build -t neftecode-o2 .

Запуск в PowerShell:

docker run --rm -v ${PWD}:/app neftecode-o2

Запуск в cmd:

docker run --rm -v %cd%:/app neftecode-o2

Контейнер:

  • ставит зависимости из requirements-docker.txt;
  • запускает predict.py;
  • воспроизводимо записывает predictions.csv в корень проекта.

About

Модель предсказания результатов окислительного теста Даймлера

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 90.2%
  • Jupyter Notebook 8.9%
  • Other 0.9%