Documented how to pin a version of one of the Python
tabpfn library’s own dependencies, such as
torch or numpy, when a new release of that
dependency breaks a tabpfn version that worked before. Use
extra_packages in install_tabpfn() for the
persistent environment, or reticulate::py_require() for the
ephemeral one. See the “Pinning dependencies” section in
?install_tabpfn (#40).
The training_set_limit argument of
tab_pfn() now defaults to Inf, so all of your
data is used. It previously sampled anything larger down to 10,000 rows
without saying so.
tab_pfn() no longer checks your data against the
model’s limits; the Python library does, and its error names the model
in use. Limits now follow the version you chose rather than one fixed
set.
Fixed a failure that stopped models from fitting at all on some
setups, reported as
AttributeError: property 'stream' of '_StderrHandler' object has no setter
(#40). The package no longer uses
reticulate::py_capture_output(), which reassigns the
streams of Python’s logging handlers and errors when one of them is
read-only.
Failures coming from the Python library are now reported as R
errors. The message keeps what the library said and drops the wrapper
around it, and tab_pfn() adds what to do about it in R,
such as lowering training_set_limit. This covers
predict() as well.
?tab_pfn now lists each model version’s limits,
including the lower one that applies on a CPU, and its examples use
current versions rather than earlier ones.
Test snapshots now record TabPFN v3.5, the model the Python library currently defaults to. They will need updating again whenever that default moves.
CI pins torch to 2.13.0. The 2.14.0 release triggers
the _StderrHandler failure above, and the pin stays until
that is settled upstream.
Added quantile regression support to
predict().
tab_pfn()’s version argument now
accepts bare version numbers in addition to "v"-prefixed
strings. A "v" is prepended automatically, so
version = 2.5, version = "2.5", and
version = "v2.5" are all equivalent.
New tabpfn_initialize() eagerly loads the Python
tabpfn library (and PyTorch). Call it right after
library(tabpfn) and before other OpenMP-using packages to
avoid the segmentation fault described in #34.
When the "r-tabpfn" environment (created by
install_tabpfn()) is the Python installation reticulate
resolves to, the tabpfn Python library is now imported
eagerly at load time so that PyTorch claims OpenMP before other packages
can, avoiding a segmentation fault (#34).
New install_tabpfn() sets up a persistent
"r-tabpfn" Python virtual environment. It has a
version argument to pin a specific tabpfn
release and, by default, offers to upgrade an existing environment when
a newer release is available.
Added a type argument to be consistent with parsnip.
Defaults to NULL, which will produce all prediction
types.
The fitted tab_pfn object now records:
The underlying TabPFN model version in a version
element, which is also shown by the print method. It falls back to
"unknown" if the version cannot be determined.
The device(s) used to fit the model (e.g. "cpu",
"mps", or "cuda:0") in a device
element, which is also shown by the print method. It falls back to
"unknown" if the device cannot be determined.
Updated notes on License Requirements in
?tab_pfn.
control_tab_pfn() now accepts ... to
pass additional arguments directly to the TabPFN Python constructor
(e.g. model_path).
tab_pfn() gains a version argument to
select a specific TabPFN model version (e.g., "v2",
"v2.5"). When NULL, the Python library’s
current default is used (#15).
New tabpfn_list_versions() returns the model
versions supported by the currently installed Python tabpfn
library.
Added tabpfn_download_models() to close (#15) @frankiethull