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_methodray.data.Datasetread 方法用于从 input_ 读取离线数据。默认情况下,对于 Parquet 文件使用 read_parquet。更多关于 ray.data 中可用的读取方法的信息,请参见 https://docs.ray.io/en/latest/data/api/input_output.html

  • input_read_method_kwargsinput_read_methodkwargs。这些将被传递到读取方法中而不进行检查。如果没有传递参数,则使用默认参数 {'override_num_blocks': max(num_learners * 2, 2)}。使用这些 kwargsmap_batches_kwargsiter_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 框架中使用数据,请使用后一种格式。默认是读取列数据,即 `Falseinput_read_episodesinpuit_read_sample_batches 不能同时为 True。另请参阅 output_write_episodes 以定义记录时的输出数据格式。

  • input_read_sample_batches – 离线数据是否存储在RLlib的旧堆栈 SampleBatch 类型中。这通常是使用RLlib以JSON行格式记录的旧数据的情形。读取 SampleBatch 数据需要额外的转换,并且可能无法将数据中包含在不同 SampleBatch 中的片段拼接成完整的片段。如果可能,避免读取 SampleBatch 并将它们以受控的形式转换为RLlib的 EpisodeType`(即 `SingleAgentEpisodeMultiAgentEpisode)。默认值为 Falseinput_read_episodesinpuit_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进行压缩。如果数据存储在 RLlibSingleAgentEpisode 中(MultiAgentEpisode 尚不支持)。注意,rllib.core.columns.Columns.OBS 也会尝试解压缩 rllib.core.columns.Columns.NEXT_OBS

  • map_batches_kwargsmap_batches 方法的 kwargs。这些将在不检查的情况下传递给 ray.data.Dataset.map_batches 方法。如果没有传递参数,则使用默认参数 { 'concurrency': max(2, num_learners), 'zero_copy_batch': True}。将这些 kwargsinput_read_method_kwargsiter_batches_kwargs 一起使用,以调整数据管道的性能。

  • iter_batches_kwargsiter_batches 方法的 kwargs。这些参数将在不进行检查的情况下采样时传递给 ray.data.Dataset.iter_batches 方法。如果没有传递任何参数,则使用默认参数 { 'prefetch_batches': 2, 'local_buffer_shuffle_size': train_batch_size_per_learner * 4}。将这些 kwargsinput_read_method_kwargsmap_batches_kwargs 一起使用,以调整数据管道的性能。

  • prelearner_class – 一个可选的 OfflinePreLearner 类,用于在 OfflineData 类中通过 ray.data.map_batches 转换数据批次,将数据从列转换为可用于 Learnerupdate 方法的批次。如果需要对您的数据或损失进行特定的进一步转换,请重写 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_nameenv_config 等。更多信息请参见 EnvContext。如果输入是 dataset,这将是例如 formatpath

  • 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_kwargsoutput_write_methodkwargs。这些将被不加检查地传递到写入方法中。

  • 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 对象。