Ray Dashboard#
Ray 提供了基于 Web 的仪表板,用于监控和调试 Ray 应用程序。系统状态的可视化表示,使用户能够跟踪应用程序的性能并排除故障。
设置仪表板#
要访问仪表板,请使用 ray[default] 或包含 Ray Dashboard 组件的 其他安装命令。例如:
pip install -U "ray[default]"
当您在笔记本电脑上启动单节点 Ray 集群时,可以使用 Ray 初始化时打印的 URL(默认 URL 为 https://:8265)或 ray.init 返回的上下文对象来访问仪表板。
import ray
context = ray.init()
print(context.dashboard_url)
127.0.0.1:8265
INFO worker.py:1487 -- Connected to Ray cluster. View the dashboard at 127.0.0.1:8265.
注意
如果您在 Docker 容器中启动 Ray,则 --dashboard-host 是必需的参数。例如:ray start --head --dashboard-host=0.0.0.0。
当您使用 VM 集群启动器、KubeRay 算子 或手动配置启动远程 Ray 集群时,Ray Dashboard 会在 Head 节点上启动,但仪表板端口可能未公开。有关如何从 Head 节点外部查看仪表板的说明,请参阅 配置仪表板。
注意
使用 Ray Dashboard 时,强烈建议同时设置 Prometheus 和 Grafana。它们对于 Metrics View 等关键功能至关重要。有关如何将 Prometheus 和 Grafana 与 Ray Dashboard 集成的说明,请参阅 配置和管理仪表板。
Jobs 视图#
Jobs 视图允许您监控在 Ray 集群上运行的各种作业。 Ray Job 是使用 Ray API(例如 ray.init)的 Ray 工作负载。建议通过 Ray Job API 将作业提交到集群。您也可以交互式地运行 Ray 作业(例如,通过在 Head 节点内执行 Python 脚本)。
Job 视图显示了活动、已完成和失败的作业列表,点击 ID 可以查看有关该作业的详细信息。有关 Ray 作业的更多信息,请参阅 Ray Job 概述部分。
作业分析#
您可以通过单击“Stack Trace”或“CPU Flame Graph”操作来分析 Ray 作业。有关更多详细信息,请参阅 Profiling。
任务和 Actor 细分#
Jobs 视图按状态细分了任务和 Actor。默认情况下,任务和 Actor 是分组和嵌套的。您可以通过单击展开按钮来查看嵌套条目。
任务和 Actor 是使用以下标准进行分组和嵌套的:
所有任务和 Actor 都被分组在一起。通过展开相应的行来查看单个条目。
任务按其
name属性分组(例如task.options(name="<name_here>").remote())。子任务(嵌套任务)嵌套在其父任务的行下。
Actor 按其类名分组。
子 Actor(在 Actor 中创建的 Actor)嵌套在其父 Actor 的行下。
Actor 任务(Actor 中的远程方法)嵌套在相应 Actor 方法的 Actor 下。
注意
Job 详情页面最多只能显示或检索每个 Job 的 10K 个任务。对于超过 10K 个任务的 Job,超出 10K 限制的任务部分将无法计数。不可计数任务的数量可从任务细分中获得。
任务时间线#
首先,单击下载按钮下载 chrome 跟踪文件。或者,您可以使用 CLI 或 SDK 导出跟踪文件。
其次,使用 chrome://tracing 或 Perfetto UI 等工具,然后拖放下载的 chrome 跟踪文件。我们将使用 Perfetto,因为它是在可视化 chrome 跟踪文件方面推荐的方法。
在 Ray 任务和 Actor 的时间线可视化中,有 Node 行(硬件)和 Worker 行(进程)。每行 Worker 显示了一个随时间发生的该 Worker 上的任务事件列表(例如,任务调度、任务运行、输入/输出反序列化等)。
Ray 状态#
Jobs 视图显示 Ray 集群的状态。此信息是 ray status CLI 命令的输出。
左侧面板显示自动扩展状态,包括待处理、活动和失败的节点。右侧面板显示资源需求,即当前无法调度到集群的资源。此页面对于调试资源死锁或调度缓慢非常有用。
注意
输出显示了跨集群的聚合信息(而不是按作业)。如果您运行多个作业,某些需求可能来自其他作业。
任务、Actor 和 Placement Group 表#
仪表板显示了作业的任务、Actor 和 Placement Group 状态的表格。此信息是 Ray State APIs 的输出。
您可以展开表格以查看每个任务、Actor 和 Placement Group 的列表。
Serve 视图#
查看通用的 Serve 配置、Serve 应用程序列表,以及(如果您配置了 Grafana 和 Prometheus)Serve 应用程序的高级指标。单击 Serve 应用程序的名称即可进入 Serve 应用程序详情页面。
Serve 应用程序详情页面#
查看 Serve 应用程序的配置和元数据,以及 Serve deployments 和 replicas 的列表。单击部署的展开按钮以查看 replicas。
每个部署都有两个可用操作。您可以查看部署配置,并且(如果您配置了 Grafana 和 Prometheus)可以打开一个 Grafana 仪表板,其中包含有关该部署的详细指标。
对于每个 replica,有两个可用操作。您可以查看该 replica 的日志,并且(如果您配置了 Grafana 和 Prometheus)可以打开一个 Grafana 仪表板,其中包含有关该 replica 的详细指标。单击 replica 名称即可进入 Serve Replica 详情页面。
Serve Replica 详情页面#
此页面显示有关 Serve replica 的元数据,(如果您配置了 Grafana 和 Prometheus)有关 replica 的高级指标,以及该 replica 已完成的 Tasks 的历史记录。
Serve 指标#
Ray Serve 导出现有的时间序列指标,以帮助您了解 Serve 应用程序随时间的推移的状态。有关这些指标的更多详细信息,请参见 此处。要存储和可视化这些指标,请按照 此处 的说明设置 Prometheus 和 Grafana。
这些指标可在 Ray Dashboard 的 Serve 页面和 Serve Replica 详情页面中找到。它们也可作为 Grafana 仪表板访问。在 Grafana 仪表板中,使用顶部的下拉过滤器按路由、部署或 replica 过滤指标。每个图表的精确描述可通过将鼠标悬停在每个图表左上角的“信息”图标上获得。
Cluster 视图#
Cluster 视图是机器(节点)和 Worker(进程)层次关系的视觉表示。每台主机包含许多 Worker,您可以通过单击 + 按钮来查看。还可以查看 GPU 资源分配给特定 Actor 或任务的情况。
单击节点 ID 以查看节点详情页面。
此外,机器视图允许您查看节点或 Worker 的**日志**。
Actors 视图#
使用 Actors 视图查看 Actor 的日志以及创建该 Actor 的作业。
最多可存储 100000 个已销毁 Actor 的信息。在启动 Ray 时,使用 RAY_maximum_gcs_destroyed_actor_cached_count 环境变量来覆盖此值。
Actor 分析#
在正在运行的 Actor 上运行分析器。有关更多详细信息,请参阅 Dashboard Profiling。
Actor 详情页面#
单击 ID,即可查看 Actor 的详情视图。
在 Actor 详情页面,查看元数据、状态以及 Actor 运行过的所有任务。
Metrics 视图#
Ray 导出现有的指标,这些指标可在 Metrics view 中获得。以下是一些可用的示例指标。
按状态细分的任务、Actor 和 Placement Group
跨节点的 逻辑资源使用
跨节点的硬件资源使用
自动扩展器状态
有关可用指标,请参阅 System Metrics Page。
注意
Metrics 视图需要 Prometheus 和 Grafana 设置。请参阅 配置和管理仪表板 以了解如何设置 Prometheus 和 Grafana。
Metrics 视图提供 Ray 发出的时间序列指标的可视化。
您可以在右上角选择指标的时间范围。图表每 15 秒自动刷新一次。
还有一个方便的按钮可以从仪表板打开 Grafana UI。Grafana UI 提供了图表的额外自定义功能。
分析任务和 Actor 的 CPU 和内存使用情况#
仪表板中的 Metrics view 提供了一个“每组件 CPU/内存使用情况图”,该图显示了应用程序中每个任务和 Actor(以及系统组件)随时间的 CPU 和内存使用情况。您可以识别可能消耗比预期更多资源的任务和 Actor,并优化应用程序的性能。
每组件 CPU 图。0.379 核意味着它使用了单个 CPU 核的 40%。Ray 进程名称以 ray:: 开头。 raylet、agent、dashboard 或 gcs 是系统组件。
每组件内存图。Ray 进程名称以 ray:: 开头。 raylet、agent、dashboard 或 gcs 是系统组件。
此外,用户可以从 Cluster view 查看硬件利用率的快照,该视图提供了整个 Ray 集群资源使用情况的概览。
查看资源利用率#
Ray 要求用户通过 num_cpus、num_gpus、memory 和 resource 等参数指定其任务和 Actor 使用的资源数量。这些值用于调度,但可能并不总是与实际资源利用率(物理资源利用率)匹配。
从 Metrics view 中查看逻辑和物理资源随时间的使用情况。
物理资源利用率(CPU、GPU、内存、磁盘、网络)的快照也可从 Cluster view 中获得。
逻辑资源使用情况。
物理资源(硬件)使用情况。Ray 为集群中的每台机器提供 CPU、GPU、内存、GRAM、磁盘和网络使用情况。
Logs 视图#
Logs 视图列出了集群中的 Ray 日志。它按节点和日志文件名组织。其他页面上的许多日志链接会指向此视图并过滤列表,以便显示相关的日志。
要了解 Ray 的日志结构,请参阅 日志目录和文件结构。
Logs 视图提供搜索功能,以帮助您查找特定的日志消息。
驱动程序日志
如果 Ray 作业是由 Job API 提交的,则作业日志可从仪表板中获取。日志文件的格式如下:job-driver-<job_submission_id>.log。
注意
如果您直接在 Ray 集群的 Head 节点上执行驱动程序(不使用 Job API)或使用 Ray Client 运行,则无法从仪表板访问驱动程序日志。在这种情况下,请查看终端或 Jupyter Notebook 输出以查看驱动程序日志。
任务和 Actor 日志(Worker 日志)
任务和 Actor 日志可从 Task and Actor table view 访问。单击“Log”按钮。您可以看到包含从任务和 Actor 发出的输出的 stdout 和 stderr 日志。对于 Actor,您还可以看到相应 Worker 进程的系统日志。
注意
异步 Actor 任务或多线程 Actor 任务(并发度 > 1)的日志仅作为 Actor 日志的一部分可用。请按照仪表板中的说明查看 Actor 日志。
任务和 Actor 错误
通过查看作业进度条,您可以轻松识别失败的任务或 Actor。
任务和 Actor 表格分别显示了失败的任务或 Actor 的名称。它们还提供对其相应日志或错误消息的访问。
Overview 视图#
Overview 视图提供 Ray 集群的高级别状态。
Overview 指标
Overview Metrics 页面提供集群级别的硬件利用率和自动扩展状态(待处理、活动和失败的节点数)。
最近的作业
Recent Jobs 窗格提供最近提交的 Ray 作业列表。
Serve 应用程序
Serve Applications 窗格提供最近部署的 Serve 应用程序列表。
Events 视图#
Events 视图按时间顺序显示与特定类型(例如,Autoscaler 或 Job)相关的事件列表。使用 ray list cluster-events (Ray state APIs) CLI 命令也可访问相同的信息。
有两种类型的事件可用:
Job:与 Ray Jobs API 相关的事件。
Autoscaler:与 Ray autoscaler 相关的事件。