Ray 技术深入解析:资源管理、调度与应用部署
1. 自定义资源管理
Ray 能够像管理内存和 CPU 资源一样,跟踪和分配自定义资源。在启动工作进程时,它需要了解所有可用资源。对于手动启动的工作进程,可以使用 --resources
参数指定自定义资源。例如,在混合架构集群中,可在 x86 节点添加 --resources={"x86": "1"}
,在 ARM 节点添加 --resources={"arm64":"1"}
。这些资源不限于硬件,若因许可问题某些库或数据集仅在部分节点可用,也可采用相同技术。
除了水平扩展,Ray 还支持垂直扩展,即通过使用资源更多的机器为每个进程获取更多资源。可以向 Ray 请求不同数量的内存、CPU 核心甚至 GPU。默认的 Ray 配置仅支持相同大小的机器,但可以创建多种节点类型用于垂直扩展。
2. 自动扩展器(Autoscaler)
自动扩展器是 Ray 的重要组件,负责管理工作进程,具体有以下三个功能:
- 启动新工作进程 :根据需求启动,包括上传用户定义的文件或目录,并在启动的工作进程上运行初始化/设置/启动命令。
- 终止工作节点 :当节点空闲、启动/初始化失败或节点配置更改时执行。
- 重启工作进程 :当运行工作进程的 Raylet 崩溃或工作进程的设置/启动/文件挂载发生变化时执行。
自动扩展器会在以下事件发生时创建新节点:
-