--- license: bsd-3-clause library_name: onnx base_model: jingang/TabICL base_model_relation: quantized pipeline_tag: tabular-classification tags: - onnx - onnxruntime-web - webgpu - tabicl - tabular-classification - tabular-regression - tabular-foundation-model - in-context-learning --- # TabICLv2 for onnxruntime-web An unofficial ONNX conversion of [TabICLv2](https://huggingface.co/jingang/TabICL) by Jingang Qu, David Holzmüller, Gaël Varoquaux and Marine Le Morvan (Soda team, Inria), made for Tabular Data Workbench, which runs it in the browser with onnxruntime-web on WebGPU or WebAssembly. The weights are those of the upstream checkpoints: unchanged in the `fp32` variant, and with the larger ones rounded to float16 in the `f16w` variant. The Soda team has not reviewed or endorsed this conversion. ## Files Each task (`classifier`, `regressor`) is cut into three graphs: | file | inputs | output | | --- | --- | --- | | `-col..onnx` | `X` (batch, columns, rows, 3) feature-group columns, `y` (batch, digits, train) | `E` (batch, columns, rows, 128) | | `-row..onnx` | `E` (batch, columns, rows, 128) | `R` (batch, rows, 512) | | `-icl..onnx` | `R` (batch, rows, 512), `y` (batch, train) | `out` (batch, test, 10 logits or 999 quantiles) | Each graph comes in two variants (``): - `fp32`: the checkpoint's weights as they are (225 MB for both tasks). - `f16w`: every float32 weight of 1,024 or more elements stored as float16 and cast back to float32 on load (113 MB). Compute stays float32, so it runs on the WebGPU and WebAssembly providers alike. `manifest.json` lists every file with its size, sha256, inputs and outputs, and the int64 shape nodes (`cpuNodes`, one in each `row` graph) that the app pins to the CPU provider on WebGPU. The graphs contain no int64 shape arithmetic, which onnxruntime-web's WebGPU provider has been seen to corrupt. The graphs are the network only. Preprocessing (imputation, the normalisation choices, outlier clipping), the ensemble of column and class permutations, the mixed-radix digits for more than 10 classes and the averaging stay outside them, as in the reference package. The app ports those to TypeScript; `models/tabicl/pipeline.py` in Tabular Data Workbench is the numpy reference. ## How they were made Source: `jingang/TabICL` at revision `4dcd344ece2c00be9e831fdd35bed57b5ad83e19` (`tabicl-classifier-v2-20260212.ckpt`, `tabicl-regressor-v2-20260212.ckpt`), with the `tabicl` 2.2.0 package's model code. ```sh cd models/tabicl uv run export.py # writes public/models/tabicl/ uv run verify.py # parity table against tabicl ``` `export.py` (in `models/tabicl/` of Tabular Data Workbench) splits the network in `exportable.py`, exports each part with `torch.onnx` (dynamo, opset 18, PyTorch 2.14 on CPU), removes the exporter's node metadata and doc strings, and checks the split graphs against tabicl's own forward pass before writing the manifest. ## Parity `verify.py` runs `TabICLClassifier` and `TabICLRegressor` (tabicl 2.2.0, CPU, float32, 8 estimators, seed 42), replays the ensemble it drew through the ONNX graphs in onnxruntime 1.30 (CPU) and compares the final predictions: | dataset | fp32 | f16w | | --- | --- | --- | | breast_cancer (probabilities) | 2.8e-6 | 5.8e-4 | | breast_cancer with 5% missing | 1.6e-6 | 3.4e-4 | | wine | 8.3e-7 | 2.8e-4 | | 14 classes (synthetic) | 1.5e-6 | 7.1e-4 | | diabetes (mean, in units of the target's sd) | 2.3e-6 | 4.7e-4 | | diabetes (quantiles, in units of the target's sd) | 2.4e-6 | 6.4e-4 | The figures are maximum absolute differences. Predicted classes agree with tabicl on every row of every dataset in both variants. ## Licence BSD-3-Clause, the licence of TabICL's code and of the v2 checkpoints (`license: bsd-3-clause` on `jingang/TabICL`). The licence text with the copyright notice (Copyright (c) 2025, Soda team @ Inria) is in `LICENSE` beside the graphs and must stay with them. The licence does not allow the names of Inria or the Soda team to be used to endorse or promote products derived from these files. ## Citation ```bibtex @inproceedings{qu2025tabicl, title={Tab{ICL}: {A} Tabular Foundation Model for In-Context Learning on Large Data}, author={Qu, Jingang and Holzm{\"u}ller, David and Varoquaux, Ga{\"e}l and Le Morvan, Marine}, booktitle={International Conference on Machine Learning}, year={2025} } @article{qu2026tabiclv2, title={{TabICLv2}: {A} better, faster, scalable, and open tabular foundation model}, author={Qu, Jingang and Holzm{\"u}ller, David and Varoquaux, Ga{\"e}l and Le Morvan, Marine}, journal={arXiv preprint arXiv:2602.11139}, year={2026} } ```