Ray 提供了一個 Dashboard 來監控 Ray 的狀態,包含了 Ray 的 Cluster 狀態、Task 狀態、Actor 狀態、Resource 使用狀態、Error 狀態等等,可以透過瀏覽器來查看。
透過 pip install -U ray[default]
,就會包括 Ray Dashboard component。然後呼叫 ray.init() 就可以看到 Dashboard 的網址。
```python
import ray
context = ray.init()
print("Dashboard URL: http://{}".format(context.dashboard_url))
```
如果是 Remote Ray Cluster,因為 Dashboard 在 head node 但是 port 通常不會直接開放,可以參考 這份文件 設定。
另外前一段提到,安裝 Ray cluster 的選項是 ray[default]
,在 production 環境,會根據不同情境裝對應的 Ray component,可以參考 這份文件。
舉例來說,Machine learning applications
的話
pip install -U "ray[data,train,tune,serve]"
# For reinforcement learning support, install RLlib instead.
# pip install -U "ray[rllib]"
另外的選項建議點到 Advanced
查看。
Metrics view
, Cluster view
Jobs view
Jobs view
, Logs view
Metrics view
, Cluster view
Serve view
Job 是使用 Ray API 的 Ray 工作負載,例如 ray.init()
。建議使用 Ray Job API 來提交 Job 到 Cluster。
點擊 Stack Trace
或 CPU Flame Graph
可以分析 Ray Job。可以參考 這份文件
Task 和 Actor 的狀態,可以透過 Jobs view 來查看。預設 Tasks 和 Actors 會依照狀態分類,例如 pending
, running
, finished
等等。分類規則如下:
task.options(name="<name_here>").remote()
。這部份蠻直覺,就是 Ray Cluster 狀態。
Ray Serve 是一個用來部署機器學習模型的 framework,可以參考 這份文件。Serve View 可以監控 Serve application 的狀態。
實務面來看,也可能與現有的 Grafana, Prometheus 整合,可以參考這份文件 Integrating with Prometheus and Grafana。
Actor View 可以看到 Actor 的 logs 和 Actor 是由哪個 Job 建立的。
官方文件有提到 Actor View 可以看到最多 1000 個已經結束的 Actor 的資訊,可以透過設定環境變數 RAY_DASHBOARD_MAX_ACTORS_TO_CACHE
來調整。
Metrics View 可以看到 Ray Cluster 的資源使用狀態,例如 CPU, memory, network 等等。可以參考 這份文件。
可能的應用如下:
如果使用 Job API 來提交 Job,那麼 Job logs 就會在 Dashboard 上面。Log file 的格式是 job-driver-<job_submission_id>.log
。
就是 Task 和 Actor 的 stdout
and stderr
logs。Log file 的格式是 worker-<worker_id>.log
。
Reference: