Fast Population-Based Reinforcement Learning on a Single Machine.
Интересная работа, в которой показывают, что PB RL может хорошо и быстро работать на одной машине и (что важно!) быть простым в имплементации.
Достаточно правильно векторизовать код, так чтобы он работал эффективно на одном GPU/TPU для популяции агентов. После этого код любого алгоритма почти не меняется и спидапы огромные.
В PyTorch для этого нужно чуть поработать руками и векторизовать простые слои, чтобы они считали за раз N разных агентов (например сделать веса Linear размерности [num_agents, input_dim, out_dim]). В Jax же все делается из коробки через jax.vmap, да и работает шустрее.
Где это использовать в рисерче хз, т.к. из-за этого будет сложно изолировать эффекты нововведений, но для ускорения сбора данных для уже проверенных алгоритмов самое то. А у себя в рисерче я подобным способом обучаю ансамбли.
Интересная работа, в которой показывают, что PB RL может хорошо и быстро работать на одной машине и (что важно!) быть простым в имплементации.
Достаточно правильно векторизовать код, так чтобы он работал эффективно на одном GPU/TPU для популяции агентов. После этого код любого алгоритма почти не меняется и спидапы огромные.
В PyTorch для этого нужно чуть поработать руками и векторизовать простые слои, чтобы они считали за раз N разных агентов (например сделать веса Linear размерности [num_agents, input_dim, out_dim]). В Jax же все делается из коробки через jax.vmap, да и работает шустрее.
Где это использовать в рисерче хз, т.к. из-за этого будет сложно изолировать эффекты нововведений, но для ускорения сбора данных для уже проверенных алгоритмов самое то. А у себя в рисерче я подобным способом обучаю ансамбли.