Tune概述

Ray----Tune(2):Tune的用户指南Tune调度集群中进行多次实验。 每个试验都运行一个用户定义的Python函数或类,并通过Tune的Variant Generator的配置变量或用户指定的搜索算法进行参数化。 试验由试验调度员安排和管理。
关于实验调度搜索算法请参考官网。

导包和初始化Ray

import ray
import ray.tune as tune
# 启动Ray
ray.init()

实验配置

本节将介绍修改代码以运行Tune所需的主要步骤:使用Training API并执行Tune实验。如需看源码实例,点击

Training API

可以使用基于功能的API( the function-based API)或Trainable API进行训练。
Python函数需要具有以下签名:

def trainable(config, reporter):
    """
    Args:
        config (dict):搜索算法或者 variant generation.
        reporter (Reporter): Handle to report intermediate metrics to Tune.
    """

    while True:
        # ...
        reporter(**kwargs)

reporter将允许您报告用于安排,搜索或提前停止的指标。
Tune将在Ray actor进程中的单独线程上运行此函数。 请注意,此API不是可检查的,因为该线程永远不会将控制权返回给其调用者。
注意:如果你有一个想要训练的lambda函数,你需要先注册函数:tune.register_trainable(“lambda_id”,lambda x:...)。 然后,您可以使用lambda_id代替my_trainable

传递给Tune的Python类需要子类ray.tune.Trainable。除报告的指标外,Trainable和基于功能的API都将具有自动填充指标。

启动实验

Tune提供了一个generates并运行试验的run功能。

 ray.tune.run(run_or_experiment, name=None, stop=None, config=None, resources_per_trial=None, num_samples=1,
 		 local_dir=None, upload_dir=None, trial_name_creator=None, loggers=None, sync_function=None, 
 		 checkpoint_freq=0, checkpoint_at_end=False, export_formats=None, max_failures=3, restore=None,
 		  search_alg=None, scheduler=None, with_server=False, server_port=4321, verbose=2, resume=False, 
 		  queue_trials=False, reuse_actors=False, trial_executor=None, raise_on_failed_trial=True)

执行训练。

参数:
		run_or_experiment (function|class|str|Experiment) -如果是function | class | str,那么这就是要训练的算法或模型。 这可以指内置算法的名称(例如RLLib的DQN或PPO),用户定义的Trainable函数或类,或者在tune注册表中注册的Trainable函数或类的字符串标识符。 如果是Experiment,那么Tune将根据Experiment.spec执行训练。

相关文章: