export_onnx
Экспорт CatBoost-ансамбля в ONNX + INT8 квантизация + замер latency.
Технический нюанс: CatBoost ONNX-экспорт не поддерживает категориальные фичи (route у нас категориальная). Поэтому онлайн-контур на ONNX использует noroute-версию модели (без фичи route) — на нашем сплите она MAE ~48 (vs 40 у полной), но зато экспортируется в ONNX + квантуется в INT8. Основной submission-путь остаётся на native CatBoost.
- Что делает скрипт:
Если нет catboost_noroute_seed*.cbm — обучает их из кэша фичей (те же гиперы, без route).
Экспортирует каждый seed в ONNX (fp32) и INT8.
Замеряет per-sample latency: catboost native vs onnx fp32 vs onnx int8.
Пишет bench_latency.json в артефакты.
Запуск:
python ml/src/export_onnx.py --artifacts ml/artifacts
Functions
|
|
Гарантирует существование noroute-моделей. |
|
|
Каждый CBM → ONNX (fp32) + ONNX (INT8). |
|
- 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[исходный код]