如何解决如何使ray.tune.run具有可复制性?
我正在使用Tune class-based Trainable API。查看代码示例:
from ray import tune
import numpy as np
np.random.seed(42)
# first run
tune.run(tune.Trainable,...)
# second run,expecting same result
np.random.seed(42)
tune.run(tune.Trainable,...)
问题在于tune.run
的结果仍然不同,可能的原因是每个射线演员仍然具有不同的种子。
问题:如何使ray.tune.run
具有可复制性?
解决方法
(此答案侧重于类API和ray版本0.8.7,尽管随机种子逻辑对于功能性API基本相同)
不确定性结果有两个主要来源。
1。搜索算法
每个search algorithm都支持随机种子,尽管其接口可能有所不同。这将初始化超参数空间采样。
例如,如果您使用的是AxSearch
,则它看起来像这样:
from ax.service.ax_client import AxClient
from ray.tune.suggest.ax import AxSearch
client = AxClient(...,random_seed=42)
client.create_experiment(...)
algo = AxSearch(client)
2。可训练的API
这是在工作进程之间分配的,需要在tune.Trainable
类内进行播种。根据您实现的tune.Trainable.train
逻辑,您需要在numpy
内通过将{{1 }} tf
的参数。
以下代码基于处理相同问题的RLLib PR5197:
查看示例:
tune.Trainable.setup
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。