ray.rllib.algorithms.algorithm_config.AlgorithmConfig.离线数据#
- AlgorithmConfig.offline_data(*, input_: str | ~typing.Callable[[~ray.rllib.offline.io_context.IOContext], ~ray.rllib.offline.input_reader.InputReader] | None = <ray.rllib.utils.from_config._NotProvided object>, input_read_method: str | ~typing.Callable | None = <ray.rllib.utils.from_config._NotProvided object>, input_read_method_kwargs: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, input_read_schema: ~typing.Dict[str, str] | None = <ray.rllib.utils.from_config._NotProvided object>, input_read_episodes: bool | None = <ray.rllib.utils.from_config._NotProvided object>, input_read_sample_batches: bool | None = <ray.rllib.utils.from_config._NotProvided object>, input_filesystem: str | None = <ray.rllib.utils.from_config._NotProvided object>, input_filesystem_kwargs: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, input_compress_columns: ~typing.List[str] | None = <ray.rllib.utils.from_config._NotProvided object>, map_batches_kwargs: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, iter_batches_kwargs: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, prelearner_class: ~typing.Type | None = <ray.rllib.utils.from_config._NotProvided object>, prelearner_module_synch_period: int | None = <ray.rllib.utils.from_config._NotProvided object>, dataset_num_iters_per_learner: int | None = <ray.rllib.utils.from_config._NotProvided object>, input_config: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, actions_in_input_normalized: bool | None = <ray.rllib.utils.from_config._NotProvided object>, postprocess_inputs: bool | None = <ray.rllib.utils.from_config._NotProvided object>, shuffle_buffer_size: int | None = <ray.rllib.utils.from_config._NotProvided object>, output: str | None = <ray.rllib.utils.from_config._NotProvided object>, output_config: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, output_compress_columns: ~typing.List[str] | None = <ray.rllib.utils.from_config._NotProvided object>, output_max_file_size: float | None = <ray.rllib.utils.from_config._NotProvided object>, output_max_rows_per_file: int | None = <ray.rllib.utils.from_config._NotProvided object>, output_write_method: str | None = <ray.rllib.utils.from_config._NotProvided object>, output_write_method_kwargs: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, output_filesystem: str | None = <ray.rllib.utils.from_config._NotProvided object>, output_filesystem_kwargs: ~typing.Dict | None = <ray.rllib.utils.from_config._NotProvided object>, output_write_episodes: bool | None = <ray.rllib.utils.from_config._NotProvided object>, offline_sampling: str | None = <ray.rllib.utils.from_config._NotProvided object>) AlgorithmConfig [源代码]#
设置配置的离线数据设置。
- 参数:
input – 指定如何生成经验: - “sampler”:通过在线(环境)模拟生成经验(默认)。 - 本地目录或文件全局表达式(例如,”/tmp/.json”)。 - 单个文件路径/URI 列表(例如,[“/tmp/1.json”, “s3://bucket/2.json”])。 - 带有字符串键和采样概率作为值的字典(例如,{“sampler”: 0.4, “/tmp/.json”: 0.4, “s3://bucket/expert.json”: 0.2})。 - 一个可调用对象,它以
IOContext
对象作为唯一参数并返回一个 ray.rllib.offline.InputReader。 - 一个字符串键,索引一个带有 tune.registry.register_input 的可调用对象。input_read_method –
ray.data.Dataset
的read
方法用于从input_
读取离线数据。默认情况下,对于 Parquet 文件使用read_parquet
。更多关于ray.data
中可用的读取方法的信息,请参见 https://docs.ray.io/en/latest/data/api/input_output.html。input_read_method_kwargs –
input_read_method
的kwargs
。这些将被传递到读取方法中而不进行检查。如果没有传递参数,则使用默认参数{'override_num_blocks': max(num_learners * 2, 2)}
。使用这些kwargs
与map_batches_kwargs
和iter_batches_kwargs
一起调整数据管道的性能。input_read_schema – 用于将离线数据转换为片段的表格模式。此模式将离线数据列映射到
ray.rllib.core.columns. Columns
:{Columns.OBS: ‘o_t’, Columns.ACTIONS: ‘a_t’, …}。数据集中未通过此模式映射的列将被排序到片段的extra_model_outputs
中。如果没有传递模式,则使用默认模式ray.rllib.offline.offline_data.SCHEMA
。如果您的数据集已经包含此模式中的名称,则不需要input_read_schema
。input_read_episodes – 无论离线数据是否已经存储在 RLlib 的
EpisodeType
格式中,即ray.rllib.env.SingleAgentEpisode`(多智能体计划中但尚未支持)。直接读取剧集可以避免额外的转换步骤,并且通常更快,因此当您的应用程序完全在 RLlib 的模式内时,这是推荐的格式。另一种格式是列式格式,并且与使用的 RL 框架无关。如果您不确定何时使用数据或在哪个 RL 框架中使用数据,请使用后一种格式。默认是读取列数据,即 `False
。input_read_episodes
和inpuit_read_sample_batches
不能同时为True
。另请参阅output_write_episodes
以定义记录时的输出数据格式。input_read_sample_batches – 离线数据是否存储在RLlib的旧堆栈
SampleBatch
类型中。这通常是使用RLlib以JSON行格式记录的旧数据的情形。读取SampleBatch
数据需要额外的转换,并且可能无法将数据中包含在不同SampleBatch
中的片段拼接成完整的片段。如果可能,避免读取SampleBatch
并将它们以受控的形式转换为RLlib的EpisodeType`(即 `SingleAgentEpisode
或MultiAgentEpisode
)。默认值为False
。input_read_episodes
和inpuit_read_sample_batches
不能同时为True
。input_filesystem – 一个云文件系统,用于在读取经验时处理对云存储的访问。应为
gcs
表示 Google Cloud Storage,s3
表示 AWS S3 存储桶,或abs
表示 Azure Blob 存储。input_filesystem_kwargs – 一个包含
input_filesystem
指定的文件系统 kwargs 的字典。对于 GCS,请参阅gcsfs.GCSFilesystem
;对于 S3,请参阅pyarrow.fs.S3FileSystem
;对于 ABS 文件系统参数,请参阅ablfs.AzureBlobFilesystem
。input_compress_columns – 输入数据中哪些输入列使用LZ4进行压缩。如果数据存储在
RLlib
的SingleAgentEpisode
中(MultiAgentEpisode
尚不支持)。注意,rllib.core.columns.Columns.OBS
也会尝试解压缩rllib.core.columns.Columns.NEXT_OBS
。map_batches_kwargs –
map_batches
方法的kwargs
。这些将在不检查的情况下传递给ray.data.Dataset.map_batches
方法。如果没有传递参数,则使用默认参数{ 'concurrency': max(2, num_learners), 'zero_copy_batch': True}
。将这些kwargs
与input_read_method_kwargs
和iter_batches_kwargs
一起使用,以调整数据管道的性能。iter_batches_kwargs –
iter_batches
方法的kwargs
。这些参数将在不进行检查的情况下采样时传递给ray.data.Dataset.iter_batches
方法。如果没有传递任何参数,则使用默认参数{ 'prefetch_batches': 2, 'local_buffer_shuffle_size': train_batch_size_per_learner * 4}
。将这些kwargs
与input_read_method_kwargs
和map_batches_kwargs
一起使用,以调整数据管道的性能。prelearner_class – 一个可选的
OfflinePreLearner
类,用于在OfflineData
类中通过ray.data.map_batches
转换数据批次,将数据从列转换为可用于Learner
的update
方法的批次。如果需要对您的数据或损失进行特定的进一步转换,请重写OfflinePreLearner
类并将您的派生类传递到这里。默认值为None
,使用在ray.rllib.offline.offline_prelearner
中定义的基本OfflinePreLearner
。prelearner_module_synch_period – 在
PreLearner
持有的RLModule
应该同步权重的周期(转换的批次数量)之后。PreLearner
用于为学习者预处理批次。这个值越高,PreLearner
的模块将越偏离策略。值太小会迫使PreLearner
更频繁地同步,从而可能会减慢数据管道。OfflinePreLearner
选择的默认值是 10。dataset_num_iters_per_learner – 在每次训练迭代中,每个学习者运行的迭代次数。如果为
None
,则每个学习者在其数据块(数据集被划分为与学习者数量相同的块)上运行一个完整的 epoch。默认值为None
。input_config – 描述读取输入设置的参数。如果输入是
sample
,这将是环境配置,例如env_name
和env_config
等。更多信息请参见EnvContext
。如果输入是dataset
,这将是例如format
、path
。actions_in_input_normalized – 是的,如果给定离线“输入”中的动作已经归一化(介于 -1.0 和 1.0 之间)。当离线文件由另一个 RLlib 算法(例如 PPO 或 SAC)生成,并且“normalize_actions”设置为 True 时,通常就是这种情况。
postprocess_inputs – 是否对来自离线输入的轨迹片段运行 postprocess_trajectory()。请注意,后处理将使用*当前*策略进行,而不是*行为*策略,这对于同策略算法通常是不希望的。
shuffle_buffer_size – 如果为正,输入批次将通过此批次数量的滑动窗口缓冲区进行洗牌。如果输入数据的顺序不够随机,请使用此选项。输入将延迟,直到洗牌缓冲区被填满。
output – 指定经验应保存的位置: - None:不保存任何经验 - “logdir” 保存到代理日志目录 - 保存到自定义输出目录的路径/URI(例如,”s3://bckt/”) - 返回 rllib.offline.OutputWriter 的函数
output_config – 可从 IOContext 访问的参数,用于配置自定义输出。
output_compress_columns – 在输出数据中,哪些样本批次列需要使用LZ4压缩。注意,
rllib.core.columns.Columns.OBS
也会压缩rllib.core.columns.Columns.NEXT_OBS
。output_max_file_size – 滚动到新文件前的最大输出文件大小(以字节为单位)。
output_max_rows_per_file – 滚动到新文件前的最大输出行数。
output_write_method – 为
ray.data.Dataset
编写write
方法,将离线数据写入output
。默认情况下,对于 Parquet 文件使用read_parquet
。有关ray.data
中可用读取方法的更多信息,请参见 https://docs.ray.io/en/latest/data/api/input_output.html。output_write_method_kwargs –
output_write_method
的kwargs
。这些将被不加检查地传递到写入方法中。output_filesystem – 一个云文件系统,用于在编写体验时处理对云存储的访问。应为
gcs
表示 Google Cloud Storage,s3
表示 AWS S3 存储桶,或abs
表示 Azure Blob Storage。output_filesystem_kwargs – 一个包含
output_filesystem
指定的文件系统的 kwargs 的字典。对于 GCS,请参见gcsfs.GCSFilesystem
;对于 S3,请参见pyarrow.fs.S3FileSystem
;对于 ABS 文件系统参数,请参见ablfs.AzureBlobFilesystem
。offline_sampling – 算法是否通过读取离线数据进行采样。如果为 True,EnvRunners 将不会根据工作线程中的子环境数量(没有子环境存在)限制在同一
sample()
调用中收集的批次数量。
- 返回:
这个更新的 AlgorithmConfig 对象。