FEDOT icon indicating copy to clipboard operation
FEDOT copied to clipboard

Abstract fitted models cache functionality from EvaluationDispatcher

Open gkirgizov opened this issue 2 years ago • 5 comments

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

gkirgizov avatar Aug 25 '22 15:08 gkirgizov

Implement or find cache implementation suitable for large models (e.g. as in NAS)

Если я правильно понимаю, то для NAS реализация кэша может быть весьма примитивной - можно просто в памяти держать пары descriptive_id - фитнес. Т.к. в отличие от пайплайнов нет блоков, которые нужно кэшировать отдельно.

nicl-nno avatar Aug 25 '22 15:08 nicl-nno

Есть подозрение, что очень легко может понадобиться выгрузка на диск. Одна нейросетка легко может пару гб занимать. Это либо самим реализовать, либо, вероятно, какую-то готовую реализацию такого кэша можно подтянуть, какой-нибудь key-value LRU cache с выгрузкой на диск неиспользуемых

Implement or find cache implementation suitable for large models (e.g. as in NAS)

Если я правильно понимаю, то для NAS реализация кэша может быть весьма примитивной - можно просто в памяти держать пары descriptive_id - фитнес. Т.к. в отличие от пайплайнов нет блоков, которые нужно кэшировать отдельно.

gkirgizov avatar Aug 30 '22 08:08 gkirgizov

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

А зачем это именно для кэширования в NAS-е? Там нужно именно именно сохранение самих сетей, а не фитнеса?

nicl-nno avatar Aug 30 '22 10:08 nicl-nno

А зачем это именно для кэширования в NAS-е? Там нужно именно именно сохранение самих сетей, а не фитнеса?

Да, тут речь именно про кэширование обученных моделей.

Хотя, кажется, я понял, о чем ты. Во время оптимизации нам нужно только вычислить фитнес, и сеть можно выкинуть, так как при любом изменении уже нужно заново сетку обучать. В то время как для пайпалйнов кэширование осмысленно, так как там кэш per-node. Может быть, с нейросетками тоже имеет смысл кэшировать параметры слоев (как отдельных нод), если их предки не изменились. Наверное, это может заметно ускорить обучение. @staeros, что скажешь насчет всего этого?

gkirgizov avatar Aug 31 '22 07:08 gkirgizov

Может быть, с нейросетками тоже имеет смысл кэшировать параметры слоев (как отдельных нод), если их предки не изменились. Наверное, это может заметно ускорить обучение. @staeros, что скажешь насчет всего этого?

Если так можно делать - то да, тогда смысл есть.

nicl-nno avatar Aug 31 '22 07:08 nicl-nno

Not planned, maybe will reiterate later when need arises

gkirgizov avatar Jan 25 '23 07:01 gkirgizov