You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ray Data读取未并行运行咨询:S3 CSV读取缓慢、进程休眠

Ray Data读取S3 CSV进程休眠、速度缓慢的解决思路

核心原因

Ray Data默认的并行度、资源配置不一定适配64核实例,加上S3读取属于IO密集型场景,容易出现进程因等待IO休眠的情况;另外分区过滤逻辑、文件分布也会影响并行效率,导致进度时断时续。

具体调整方案

  • 强制设置并行度与资源分配
    Ray Data默认会自动适配资源,但可以手动指定参数强制利用多核:

    dataset = ray.data.read_csv(
        s3_bucket_name+'/'+s3_folder_path_prefix+'/',
        partition_filter=partition_filter,
        filesystem=s3,
        convert_options=convert_options,
        num_cpus=0.5,  # IO密集型任务可设小于1,让更多任务并行
        parallelism=64  # 匹配你的64核CPU,强制拉满并行度
    )
    

    要是CPU还有剩余,可尝试调小num_cpus(比如0.25),启动更多读取任务。

  • 优化S3读取配置
    S3的IO瓶颈是关键,调整以下参数提升效率:

    • 增大块大小,减少IO请求次数:
      from ray.data.datasource import S3FileSystem
      s3 = S3FileSystem(block_size=256 * 1024 * 1024)  # 设为256MB,默认128MB
      
    • 增大S3连接池,避免连接不足导致等待:
      import boto3
      from ray.data.datasource import S3FileSystem
      session = boto3.Session()
      config = session._session.get_config()
      config['s3']['max_pool_connections'] = 100  # 默认是10,调大到100
      s3 = S3FileSystem(session=session)
      
  • 检查分区过滤逻辑
    如果partition_filter逻辑复杂,会拖慢元数据扫描速度,导致并行任务启动慢。先简化过滤逻辑试试,或者提前把数据预分区,减少需要扫描的文件数量。

  • 确认Ray全局资源配置
    启动Ray时要明确指定CPU核心数,避免资源限制:

    ray start --head --num-cpus=64
    

    用代码启动的话:

    ray.init(num_cpus=64)
    

额外排查点

  • 查看S3文件分布:如果是少数大文件,Ray没法充分并行;如果是大量小文件,会增加调度开销。建议把文件合并到100-500MB左右的大小。
  • 打开Ray Dashboard(http://localhost:8265)查看任务队列和资源使用,确认是不是有任务阻塞或者资源分配不均。
  • 先去掉partition_filter测试速度,排查是不是过滤逻辑拖慢了整体流程。

内容的提问来源于stack exchange,提问作者Dhruva Kartik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:42:44