RLlib,调参的基本概念(Tune)
2023-12-28 12:06:15
Ray Tune 的关键概念
Tune 有六个需要理解的关键组件。
- 首先,您定义要在搜索空间中调整的超参数,并将它们传递到指定要调整的目标的可训练文件中。
- 然后,您选择一种搜索算法来有效优化参数,并可以选择使用调度程序来提前停止搜索并加快实验速度。
- 您的可训练、搜索算法和调度程序与其他配置一起传递到 Tuner,它运行您的实验并创建试验。
- Tuner 返回一个 ResultGrid 来检查您的实验结果。
Trainables 训练对象
简而言之,Trainable 是一个可以传递到 Tune 运行中的对象。 Ray Tune 有两种定义可训练的方法,即函数 API 和类 API。两者都是定义可训练的有效方法,但通常建议使用 Function API,并在本指南的其余部分中使用。
假设我们想要优化一个简单的目标函数,例如 a (x ** 2) + b,其中 a 和 b 是我们想要调整以最小化目标的超参数。由于目标也有一个变量 x,我们需要测试 x 的不同值。给定 a、b 和 x 的具体选择,我们可以评估目标函数并获得最小化分数。
可训练对象:函数
from ray import train
def objective(x, a, b): # Define an objective function.
return a * (x**0.5) + b
def trainable(config): # Pass a "config" dictionary into your trainable.
for x in range(20): # "Train" for 20 iterations and compute intermediate scores.
score = objective(x, config["a"], config["b"])
train.report({
"score": score}) # Send the score to Tune.
可训练对象:类
from ray import tune
def objective(x, a, b):
return a * (x**2) + b
class Trainable(tune.Trainable):
def setup(self, config):
# config (dict): A dict of hyperparameters
self.x = 0
self.a = config["a"]
self.b = config["b"]
def step(self): # This is called iteratively.
score = objective(self.x, self.a, self.b)
self.x += 1
return {
"score": score}
文章来源:https://blog.csdn.net/Kiek17/article/details/135256312
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!