执行配置#
Ray Data 提供了许多配置选项,用于控制 Ray Data 的 Dataset 在 Ray Core 集群自身配置之上的各种执行方面。
Ray Data 的配置主要通过 ExecutionOptions 或 DataContext 进行控制。
本指南介绍了其中最重要的配置及其使用场景。
配置 ExecutionOptions#
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_limits和exclude_resources。
locality_with_output:将其设置为优先在与输出节点(驱动执行的节点)相同的节点上运行任务。也可以设置为节点 ID 列表,将输出分散到这些节点上。此参数适用于map()和streaming_split()操作。如果您知道您正在消费者节点上直接使用输出数据(例如,用于 ML 训练摄取),此设置非常有用。但是,其他用例可能会在此设置下产生性能损失。默认情况下禁用。preserve_order:将其设置为在流式执行器下的操作符处理的块之间保留顺序。默认情况下禁用。actor_locality_enabled:是否启用面向 actor 的本地性感知任务调度。此参数适用于有状态的map()操作。如果您知道您正在消费者节点上直接使用输出数据(例如,用于 ML 批推理),此设置非常有用。但是,其他用例可能会在此设置下产生性能损失。默认情况下禁用。verbose_progress:是否单独报告每个操作符的进度。默认情况下,仅报告 AllToAll 操作符和全局进度。此选项对于性能调试很有用。默认情况下启用。
有关上述每个选项的更多详细信息,请参阅 ExecutionOptions。
配置 DataContext#
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。