Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Changelog

## [Unreleased]
### Fixed
- **TabICL compiled new graphs inside requests** (#47): call shapes warmup didn't cover -- tables of ~20k+ rows (differently strided inputs), 1,024+-row regression predicts, and variants that overlapping calls on one worker produce -- each compiled 1-7 graphs inside the request that hit them, 5-25 s on an A100 and ~4x that on prod's A40s, holding the device so other models' calls waited too. On prod, a 5,000 x 500 TabICL fit compiled 3 graphs on every call (25.8 s, `timings_ms` from 0.14.0). Once every backend in a process has warmed up (`serve/factory.finish_warmup`: after all devices of an in-process engine, or a worker process's one), a call no compiled graph fits now runs eagerly instead (`torch.compiler.set_stance("eager_on_recompile")`, process-wide, only where compiled blocks were installed). On an A100: a first 20,000 x 100 fit 12.5 s -> 3.0 s, a first 1,000-row regression predict 1.8 s -> 0.14 s; eager costs ~30% on those families once a compile would have been paid (20,000 x 100 2.3 s compiled vs 2.9 s eager). `TABCTX_COMPILE_AFTER_WARMUP=1` restores compiling them.
### Added
- `prod_bench.py --log-calls` saves every call with its `timings_ms`, for timelines of where stalls go.

## [0.14.0] - 2026-10-21
### Added
Expand Down
Loading
Loading