部署到 VM#

你可以使用 Ray Serve CLI 将 Serve 应用部署到 Ray 集群上的生产环境。serve deploy 命令接受一个配置文件路径作为输入,并通过 HTTP 将该文件部署到 Ray 集群。这个集群可以是像本例中那样的本地单节点集群,也可以是使用Ray Cluster Launcher启动的远程多节点集群。

本节将帮助你

  • 理解如何使用 CLI 部署 Ray Serve 配置文件。

  • 理解如何使用 CLI 更新你的应用。

  • 理解如何部署到使用Ray Cluster Launcher启动的远程集群。

首先部署这个用于文本 ML 应用示例配置

$ ls
text_ml.py
serve_config.yaml

$ ray start --head
...

$ serve deploy serve_config.yaml
2022-06-20 17:26:31,106	SUCC scripts.py:139 --
Sent deploy request successfully!
 * Use `serve status` to check deployments' statuses.
 * Use `serve config` to see the running app's config.

ray start --head 会在本地启动一个长期运行的 Ray 集群。serve deploy serve_config.yaml 会将 serve_config.yaml 文件部署到这个本地集群。要停止 Ray 集群,运行 CLI 命令 ray stop

消息 Sent deploy request successfully! 表示

  • Ray 集群已成功接收你的配置文件。

  • 如果尚未启动 Serve 应用,它将启动一个新的。

  • Serve 应用将部署你的部署图中的部署项,并根据你的配置文件中的配置进行更新。

意味着你的 Serve 应用(包括你的部署项)已经成功开始运行。这是异步发生的,因为 Ray 集群会尝试根据你的配置文件中的设置进行自我更新。请参阅检查应用了解如何获取当前状态。

使用远程集群#

默认情况下,serve deploy 会部署到本地运行的集群。但是,无论何时你想将 Serve 应用部署到远程集群,都应该使用 serve deployserve deploy 接受一个可选的 --address/-a 参数,你可以在其中指定远程 Ray 集群的 Dashboard 地址。该地址应采用以下格式:

[RAY_CLUSTER_URI]:[DASHBOARD_PORT]

例如,由 ray start --head 启动的本地集群的地址是 http://127.0.0.1:8265。我们可以使用以下命令显式地部署到此地址:

$ serve deploy config_file.yaml -a http://127.0.0.1:8265

Ray Dashboard 的默认端口是 8265。要将其设置为不同的值,请在运行 ray start 时使用 --dashboard-port 参数。

注意

在远程集群上运行时,你需要确保导入路径是可访问的。有关如何添加运行时环境,请参阅处理依赖项

提示

默认情况下,所有 Serve CLI 命令都假定你在使用本地集群。除了 serve startserve run 之外的所有 Serve CLI 命令都使用由 ray start --head 启动的本地集群关联的 Ray Dashboard 地址。但是,如果设置了 RAY_DASHBOARD_ADDRESS 环境变量,这些 Serve CLI 命令将默认使用该值。

类似地,serve startserve run 默认使用与本地集群关联的 Ray head 节点地址。如果设置了 RAY_ADDRESS 环境变量,它们将使用该值。

你可以通过运行以下命令来检查 RAY_DASHBOARD_ADDRESS 的值:

$ echo $RAY_DASHBOARD_ADDRESS

你可以通过运行以下 CLI 命令来设置此变量:

$ export RAY_DASHBOARD_ADDRESS=[YOUR VALUE]

你可以通过运行以下 CLI 命令来取消设置此变量:

$ unset RAY_DASHBOARD_ADDRESS

检查你的环境中是否存在此变量,以确保你正在使用所需的 Ray Dashboard 地址。

要检查生产环境中 Serve 应用的状态,请参阅检查应用

通过启动新的 Ray 集群、更新 Serve 配置文件并使用 serve deploy 将文件部署到新集群,来进行重量级代码更新(例如 runtime_env 更改)。新部署完成后,将流量切换到新集群。