Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor/modules dumping and loading #93

Merged
merged 39 commits into from
Jan 13, 2025

Conversation

voorhs
Copy link
Collaborator

@voorhs voorhs commented Jan 11, 2025

Теперь логика по отгрузке модулей в файловую систему реализована в файле _dump_tools.py. Теперь при написании нового модуля можно не реализовывать методы load и dump, достаточно убедиться что все нужные объекты сохранены в виде атрибутов и имеют допустимый тип (см типы в файле _dump_tools.py

Так то сделано много всего, что стоило разбить на несколько PR:

  • теперь нет объекта VectorIndexClient, поскольку с кешированием от Егора, в нем пропала надобность
  • теперь в классах RerankScorer и DNNCScorer у эмбедера и кросс энкодера разные параметры девайса, батч сайза и все такое
  • настроил приватность и публичность атрибутов модулей
  • теперь Embedder и CrossEncoder отгружаются в файловую систему без сохранения весов трансформеров (ура логи будут весить меньше)

Еще конечно много TODO осталось, но в текущем виде (возможно после устранения ошибок билда документации) этот PR уже можно мерджить чтобы не блокать работу остальных

@voorhs voorhs requested review from Samoed and truff4ut January 11, 2025 23:00
autointent/_cross_encoder.py Outdated Show resolved Hide resolved
autointent/_embedder.py Show resolved Hide resolved
autointent/_dump_tools.py Show resolved Hide resolved

# create shared objects for a whole pipeline
context = Context(cfg.seed)
cfg.logs.clear_ram = True
context.configure_logging(cfg.logs)
context.configure_vector_index(cfg.vector_index, cfg.embedder)
context.configure_data(cfg.data)
context.configure_cross_encoder(cfg.cross_encoder)
Copy link
Collaborator

Choose a reason for hiding this comment

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

А зачем нам его отдельно конфигурировать? Вроде это отдельная нода, которую еще не факт, что будут использовать

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Начиная с предвдущего ПР кроссэнкодер это можно сказать такая же сущность что и эмбедер:

  • ее можно использовать как один из кирпичиков для имплементации модулей

А начиная с этого ПР во время авто конфигурации пайплайна кроссэнкодер можно инициализировать из контекста т.е. достать из контекста все параметры (правда пока что кроме названия модели)

Вот из-за последнего мы должны хранить конфиг кроссэнкодера в контексте

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

А про то что не факт что будут использовать. Это да, выглядит странно что мы вне зависимости от того используют кроссэнкодер или нет всегда его конфигурируем. Нооо типа ладно. Пользователю в ручную это делать не надо, там используется дефолтныц конфиг

Copy link
Collaborator

Choose a reason for hiding this comment

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

Просто то как у нас идет работа с эмбеддером это костыль немного и кроссэнкодер сейчас тоже такой. Можно конечно оставить эти изменения на потом

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

в чем конкретно костыльность?

Copy link
Collaborator

Choose a reason for hiding this comment

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

В том что их тоже надо оптимизировать

@voorhs voorhs merged commit 6231290 into dev Jan 13, 2025
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants