Skip to content

feat: TabPFN implementation#1390

Merged
nicl-nno merged 36 commits intomasterfrom
tabpfn-impl
Aug 7, 2025
Merged

feat: TabPFN implementation#1390
nicl-nno merged 36 commits intomasterfrom
tabpfn-impl

Conversation

@martilut
Copy link
Copy Markdown
Contributor

@martilut martilut commented May 16, 2025

This is a 🙋 feature or enhancement.

Summary

Done:

  • Added TabPFN implementations for classification and regression tasks
  • Added default parameters and search space
  • Added models in model repository
  • Added requirement with suitable version
  • Updated model list in documentation
  • Added tests for TabPFN strategies

TODO's:

  • Specify path for saving/loading weights (TabPFN downloads weights into system cache dir by default)
  • Check dataset size (TabPFN is optimized for datasets up to 10,000 rows for GPU and 1000 rows for CPU)
  • Support GPU for large datasets?

Evaluation results on AutoMLBenchmark: https://docs.google.com/spreadsheets/d/1FZw99YBGdduxOWPHC_ZohIeXCpLwdNzoBtETLsUVtQo/edit?gid=423561462#gid=423561462
Testing different pipelines with TabPFN:
https://docs.google.com/spreadsheets/d/1FZw99YBGdduxOWPHC_ZohIeXCpLwdNzoBtETLsUVtQo/edit?gid=784073553#gid=784073553

@martilut martilut added enhancement New feature or request in progress task in progress labels May 16, 2025
@martilut martilut changed the title Tabpfn impl feat: TabPFN implementation May 16, 2025
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented May 16, 2025

All PEP8 errors has been fixed, thanks ❤️

Comment last updated at Tue, 05 Aug 2025 18:08:29

@martilut
Copy link
Copy Markdown
Contributor Author

/fix-pep8

@nicl-nno nicl-nno requested a review from dmitryglhf May 16, 2025 10:42
@dmitryglhf
Copy link
Copy Markdown
Collaborator

Если нужно помочь с настройкой или тестированием на automlbenchmark, то могу подключиться.

@martilut
Copy link
Copy Markdown
Contributor Author

Поправила замечания, но остались некоторые вопросы:

  1. Билды на 3.9 и 3.10 все еще is canceled. Добавила в requirements версию torch из other_requirements, в чем может быть проблема?
  2. TabPFN при обучении моделей скачивает веса, по дефолту сохраняет в system cache directory пользователя. Нужно ли поменять путь для сохранения этих файлов, чтобы они хранились где-то внутри FEDOT?
  3. По тестированию на automlbenchmark: если есть какой-то гайд или пример использования FEDOT на automlbenchmark, буду благодарна ссылке, а если нет, то попробую самостоятельно разобраться

@nicl-nno
Copy link
Copy Markdown
Collaborator

Билды на 3.9 и 3.10 все еще is canceled. Добавила в requirements версию torch из other_requirements, в чем может быть проблема?

Ну там надо смотреть, в чем ошибка.

TabPFN при обучении моделей скачивает веса, по дефолту сохраняет в system cache directory пользователя. Нужно ли поменять путь для сохранения этих файлов, чтобы они хранились где-то внутри FEDOT?

Внутри нет, но у fedot-а есть своя директория для кэша - можно класть туда.

По тестированию на automlbenchmark

У @dmitryglhf есть опыт.

@nicl-nno
Copy link
Copy Markdown
Collaborator

А получилось оптимизатор запустить так, чтобы он строил какие-то пайплайны в TabPFN? Если ли смысл его закидывать в начальное приближение.

@martilut
Copy link
Copy Markdown
Contributor Author

/fix-pep8

@codecov
Copy link
Copy Markdown

codecov bot commented Aug 4, 2025

Codecov Report

❌ Patch coverage is 39.28571% with 68 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.38%. Comparing base (6d02ee1) to head (1b89dae).
⚠️ Report is 9 commits behind head on master.

Files with missing lines Patch % Lines
...luation/operation_implementations/models/tabpfn.py 40.98% 36 Missing ⚠️
fedot/core/operations/evaluation/tabpfn.py 37.25% 32 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1390      +/-   ##
==========================================
- Coverage   80.78%   80.38%   -0.41%     
==========================================
  Files         148      150       +2     
  Lines       10746    10852     +106     
==========================================
+ Hits         8681     8723      +42     
- Misses       2065     2129      +64     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

k: v for k, v in self.params.to_dict().items() if k not in self.__operation_params
}

model_path = self.params.get('model_path', None)
Copy link
Copy Markdown
Collaborator

@dmitryglhf dmitryglhf Aug 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: А где используется этот параметр?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

model_path передается в model_params, а затем попадает в инициализацию класса TabPFN. В новом коммите пофиксила, чтобы передавался путь к папке кэша, если model_path = "auto"

@dmitryglhf
Copy link
Copy Markdown
Collaborator

По моему в русском и английском ридми не убрана версия питона 3.8.

И как я вижу здесь тоже осталось 3.8.

В остальном у меня вопросов нет.

@martilut
Copy link
Copy Markdown
Contributor Author

martilut commented Aug 5, 2025

В .travis.yml поменяла, а в README не могу. Если не ошибаюсь, там версии из pypi берутся, для publish_pypi билда я поменяла

@nicl-nno nicl-nno merged commit e8532be into master Aug 7, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request in progress task in progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants