FEDOT
FEDOT copied to clipboard
Abstract fitted models cache functionality from EvaluationDispatcher
The aim is to allows other cache implementations, for example, for NAS Tasks:
- [ ] Introduce Cache interface that works per-graph (as opposed to OperationsCache that works per-node)
- [ ] Implement or find cache implementation suitable for large models (e.g. as in NAS)
- [ ] Extract RemoteEvaluator usage as remote cache implementation (currently it is hardcoded into EvaluationDispatcher)
This issue came out of our discussion with @staeros about how to implement cache for NAS
Implement or find cache implementation suitable for large models (e.g. as in NAS)
Если я правильно понимаю, то для NAS реализация кэша может быть весьма примитивной - можно просто в памяти держать пары descriptive_id - фитнес. Т.к. в отличие от пайплайнов нет блоков, которые нужно кэшировать отдельно.
Есть подозрение, что очень легко может понадобиться выгрузка на диск. Одна нейросетка легко может пару гб занимать. Это либо самим реализовать, либо, вероятно, какую-то готовую реализацию такого кэша можно подтянуть, какой-нибудь key-value LRU cache с выгрузкой на диск неиспользуемых
Implement or find cache implementation suitable for large models (e.g. as in NAS)
Если я правильно понимаю, то для NAS реализация кэша может быть весьма примитивной - можно просто в памяти держать пары descriptive_id - фитнес. Т.к. в отличие от пайплайнов нет блоков, которые нужно кэшировать отдельно.
Есть подозрение, что очень легко может понадобиться выгрузка на диск. Одна нейросетка легко может пару гб занимать.
А зачем это именно для кэширования в NAS-е? Там нужно именно именно сохранение самих сетей, а не фитнеса?
А зачем это именно для кэширования в NAS-е? Там нужно именно именно сохранение самих сетей, а не фитнеса?
Да, тут речь именно про кэширование обученных моделей.
Хотя, кажется, я понял, о чем ты. Во время оптимизации нам нужно только вычислить фитнес, и сеть можно выкинуть, так как при любом изменении уже нужно заново сетку обучать. В то время как для пайпалйнов кэширование осмысленно, так как там кэш per-node. Может быть, с нейросетками тоже имеет смысл кэшировать параметры слоев (как отдельных нод), если их предки не изменились. Наверное, это может заметно ускорить обучение. @staeros, что скажешь насчет всего этого?
Может быть, с нейросетками тоже имеет смысл кэшировать параметры слоев (как отдельных нод), если их предки не изменились. Наверное, это может заметно ускорить обучение. @staeros, что скажешь насчет всего этого?
Если так можно делать - то да, тогда смысл есть.
Not planned, maybe will reiterate later when need arises