export_onnx

Экспорт CatBoost-ансамбля в ONNX + INT8 квантизация + замер latency.

Технический нюанс: CatBoost ONNX-экспорт не поддерживает категориальные фичи (route у нас категориальная). Поэтому онлайн-контур на ONNX использует noroute-версию модели (без фичи route) — на нашем сплите она MAE ~48 (vs 40 у полной), но зато экспортируется в ONNX + квантуется в INT8. Основной submission-путь остаётся на native CatBoost.

Что делает скрипт:
  1. Если нет catboost_noroute_seed*.cbm — обучает их из кэша фичей (те же гиперы, без route).

  2. Экспортирует каждый seed в ONNX (fp32) и INT8.

  3. Замеряет per-sample latency: catboost native vs onnx fp32 vs onnx int8.

  4. Пишет bench_latency.json в артефакты.

Запуск:

python ml/src/export_onnx.py --artifacts ml/artifacts

Functions

bench(art[, n_calls])

ensure_noroute_models(art)

Гарантирует существование noroute-моделей.

export_onnx(cbm_paths)

Каждый CBM → ONNX (fp32) + ONNX (INT8).

main()

export_onnx.bench(art: Path, n_calls: int = 200) → dict[исходный код]
export_onnx.ensure_noroute_models(art: Path) → list[Path][исходный код]

Гарантирует существование noroute-моделей. Обучает их из cache_features.pkl если нужно.

export_onnx.export_onnx(cbm_paths: list[Path]) → tuple[list[Path], list[Path]][исходный код]

Каждый CBM → ONNX (fp32) + ONNX (INT8). Возвращает (fp32_paths, int8_paths).

export_onnx.main() → None[исходный код]