Skip to content

Support limit-aware batching for unsupervised full-regression client calls #351

Description

@fabufab

Describe the workflow you want to enable

I want to use TabPFNUnsupervisedModel with tabpfn-client for outlier detection, imputation, and synthetic generation when the query set exceeds the active full-regression row limit. The tabpfn-client size-limit documentation explicitly recommends splitting full-regression test sets across calls when this limit is reached. Currently, TabPFNUnsupervisedModel sends all query rows through one predict(..., output_type="full") call. A 1,138-row query against the current limit of 400 therefore raises:

ValueError: The number of test rows (1138) exceeds the maximum of 400 for full regression output.

Describe your proposed solution

Make unsupervised numerical full-regression predictions respect the active tabpfn-client row limit by processing oversized query sets in ordered batches and reconstructing the existing result structure. The implementation should not hard-code the current limit, refit the model, or change local and within-limit behavior.

Describe alternatives you've considered, if relevant

If row-batch invariance or limit discovery must be owned by tabpfn-client, implementing the batching there would also satisfy this workflow.

Additional context

I compared full outputs from the hosted tabpfn-client backend for 12 query rows in a single request with outputs reconstructed from three contiguous four-row requests. I used the same fitted model and training context with random_state=0, testing both n_estimators=1 and n_estimators=4.

For each estimator setting, the single-request and reconstructed outputs matched exactly for mean, median, mode, quantiles, and borders. The finite logits also matched exactly, their NaN positions were identical, and the maximum finite difference was zero.

Observed versions:

tabpfn-extensions 0.4.3
tabpfn-client 0.3.3
tabpfn 8.1.0

Impact

Medium (Significant enhancement)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestwontfixThis will not be worked on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions