Troubleshooting¶
Messages you may meet, what they mean, and what to do.
The run stops at the start¶
Only 1 class left in the target column '…' — a classifier needs at least two. —
after the class filter, fewer than two classes survived. The message names the surviving
classes and the filter, preprocessing.min_samples_per_class; lower it, or use more
data.
evaluation.outer = 'lodo' needs dataset.group set — name the grouping column, or
choose another outer.
dataset.group and dataset.pta both name … — the grouping column cannot also be the
protected attribute: a group held out of training has no samples inside that fold to
compare against. Use a different column, or leave pta empty.
Multiple taxonomic levels detected — dataset.tax_level is a list. Use the wrapper,
or set one level for a direct render.
TabPFN¶
HF_TOKEN missing. (v2.5 only) — put HF_TOKEN=hf_… in ~/.Renviron. A blank
HF_TOKEN= in a project-level .Renviron masks the global value.
The 3.5 weights will not download in a render — the package wants a browser for the
licence step. Accept the licence once at the Prior Labs site, then set
TABPFN_TOKEN=… and TABPFN_NO_BROWSER=1 in ~/.Renviron. The weights and the token
are cached under ~/.cache/tabpfn/. In the container, export TABPFN_TOKEN in the shell
and pass -e TABPFN_TOKEN; the image sets TABPFN_NO_BROWSER=1, and the weights persist
when $HOME/.cache/tabpfn is mounted at /work/.cache/tabpfn.
MKL / libmkl_*.so not found (conda route, v2.5 environment) — the conda-forge
PyTorch of tabflux-tabpfn-gpu is linked against MKL, which an embedded interpreter
finds only through LD_LIBRARY_PATH. The wrapper sets it for every render; a direct
quarto render needs
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$(conda info --base)/envs/tabflux-tabpfn-gpu/lib"
first. The 3.5 environment and the container are unaffected.
mlp and tabpfn in one run — two torch stacks cannot share an R session. Run them
in separate configurations.
Everything is very slow — TabPFN on CPU. Add --gpus all (the host needs the NVIDIA
container toolkit), or keep to a small input.cfmd.datasets subset.
Grouped designs¶
A held-out group's balanced accuracy equals its plain accuracy, or AUC is NA — the
group holds a single class, so its fold measures only that class's recall. Switch
evaluation.outer to cv with a small fold count, which pools several groups per fold,
or restrict the run to groups that contain every class. The grouping page has the reasoning.
Fewer folds than asked for — the fold count is capped by the number of groups and by the rarest class. The report prints the fold table it used.
Caching and reruns¶
A rerun finishes suspiciously fast, or reports old numbers — tuned models and
out-of-fold predictions are cached per run folder, and a rerun skips every outer fold
whose predictions are on disk. Bump dataset.version, or delete the outer_fold_*/
folders together with <method>_tuned_instance.rds and <method>_tuned_learner.rds to
retune.
Container outputs are owned by root — the container ran without
--user "$(id -u):$(id -g)", or Docker created a missing out/ itself. Run
mkdir -p out and add --user next time. To take over what is already there, without
administrator rights: docker run --rm --user 0 -v "$PWD/out:/o" ghcr.io/ilivius/tabflux:1.6.0 chown -R "$(id -u):$(id -g)" /o.
The cFMD module¶
Could not list the cFMD release '…' from GitHub — anonymous GitHub API calls are
limited to 60 an hour per public IP address, shared by every machine behind that address
(an institute or company network, for example). The module needs one call per run, falls back to the cached manifest when the
data are already downloaded, and uses GITHUB_TOKEN from ~/.Renviron when present (in
the container, pass it with -e GITHUB_TOKEN).
A dataset is missing from the run — smaller than input.cfmd.min_samples_per_dataset
once samples below input.cfmd.completeness_threshold are dropped, or its class fell
below preprocessing.min_samples_per_class. The import section of the report lists what
was dropped and why.