执行配置#

Ray Data 提供了许多配置,用于控制 Ray Dataset 执行的各个方面。您可以通过使用 ExecutionOptionsDataContext 来修改这些配置。本指南描述了这些配置中最重要的部分以及何时使用它们。

配置 ExecutionOptions#

The ExecutionOptions 类用于在 Ray Dataset 执行期间配置选项。要使用它,请修改当前 DataContext 对象的 execution_options 属性。例如:

ctx = ray.data.DataContext.get_current()
ctx.execution_options.verbose_progress = True
  • resource_limits: 在执行期间设置资源使用的软限制。例如,如果代码的其他部分需要一定量的资源,您可能希望限制 Ray Data 使用的资源量。默认情况下自动检测。

  • exclude_resources: 从 Ray Data 中排除的资源数量。如果你在同一集群上运行其他工作负载,请设置此项。注意:

    • 如果你在使用 Ray Data 和 Ray Train,训练资源会自动排除。否则,默认关闭。

    • 对于每种资源类型,您不能同时设置 resource_limitsexclude_resources

  • locality_with_output: 设置此项以优先在输出节点(驱动执行的节点)所在的同一节点上运行任务。它也可以设置为一个节点ID列表,以在这些节点之间分散输出。此参数适用于 map()streaming_split() 操作。如果您知道直接在消费者节点上消费输出数据(例如用于机器学习训练摄取),此设置非常有用。然而,其他用例可能会在此设置下导致性能损失。默认关闭。

  • preserve_order: 设置此项以保留流执行器下操作符处理块之间的顺序。默认关闭。

  • actor_locality_enabled: 是否启用本地感知任务分派给执行者。此参数适用于有状态的 map() 操作。如果你知道你将直接在消费者节点上使用输出数据(例如用于机器学习批量推理),此设置很有用。然而,其他使用场景可能会在此设置下导致性能下降。默认关闭。

  • verbose_progress: 是否为每个操作符单独报告进度。默认情况下,仅报告 AllToAll 操作符和全局进度。此选项对于性能调试很有用。默认开启。

有关上述每个选项的更多详细信息,请参阅 ExecutionOptions

配置 DataContext#

The DataContext 类用于配置 Ray Data 使用中的更多通用选项,例如可观察性/日志记录选项、错误处理/重试行为以及内部数据格式。要使用它,请修改当前 DataContext 对象中的属性。例如:

ctx = ray.data.DataContext.get_current()
ctx.verbose_stats_logs = True

DataContext 中的许多选项是为高级用例或调试而设计的,大多数用户不需要修改它们。然而,一些最重要的选项包括:

  • max_errored_blocks: 允许出错的块的最大数量,如果为负数则表示无限制。此选项允许在块处理任务中出现应用程序级别的异常。这些异常可能是由UDF(例如,由于数据样本损坏)或IO错误引起的。失败块中的数据将被丢弃。此选项可用于防止由于少量坏块而导致长时间运行的作业失败。默认情况下,不允许重试。

  • write_file_retry_on_errors: 这是一个错误消息子字符串列表,当写入文件时遇到这些错误消息应触发重试。这对于处理写入远程存储系统时的瞬态错误非常有用。默认情况下,重试常见的瞬态 AWS S3 错误。

  • verbose_stats_logs: 统计日志是否应详细。这包括统计输出中的 extra_metrics 等字段,这些字段默认情况下被排除。默认关闭。

  • log_internal_stack_trace_to_stdout:在记录到 stdout 时是否包含 Ray Data/Ray Core 代码的内部堆栈帧。完整的堆栈跟踪始终写入 Ray Data 日志文件。默认关闭。

  • raise_original_map_exception: 是否抛出在map UDF中遇到的原始异常,而不是将其包装在 UserCodeException 中。

有关上述每个选项的更多详细信息,请参阅 DataContext