Skip to content

Latest commit

 

History

History
118 lines (89 loc) · 3.32 KB

File metadata and controls

118 lines (89 loc) · 3.32 KB

6个任务同时运行的内存分析

当前系统状态

  • 总内存: 2.0TB
  • 已用内存: 215GB
  • 可用内存: 1.7TB
  • 当前运行任务数: 3个

单个任务内存占用分析(基于长时间运行的任务)

Ray对象存储(如果设置为64GB)

  • 配置值: 64GB(共享内存,mmap)
  • 实际占用: 取决于实际存储的对象数量
  • 备注: Ray对象存储使用共享内存(mmap),可能会spill到磁盘

核心Actor内存占用

根据进程监控(PID 1056441等,运行了约11小时):

  1. ReplayBufferActor: ~27GB

    • 存储轨迹数据
    • 容量:REPLAY_CAPACITY = 50,000
    • 随着训练进行,内存占用会增长
  2. TrainerActor: ~12.4GB

    • 模型参数
    • 优化器状态
    • DeepSpeed ZeRO-2分片
  3. InferenceActor: ~1.5GB

    • 推理模型副本

Worker进程内存占用

  • RolloutWorkerActor: 16个,每个约1.7GB ≈ 27GB
  • EvaluationWorkerActor: 32个,每个约0.75GB ≈ 24GB
  • Workers总计: ~51GB

Ray系统进程

  • raylet: ~2GB
  • gcs_server: ~1.3GB
  • 其他进程: ~1GB
  • 系统进程总计: ~4GB

主进程

  • Python主进程: ~1GB

单个任务总内存占用估算

组件 内存占用
Ray对象存储(64GB配置) 64GB(共享内存)
ReplayBufferActor 27GB
TrainerActor 12GB
InferenceActor 1.5GB
Workers (48个) 51GB
Ray系统进程 4GB
主进程 1GB
总计 ~160GB

注意:

  • Ray对象存储使用共享内存(mmap),实际占用取决于使用量
  • 内存占用会随着训练进行而增长(特别是ReplayBuffer)

6个任务的内存需求

保守估算(考虑增长)

  • 单任务: 160GB
  • 6个任务: 6 × 160GB = 960GB ≈ 0.94TB

实际情况

  • 系统可用内存: 1.7TB
  • 6个任务需求: 0.94TB
  • 余量: 1.7TB - 0.94TB = 0.76TB(约45%余量)

结论

✅ 可以运行6个任务(每个64GB对象存储)

理由:

  1. 内存充足:系统有1.7TB可用内存,6个任务约需0.94TB,还有45%余量
  2. Ray对象存储使用共享内存(mmap),实际占用可能小于配置值
  3. 即使所有任务都达到峰值内存占用,仍有足够余量

⚠️ 注意事项

  1. 监控内存使用

    • 定期检查 free -h 和实际进程内存占用
    • 如果内存使用超过80%,考虑减少并发任务数
  2. Ray对象存储spill

    • 即使设置了64GB,如果实际需求更大,仍可能spill到磁盘
    • 建议监控spill日志,如果频繁spill,考虑增加到128GB
  3. ReplayBuffer增长

    • ReplayBuffer内存会随着训练进行而增长
    • 如果内存紧张,可以考虑减少REPLAY_CAPACITY
  4. 建议配置

    • 如果系统内存充足(2TB),64GB对象存储是合理的
    • 如果想更保守,可以设置为48GB或56GB
    • 如果内存紧张,可以设置为32GB(但可能仍会spill)

推荐配置

对于6个任务同时运行:

object_store_size_gb = 64  # 推荐值,平衡性能和内存占用

如果需要更保守:

object_store_size_gb = 48  # 保守值,减少内存占用

如果系统内存非常充足,想要更好性能:

object_store_size_gb = 128  # 激进值,减少spill,但内存占用更大