-
Notifications
You must be signed in to change notification settings - Fork 1
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
Conversation
… to pipeline and context
|
||
# 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) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А зачем нам его отдельно конфигурировать? Вроде это отдельная нода, которую еще не факт, что будут использовать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Начиная с предвдущего ПР кроссэнкодер это можно сказать такая же сущность что и эмбедер:
- ее можно использовать как один из кирпичиков для имплементации модулей
А начиная с этого ПР во время авто конфигурации пайплайна кроссэнкодер можно инициализировать из контекста т.е. достать из контекста все параметры (правда пока что кроме названия модели)
Вот из-за последнего мы должны хранить конфиг кроссэнкодера в контексте
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А про то что не факт что будут использовать. Это да, выглядит странно что мы вне зависимости от того используют кроссэнкодер или нет всегда его конфигурируем. Нооо типа ладно. Пользователю в ручную это делать не надо, там используется дефолтныц конфиг
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Просто то как у нас идет работа с эмбеддером это костыль немного и кроссэнкодер сейчас тоже такой. Можно конечно оставить эти изменения на потом
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
в чем конкретно костыльность?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В том что их тоже надо оптимизировать
Теперь логика по отгрузке модулей в файловую систему реализована в файле
_dump_tools.py
. Теперь при написании нового модуля можно не реализовывать методыload
иdump
, достаточно убедиться что все нужные объекты сохранены в виде атрибутов и имеют допустимый тип (см типы в файле_dump_tools.py
Так то сделано много всего, что стоило разбить на несколько PR:
VectorIndexClient
, поскольку с кешированием от Егора, в нем пропала надобностьRerankScorer
иDNNCScorer
у эмбедера и кросс энкодера разные параметры девайса, батч сайза и все такоеEmbedder
иCrossEncoder
отгружаются в файловую систему без сохранения весов трансформеров (ура логи будут весить меньше)Еще конечно много TODO осталось, но в текущем виде (возможно после устранения ошибок билда документации) этот PR уже можно мерджить чтобы не блокать работу остальных