- 总内存: 2.0TB
- 已用内存: 215GB
- 可用内存: 1.7TB
- 当前运行任务数: 3个
- 配置值: 64GB(共享内存,mmap)
- 实际占用: 取决于实际存储的对象数量
- 备注: Ray对象存储使用共享内存(mmap),可能会spill到磁盘
根据进程监控(PID 1056441等,运行了约11小时):
-
ReplayBufferActor: ~27GB
- 存储轨迹数据
- 容量:REPLAY_CAPACITY = 50,000
- 随着训练进行,内存占用会增长
-
TrainerActor: ~12.4GB
- 模型参数
- 优化器状态
- DeepSpeed ZeRO-2分片
-
InferenceActor: ~1.5GB
- 推理模型副本
- RolloutWorkerActor: 16个,每个约1.7GB ≈ 27GB
- EvaluationWorkerActor: 32个,每个约0.75GB ≈ 24GB
- Workers总计: ~51GB
- 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)
- 单任务: 160GB
- 6个任务: 6 × 160GB = 960GB ≈ 0.94TB
- 系统可用内存: 1.7TB
- 6个任务需求: 0.94TB
- 余量: 1.7TB - 0.94TB = 0.76TB(约45%余量)
理由:
- 内存充足:系统有1.7TB可用内存,6个任务约需0.94TB,还有45%余量
- Ray对象存储使用共享内存(mmap),实际占用可能小于配置值
- 即使所有任务都达到峰值内存占用,仍有足够余量
-
监控内存使用:
- 定期检查
free -h和实际进程内存占用 - 如果内存使用超过80%,考虑减少并发任务数
- 定期检查
-
Ray对象存储spill:
- 即使设置了64GB,如果实际需求更大,仍可能spill到磁盘
- 建议监控spill日志,如果频繁spill,考虑增加到128GB
-
ReplayBuffer增长:
- ReplayBuffer内存会随着训练进行而增长
- 如果内存紧张,可以考虑减少REPLAY_CAPACITY
-
建议配置:
- 如果系统内存充足(2TB),64GB对象存储是合理的
- 如果想更保守,可以设置为48GB或56GB
- 如果内存紧张,可以设置为32GB(但可能仍会spill)
对于6个任务同时运行:
object_store_size_gb = 64 # 推荐值,平衡性能和内存占用如果需要更保守:
object_store_size_gb = 48 # 保守值,减少内存占用如果系统内存非常充足,想要更好性能:
object_store_size_gb = 128 # 激进值,减少spill,但内存占用更大