Ray 仪表盘#

Ray 提供了一个基于网页的仪表板,用于监控和调试 Ray 应用程序。系统状态的可视化表示,使用户能够跟踪应用程序的性能并解决故障。

设置仪表板#

要访问仪表板,请使用 ray[default] 或包含 Ray 仪表板组件的 其他安装命令。例如:

pip install -U "ray[default]"

当你在笔记本电脑上启动单节点 Ray 集群时,可以使用 Ray 初始化时打印的 URL 访问仪表盘(默认 URL 是 http://localhost: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 仪表板会在头节点上启动,但仪表板端口可能不会公开暴露。查看 配置仪表板 以了解如何从头节点外部查看仪表板。

备注

在使用 Ray 仪表板时,强烈建议同时设置 Prometheus 和 Grafana。它们对于诸如 指标视图 等关键功能是必要的。有关如何将 Prometheus 和 Grafana 与 Ray 仪表板集成的信息,请参阅 配置和管理仪表板

工作视图#

作业视图允许您监控在 Ray 集群上运行的不同作业。一个 Ray 作业 是一个使用 Ray API(例如,ray.init)的 Ray 工作负载。建议通过 Ray 作业 API 将您的作业提交到集群。您也可以交互式地运行 Ray 作业(例如,通过在头节点中执行 Python 脚本)。

作业视图显示了活动、已完成和失败的作业列表,点击ID可以查看该作业的详细信息。有关Ray作业的更多信息,请参阅 Ray作业概述部分

工作分析#

你可以通过点击“堆栈跟踪”或“CPU火焰图”操作来分析Ray作业。更多详情请参见 分析

任务和角色分解#

https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/advanced-progress.png

作业视图按状态分解任务和执行者。默认情况下,任务和执行者会分组和嵌套。您可以通过点击展开按钮查看嵌套条目。

任务和角色根据以下标准进行分组和嵌套:

  • 所有任务和角色都被分组在一起。通过展开相应的行来查看单个条目。

  • 任务根据它们的 name 属性进行分组(例如,task.options(name="<name_here>").remote())。

  • 子任务(嵌套任务)嵌套在其父任务的行下。

  • 演员按其类名分组。

  • 子角色(在角色内创建的角色)嵌套在其父角色的行下。

  • Actor 任务(Actor 内的远程方法)嵌套在相应 Actor 方法的 Actor 下。

备注

作业详情页面最多只能显示或检索每个作业的10,000个任务。对于包含超过10,000个任务的作业,超出10,000限制的部分任务将不计入。未计入的任务数量可以从任务分解中获得。

任务时间线#

首先,通过点击下载按钮下载Chrome跟踪文件。或者,您可以 使用CLI或SDK导出跟踪文件

其次,使用 chrome://tracingPerfetto UI 等工具,并上传下载的Chrome跟踪文件。我们将使用Perfetto,因为它是可视化Chrome跟踪文件的推荐方式。

在Ray任务和参与者的时序可视化中,存在节点行(硬件)和工作行(进程)。每个工作行显示从该工作进程随时间发生的一系列任务事件(例如,任务调度、任务运行、输入/输出反序列化等)。

Ray 状态#

作业视图显示了 Ray 集群的状态。这些信息是 ray status CLI 命令的输出结果。

左侧面板显示自动扩展状态,包括待处理、活动和失败的节点。右侧面板显示资源需求,即当前无法调度到集群的资源。此页面对于调试资源死锁或调度缓慢非常有用。

备注

输出显示了整个集群的汇总信息(不是按作业)。如果你运行了多个作业,部分需求可能来自其他作业。

任务、执行者和放置组表#

仪表板显示了作业任务、执行者和放置组状态的表格。这些信息是 Ray 状态 API 的输出。

您可以展开表格以查看每个任务、执行者和放置组的列表。

服务视图#

查看您的通用 Serve 配置、Serve 应用程序列表,以及,如果您配置了 Grafana 和 Prometheus,您的 Serve 应用程序的高级指标。点击 Serve 应用程序的名称以转到 Serve 应用程序详情页面。

服务应用详情页面#

查看 Serve 应用程序的配置和元数据以及 Serve 部署和副本列表。点击部署的展开按钮以查看副本。

每个部署有两个可用的操作。您可以查看部署配置,并且如果您配置了 Grafana 和 Prometheus,您可以打开一个 Grafana 仪表板,其中包含有关该部署的详细指标。

对于每个副本,有两个可用的操作。您可以查看该副本的日志,并且,如果您配置了 Grafana 和 Prometheus,您可以打开一个 Grafana 仪表板,其中包含有关该副本的详细指标。点击副本名称以转到 Serve 副本详情页面。

服务副本详情页面#

此页面显示有关 Serve 副本的元数据,如果您配置了 Grafana 和 Prometheus,则还会显示有关副本的高级指标,以及该副本完成的 任务 的历史记录。

提供指标#

Ray Serve 导出各种时间序列指标,帮助您了解 Serve 应用程序随时间的状态。有关这些指标的更多详细信息,请参阅 此处。要存储和可视化这些指标,请按照 此处 的说明设置 Prometheus 和 Grafana。

这些指标在 Ray 仪表板的 Serve 页面和 Serve 副本详情页面中可用。它们也可以作为 Grafana 仪表板访问。在 Grafana 仪表板中,使用顶部的下拉过滤器按路由、部署或副本过滤指标。每个图表的详细描述可以通过悬停在每个图表左上角的“信息”图标上来获取。

集群视图#

集群视图是对机器(节点)和工作进程(进程)的层次关系的可视化。每台主机由许多工作进程组成,您可以通过点击 + 按钮查看。另请参阅将 GPU 资源分配给特定角色或任务。

点击节点ID以查看节点详情页面。

此外,机器视图允许您查看节点的 日志 或 Worker 的日志。

演员视角#

使用 Actors 视图查看 Actor 的日志以及创建该 Actor 的 Job。

最多存储1000个已死亡的Actor的信息。启动Ray时,可以使用`RAY_DASHBOARD_MAX_ACTORS_TO_CACHE`环境变量覆盖此值。

演员剖析#

在运行的Actor上运行分析器。更多详情请参见 仪表板分析

演员详情页面#

点击ID,查看演员的详细视图。

在演员详情页,查看元数据、状态以及该演员已运行的所有任务。

指标视图#

Ray 导出默认指标,这些指标可以从 指标视图 中获取。以下是一些可用的示例指标。

  • 任务、执行者和放置组按状态细分

  • 逻辑资源使用 跨节点

  • 节点间的硬件资源使用情况

  • 自动扩展器状态

查看 系统指标页面 以获取可用指标。

备注

指标视图需要 Prometheus 和 Grafana 的设置。请参阅 配置和管理仪表板 以了解如何设置 Prometheus 和 Grafana。

Metrics 视图提供了 Ray 发出的时间序列指标的可视化。

您可以在右上角选择指标的时间范围。图表每15秒自动刷新一次。

还有一个方便的按钮可以从仪表板打开Grafana UI。Grafana UI提供了图表的额外自定义功能。

分析任务和执行者的CPU和内存使用情况#

仪表板中的 指标视图 提供了一个“每个组件的CPU/内存使用图”,显示了应用程序中每个任务和执行者在一段时间内的CPU和内存使用情况(以及系统组件)。您可以识别可能消耗比预期更多资源的任务和执行者,并优化应用程序的性能。

https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/node_cpu_by_comp.png

每个组件的CPU图。0.379核意味着它使用了单个CPU核心的40%。Ray进程名称以``ray::开头。``rayletagent``dashboard``或``gcs``是系统组件。

https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/node_memory_by_comp.png

每个组件的内存图。Ray 进程名称以 ray:: 开头。rayletagentdashboardgcs 是系统组件。

https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/cluster_page.png

此外,用户可以从 集群视图 中查看硬件利用率的快照,该视图提供了整个 Ray 集群资源使用情况的概览。

查看资源利用率#

Ray 要求用户通过 num_cpusnum_gpusmemoryresource 等参数指定他们的任务和角色的 资源 数量。这些值用于调度,但可能并不总是与实际的资源利用率(物理资源利用率)匹配。

  • 指标视图 查看逻辑和物理资源利用率随时间的变化。

  • 物理资源利用率(CPU、GPU、内存、磁盘、网络)的快照也可以从 集群视图 中获取。

https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/logical_resource.png

逻辑资源 的使用。

https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/physical_resource.png

物理资源(硬件)的使用情况。Ray 为集群中的每台机器提供了 CPU、GPU、内存、GRAM、磁盘和网络使用情况。

日志视图#

日志视图列出了集群中的 Ray 日志。它按节点和日志文件名组织。其他页面中的许多日志链接都会链接到此视图并过滤列表,以便显示相关日志。

要了解 Ray 的日志结构,请参阅 日志目录和文件结构

日志视图提供了搜索功能,帮助您查找特定的日志消息。

驱动日志

如果 Ray 作业是通过 作业 API 提交的,作业日志可以从仪表板中获取。日志文件遵循以下格式:job-driver-<job_submission_id>.log

备注

如果你直接在 Ray 集群的头节点上执行 Driver(不使用 Job API)或者通过 Ray Client 运行,Driver 日志将无法从 Dashboard 访问。在这种情况下,请查看终端或 Jupyter Notebook 输出以查看 Driver 日志。

任务和执行者日志(工作线程日志)

任务和执行者日志可以从 任务和执行者表格视图 访问。点击“日志”按钮。你可以看到包含任务和执行者发出的输出的 stdoutstderr 日志。对于执行者,你还可以看到相应工作进程的系统日志。

备注

异步Actor任务或线程化Actor任务(并发>1)的日志仅作为Actor日志的一部分可用。请按照仪表板中的说明查看Actor日志。

任务和执行者错误

通过查看作业进度条,您可以轻松识别失败的任务或角色。

任务和执行者表分别显示失败的任务或执行者的名称。它们还提供访问相应的日志或错误消息的途径。

概览视图#

../_images/dashboard-overview.png

概览视图提供了 Ray 集群的高级状态。

概览指标

概览指标页面提供了集群级别的硬件利用率和自动扩展状态(挂起、活动和失败节点的数量)。

最近的工作

“最近任务”窗格提供了一个最近提交的 Ray 任务列表。

提供应用程序

“服务应用程序”窗格提供最近部署的服务应用程序列表

事件视图

https://raw.githubusercontent.com/ray-project/Images/master/docs/new-dashboard-v2/dashboard-pics/event-page.png

事件视图按时间顺序显示与特定类型(例如,自动缩放器或作业)关联的事件列表。同样的信息可以通过 ray list cluster-events (Ray 状态 API) CLI 命令访问。

有两种类型的事件可用:

资源#