我在 OS X 上使用 pipenv 使用以下 Pipfile 设置我的环境:
[[source]]
name = "pypi"
url = "https://pypi.python.org/simple"
verify_ssl = true
[dev-packages]
[packages]
ray = {extras = ["default", "rllib"], version = "*"}
torch = "*"
jupyterlab = "*"
ipywidgets = "*"
gputil = "*"
[requires]
python_version = "3.8.12"
然后我通过运行设置环境:
$ pipenv --python /usr/local/opt/python@3.8/bin/python3 install --skip-lock
$ pipenv run jupyter nbextension enable --py widgetsnbextension --sys-prefix
$ pipenv run jupyter-lab
这安装(除其他外):
- 蟒蛇 3.8.12
- jupyter 实验室 3.1.13
- 射线 1.6.0
- 火炬 1.9.1
- ipywidgets 7.6.5
有了这个,我可以运行以下单元格:
import time
import ipywidgets as widgets
from IPython.display import display
out = widgets.Output()
display(out)
with out:
count = 0
# 2) Enter an infinite while loop (to step through the episode).
while count < 10:
out.clear_output(wait=True)
print(f"{count}")
time.sleep(0.2)
count += 1
这个简单的计数器给出了预期的输出。它打印 0,清除并打印 1,清除并打印 2,依此类推。
如果我然后运行以下两个单元格:
import numpy as np
import pprint
import ray
ray.init()
from ray.rllib.agents.ppo import PPOTrainer
config = {
"env": "CartPole-v0",
"framework": "torch", # If users have chosen to install torch instead of tf.
"create_env_on_driver": True,
}
rllib_trainer = PPOTrainer(config=config)
他们都运行没有错误。如果我然后重新运行计数器单元,它现在显示:
Output()
0[2K
1[2K
2[2K
3[2K
4[2K
5[2K
6[2K
7[2K
8[2K
9[2K
也就是说,小部件似乎突然停止工作。所有这些行都在不清除屏幕的情况下打印。导致问题的特定行是rllib_trainer = PPOTrainer(config=config)
. 如果我删除该行,小部件将继续工作。但是......创建像这样的 RL 训练器是本教程的重点。
我不是 Ray/RLlib 的专家。初始化培训师后如何保持小部件正常工作?