Rethinking Tabular Foundation Models On Data Streams
Organizations: AI Institute, University of Waikato, New Zealand · LIP6, CNRS, Sorbonne Universit´e, France · GECAD, Polytechnic of Porto, Portugal
Abstract
Tabular foundation models (TFMs) outperform established machine learning models on tabular benchmarks through in-context learning. Building on this success, interest is growing in applying them to data streams, where data arrive continuously and evolve over time. On a stream, a TFM adapts by updating its context rather than its parameters, so its accuracy and cost depend on which examples it keeps and how often it rebuilds its context. We therefore present a systematic study of TFMs on data streams, covering memory management, computational cost, and stream-specific challenges such as concept drift and delayed labels. We find that TFMs achieve the highest predictive performance and that simply retaining the most recent examples is as effective as existing memory management techniques. They also recover faster than streaming learners after drift and keep the highest accuracy under label delay. This accuracy, however, comes at a high serving cost, since a nearly unchanged context is re-encoded at every prediction. These results point to architectural efficiency as the way forward for in-context stream learning.
Figures & tables
| Stream | Type | Instances | Features | Classes | Drift |
|---|---|---|---|---|---|
| electricity ( Harries, 1999 ) | real | 45,312 | 8 | 2 | unknown |
| noaa ( Elwell and Polikar, 2011 ) | real | 18,159 | 8 | 2 | unknown |
| meter ( Souza et al., 2020b ) | real | 22,948 | 96 | 10 | unknown |
| rialto ( Losing et al., 2016 ) | real | 82,250 | 27 | 10 | unknown |
| posture_no8 ( Kaluza et al., 2010 ) | real | 163,477 | 3 | 10 | unknown |
| agr_a ( Agrawal et al., 1993 ) | synth. | 30,000 | 9 | 2 | abrupt |
| Rank | Accuracy | Balanced acc. | Cohen’s | Time (ms/inst.) | Memory (KB/inst.) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Method | mean | med. | mean | med. | std. | mean | rank | mean | rank | mean | rank | mean | med. | mean | med. |
| TabFM + FIFO | 1.11 | 1 | .869 | .924 | .104 | .829 | 1.33 | .772 | 1.22 | .730 | 1.11 | 167 | 129 | 4.80 | 1.50 |
| TabICL + FIFO | 2.56 | 2 | .860 | .906 | .105 | .820 | 2.89 | .758 | 2.67 | .712 | 2.56 | 58.4 | 71.4 | 3.73 | 1.81 |
| CURE | 2.89 | 3 | .857 | .907 | .106 | .819 | 2.89 | .754 | 2.78 | .704 | 2.89 | 87.3 | 97.9 | 5.94 | 1.96 |
| DR-TabPFN + FIFO | 5.33 | 5 | .838 | .868 | .103 | .794 | 5.67 | .724 | 5.33 | .659 | 5.33 | 599 | 542 | 5.38 | 1.78 |
| TabPFN + FIFO | 6.89 | 6 | .805 | .814 | .122 | .762 | 7.33 | .677 | 7.44 | .619 | 6.89 | 103 | 89.8 | 2.13 | 1.32 |
| TabICL v2 | TabPFN v1 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Stream | FIFO | CURE | ms/inst. | FIFO | DualFIFO | ms/inst. | |||
| noaa | .788 | .787 | 21.9 | .784 | .785 | 28.3 | |||
| .796 | .798 | 21.0 | .792 | .785 | 30.8 | ||||
| .814 | .813 | 24.0 | .808 | .808 | 41.0 | ||||
| .818 | .819 | 71.8 | .814 | .814 | 99.1 | ||||
| agr_a | .921 | .918 | 17.3 | .901 | .902 | 24.9 | |||
| Context updates | Accuracy | Time (ms/inst.) | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Stream | ||||||||||||
| noaa | .818 | .816 | .814 | .808 | 31.5 | 27.8 | 27.3 | 27.1 | ||||
| meter | .906 | .903 | .875 | .710 | 70.3 | 62.0 | 61.3 | 60.7 | ||||
| agr_a | .935 | .934 | .932 | .917 | 32.4 | 28.5 | 28.0 | 27.9 | ||||
| tree_r | .767 | .768 | .764 | .737 | 35.0 | 31.0 | 30.7 | 30.6 | ||||
| Time (ms/inst.) | Accuracy | ||||||
|---|---|---|---|---|---|---|---|
| Backbone | Stream | ||||||
| TabICL v2 | meter | 88.17 | 13.08 | 1.89 | .906 | .903 | .875 |
| tree_r | 110.66 | 7.69 | 0.92 | .767 | .768 | .764 | |
| TabPFN v1 | meter | 371.75 | 50.47 | 5.58 | .736 | .735 | .709 |
| tree_r | 246.53 | 11.75 | 1.52 | .646 | .646 | .644 | |
| DR-TabPFN | meter | 1367.64 | 570.62 | 55.54 | .868 | .866 | .835 |
| TabICL v2 | TabPFN v1 | TabFM | |
| Fixed cost (ms) | 26.1 | 59.4 | 120 |
| Per-query cost ( s) | 13.2 | 22.3 | 117 |
| Queries per unit of fixed cost | |||
| Fixed share of a single call |
Appendix figures & tables24 assets
Supplementary material from the paper’s appendix.
Appendix
| Setting | Value | Streams | Where |
| Default evaluation settings | |||
| Warm-up | 100 instances | 9 | all |
| Evaluation window | 1,000, tumbling | 9 | all |
| Label delay | 0 (immediate) | 9 | all |
| Retained memory | 1,000 rows | 9 | all |
| Queries per prediction | 1 | 9 | all |
| Component | CPU host | GPU hosts |
|---|---|---|
| Processor | 2 AMD EPYC 7702, 128 cores | AMD EPYC 7543, 32 cores |
| Memory | 1 TiB DDR4 | 251 GiB DDR4 |
| Accelerator | none | NVIDIA RTX A6000, 48 GB |
| OS | Ubuntu 24.04.4 LTS | Rocky Linux 9.5 |
| Kernel | Linux 6.8.0 | Linux 5.14.0 |
| Python | 3.14 | 3.12 (3.11 for the v1 environment) |
| Method | elec | noaa | meter | rialto | posture | agr_a | sea_g | rbf_m | tree_r | Mean | Rank |
| No-Change | .853 | .680 | .011 | .000 | .203 | .647 | .561 | .260 | .505 | .413 | 15.56 |
| Majority-Class | .575 | .686 | .011 | .100 | .333 | .632 | .673 | .343 | .523 | .431 | 15.22 |
| HAT | .839 | .744 | .550 | .412 | .532 | .883 | .882 | .709 | .698 | .694 | 12.33 |
| ARF | .900 | .798 | .683 | .728 | .619 | .875 | .890 | .888 | .738 | .791 | 8.00 |
| SRP | .894 | .794 | .717 | .802 | .608 | .914 | .878 | .874 | .743 | .803 | 8.11 |
| Lev. Bagging | .890 | .785 | .618 | .612 | .600 | .821 | .886 | .861 | .691 | .752 | 10.33 |
| noaa | meter | agr_a | tree_r | Mean | Rank | |||||||||||||
| Method | 0 | 100 | 1000 | 0 | 100 | 1000 | 0 | 100 | 1000 | 0 | 100 | 1000 | 0 | 100 | 1000 | 0 | 100 | 1000 |
| No-Change | .680 | .562 | .557 | .011 | .102 | .101 | .647 | .642 | .633 | .505 | .502 | .498 | .461 | .452 | .447 | 15.8 | 15.5 | 15.8 |
| Majority-Class | .686 | .686 | .686 | .011 | .100 | .101 | .632 | .632 | .632 | .523 | .523 | .523 | .463 | .485 | .486 | 15.2 | 15.5 | 15.2 |
| HAT | .744 | .740 | .724 | .550 | .535 | .467 | .883 | .878 | .835 | .698 | .693 | .646 | .719 | .711 | .668 | 11.8 | 11.8 | 10.8 |
| ARF | .798 | .792 | .783 | .683 | .632 | .419 | .875 | .871 | .831 | .738 | .731 | .678 | .773 | .756 | .678 | 8.8 | 8.8 | 9.5 |
| SRP | .794 | .791 | .782 | .717 | .668 | .446 | .914 | .907 | .858 | .743 | .737 | .682 | .792 | .776 | .692 | 7.0 | 7.0 | 8.0 |
| slope | ||||||
|---|---|---|---|---|---|---|
| kNN ( ) | 50 | 50 | 55 | 130 | 271 | 0.99 |
| TabPFN v1 | 50 | 82 | 109 | 244 | 271 | 0.58 |
| TabICL v2 | 60 | 97 | 203 | 334 | 601 | 0.67 |
| TabFM | 60 | 67 | 165 | 335 | 601 | 0.80 |
| kNN | TabPFN v1 | TabICL v2 | TabFM | |||||
| all | +300 | all | +300 | all | +300 | all | +300 | |
| Best fixed size | .766 | .760 | .822 | .780 | .878 | .787 | .886 | .780 |
| .740 | .760 | .808 | .780 | .829 | .783 | .811 | .767 | |
| .718 | .593 | .748 | .613 | .811 | .610 | .814 | .610 | |
| Window oracle | .808 | .777 | .848 | .807 | .923 | .823 | .928 | .830 |
| One-switch oracle | .774 | .760 | .821 | .780 | .885 | .783 | .878 | .767 |
| Method | elec | noaa | meter | rialto | posture | agr_a | sea_g | rbf_m | tree_r | Mean | Rank |
| No-Change | 0.20 | 0.31 | 0.86 | 0.19 | 0.12 | 0.08 | 0.10 | 0.10 | 0.11 | 0.17 | 1.44 |
| Majority-Class | 0.30 | 0.38 | 0.67 | 0.16 | 0.22 | 0.11 | 0.09 | 0.10 | 0.12 | 0.19 | 1.78 |
| HAT | 0.31 | 0.82 | 1.02 | 0.35 | 0.20 | 0.31 | 0.17 | 0.21 | 0.18 | 0.32 | 3.11 |
| ARF | 6.50 | 6.91 | 41.4 | 9.46 | 2.07 | 6.25 | 2.49 | 4.07 | 6.85 | 6.30 | 7.33 |
| SRP | 8.87 | 7.10 | 53.8 | 13.3 | 3.59 | 8.50 | 2.89 | 5.33 | 10.6 | 8.47 | 8.56 |
| Lev. Bagging | 2.44 | 2.96 | 35.2 | 6.39 | 1.64 | 2.95 | 1.00 | 2.64 | 2.14 | 3.29 | 5.78 |
| Method | elec | noaa | meter | rialto | posture | agr_a | sea_g | rbf_m | tree_r | Mean | Rank |
| No-Change | 0.56 | 2.65 | 1.22 | 6.30 | 1.83 | 0.07 | 0.01 | 0.01 | 0.07 | 1.41 | 4.44 |
| Majority-Class | 0.74 | 2.77 | 30.3 | 5.97 | 0.18 | 0.18 | 0.02 | 0.05 | 0.05 | 4.48 | 5.11 |
| HAT | 4.88 | 3.79 | 33.6 | 2.16 | 0.80 | 4.27 | 1.02 | 1.28 | 5.27 | 6.34 | 9.89 |
| ARF | 0.63 | 6.87 | 4.83 | 0.56 | 4.41 | 16.6 | 7.11 | 10.3 | 11.1 | 6.93 | 11.22 |
| SRP | 11.9 | 4.88 | 16.1 | 6.35 | 5.57 | 23.4 | 7.15 | 6.46 | 14.8 | 10.7 | 14.00 |
| Lev. Bagging | 1.09 | 22.8 | 2.49 | 0.24 | 4.24 | 6.07 | 7.08 | 5.06 | 2.10 | 5.69 | 10.11 |
| Method | ms/inst. | Host | USD per inst. |
| HAT | 0.32 | CPU | 0.03 |
| SAM-kNN | 0.45 | CPU | 0.05 |
| Lev. Bagging | 3.29 | CPU | 0.35 |
| OAML | 3.38 | CPU | 0.36 |
| ASML | 4.55 | CPU | 0.49 |
| ARF | 6.30 | CPU | 0.67 |
| Windows | Accuracy | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Stream | prefix | tuning | scored | pretrained | updated | pretrained | updated | ||
| electricity | 10 | 36 | .9394 | .9388 | |||||
| agr_a | 8 | 22 | .9404 | .9406 | |||||
| Stream | raw features | TabICL row repr. | TabFM + FIFO |
|---|---|---|---|
| rbf_m | .924 | .720 | .938 |
| sea_g | .862 | .783 | .894 |
| agr_a | .838 | .805 | .942 |
| electricity | .802 | .774 | .950 |
| noaa | .745 | .705 | .820 |
| rialto | .618 | .539 | .924 |
| recency decay | drift gate | ||||
| Stream | off | on | off | ||
| Real streams | |||||
| rialto | .540 | .618 | .659 | ||
| meter | .503 | .527 | .534 | ||
| electricity | .789 | .802 | .815 | ||
| noaa | .743 | .745 | .744 | ||
| nanoTabPFN, k | nanoTabICL, M | |||||
|---|---|---|---|---|---|---|
| Drift type | bidirectional | causal | sliding | bidirectional | causal | sliding |
| abrupt | .715 | .880 | .891 | .749 | .793 | .784 |
| gradual | .687 | .876 | .889 | .743 | .758 | .755 |
| incremental | .648 | .819 | .856 | .761 | .781 | .780 |
| recurring | .679 | .620 | .623 | .737 | .747 | .747 |
| stationary | .883 | .875 | .900 | .875 | .874 | .870 |
| abrupt | gradual | incremental | recurring | stationary | mean | |
|---|---|---|---|---|---|---|
| .883 | .896 | .863 | .748 | .869 | .852 | |
| .901 | .913 | .877 | .750 | .887 | .866 | |
| .904 | .916 | .876 | .732 | .896 | .865 | |
| .906 | .912 | .865 | .770 | .910 | .872 | |
| .897 | .917 | .863 | .776 | .914 | .874 | |
| bidirectional | .804 | .831 | .776 | .789 | .914 | .823 |
| electricity | noaa | sea_g | tree_r | |||||
|---|---|---|---|---|---|---|---|---|
| Model | acc. | acc. | acc. | acc. | ||||
| No-Change | .853 | .000 | .680 | .000 | .561 | .000 | .505 | .000 |
| TabICL + FIFO | .944 | .818 | .891 | .767 | ||||
| sliding | .602 | .732 | .814 | .559 | ||||
| sliding, learned recency bias | .428 | .742 | .732 | .551 | ||||
| Accuracy | Time (ms/inst.) | Peak GPU (MB) | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Stream | Cached | Re-enc. | Cached | Re-enc. | Cached | Re-enc. | Cached | Re-enc. | ||
| electricity | .609 | .395 | 8.2 | 5.6 | 26.5 | 31.3 | ||||
| .609 | .609 | 7.7 | 5.7 | 26.5 | 62.7 | |||||
| .609 | .404 | 8.1 | 10.4 | 26.5 | 173 | |||||
| .609 | .405 | 8.2 | 28.0 | 26.5 | 604 | |||||
| .609 | .430 | 8.2 | 83.1 | 26.5 | 2,297 | |||||