ТРЕНАЖЕРНЫЙ ЗАЛ OpenAI/стабильные_основы3 и несколько ядер

#python-3.x #multiprocessing #reinforcement-learning #openai-gym #stable-baselines

Вопрос:

Похоже, что GYM/stable_baselines3 плохо масштабируется с количеством ядер на машине. Это «нормально»? Или это проблема с аппаратной конфигурацией на моей машине? Частота кадров в секунду сильно падает (с увеличением времени). Вот несколько mwe

128 ядер : ~100 кадров
в секунду $ время python3 mwe.py
реальный 2m35,323s
пользователь 139m27,725s
система 18m44,585s

2 ядра
$ набор задач —список процессоров 1,2 python3 mwe.py
1300 кадров
в секунду реальный 0m9,331s
пользователь 0m12,990s
система 0m0,244s

32 ядра
$ набор задач по времени —список процессоров 0-31 python3 mwe.py
800 Кадров
в секунду в реальном времени 0m16,181
с пользователь 2m54,283 с
система 0m25,847с

 from stable_baselines3 import PPO
import gym
from gym import error, spaces, utils
from gym.utils import seeding

#https://github.com/MatePocs/gym-basic/blob/main/gym_basic/envs/basic_env.py
class BasicEnv(gym.Env):
    metadata = {'render.modes': ['human']}

    def __init__(self):
        # There are two actions, first will get reward of 1, second reward of -1. 
        self.action_space = spaces.Discrete(5)
        self.observation_space = spaces.Discrete(2)

    def step(self, action):

        # if we took an action, we were in state 1
        state = 1
    
        if action == 2:
            reward = 1
        else:
            reward = -1
            
        # regardless of the action, game is done after a single step
        done = True

        info = {}

        return state, reward, done, info

    def reset(self):
        state = 0
        return state
  
    def render(self, mode='human'):
        pass

    def close(self):
        pass

env = BasicEnv()

ppo = PPO ("MlpPolicy", env,
        verbose=1, 
        learning_rate=0.0003
        )
ppo.learn(total_timesteps=10000)