Я использую SEED с помощью луча, и поэтому я определяю класс Worker
следующим образом
import numpy as np
import gym
class Worker:
def __init__(self, worker_id, env_name, n):
import os
os.environ['OPENBLAS_NUM_THREADS'] = '1'
self._id = worker_id
self._n_envs = n
self._envs = [gym.make(env_name)
for _ in range(self._n_envs)]
def reset_env(self, env_id):
return self._envs[env_id].reset()
def env_step(self, env_id, action):
return self._envs[env_id].step(action)
Кроме того, в * есть oop 1007 *, которые вызывают методы Worker
, когда необходимо взаимодействовать со средой.
Как подсказывает этот документ , я хочу убедиться, что каждый работник использует ровно один ресурс ЦП. Вот некоторые из моих попыток:
- При создании
worker
я установил num_cpus=1
: worker=ray.remote(num_cpus=1)(Worker).remote(...)
- Я проверил свою конфигурацию numpy, используя
np.__config__.show()
, что дало мне следующую информацию
blas_mkl_info: НЕ ДОСТУПНО
blis_info: НЕ ДОСТУПНО
openblas_info: library = ['openblas', 'openblas'] library_dirs = ['/ usr / local / lib'] language = c define_macros = [('HAVE_CBLAS', None)] *
blas_opt_info: библиотеки = ['openblas', 'openblas'] library_dirs = [' / usr / local / lib '] language = c define_macros = [(' HAVE_CBLAS ', None)]
lapack_mkl_info: НЕ ДОСТУПНО
openblas_lapack_info: library = [' openblas ',' openblas '] library_dirs = [' / usr / local / lib '] language = c define_macros = [(' HAVE_CBLAS ', None)]
lapack_opt_info: библиотеки = [' openblas ',' openblas '] library_dirs = ['/ usr / local / lib'] language = c define_macros = [('HAVE_CBLAS', None)]
Я заметил, что numpy - это вы спеть OpenBLAS, поэтому я установил os.environ['OPENBLAS_NUM_THREADS'] = '1'
в классе Worker
, как в приведенном выше коде, следуя этой инструкции .
После того, как оба были выполнены, я открыл top, но все же заметил, что каждый рабочий используйте 130%-180%
CPU, точно так же, как и раньше. Я также пытался установить os.environ['OPENBLAS_NUM_THREADS'] = '1'
в начале основного python сценария или с помощью export OPENBLAS_NUM_THREADS=1
, но ничего не помогает. Что я могу сделать сейчас?