在虚拟机上部署#
您可以使用 Ray Serve CLI 将 Serve 应用程序部署到生产环境的 Ray 集群中。`serve deploy` 命令接受一个配置文件路径,并将该文件通过 HTTP 部署到 Ray 集群。这可以是本地单节点集群,如本示例所示,也可以是使用 Ray Cluster Launcher 启动的远程多节点集群。
本节将帮助您
了解如何使用 CLI 部署 Ray Serve 配置文件。
了解如何使用 CLI 更新您的应用程序。
了解如何部署到使用 Ray Cluster Launcher 启动的远程集群。
$ 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 应用程序将部署您的部署图中的部署,并根据您的配置文件进行更新。
这**不**意味着您的 Serve 应用程序(包括您的部署)已成功运行。这是异步发生的,Ray 集群会尝试更新自身以匹配您配置文件中的设置。有关如何获取当前状态,请参阅 检查应用程序。
使用远程集群#
默认情况下,`serve deploy` 会部署到本地运行的集群。但是,当您想将 Serve 应用程序部署到远程集群时,也应该使用 `serve deploy`。`serve deploy` 命令接受一个可选的 `--address/-a` 参数,您可以在其中指定您的远程 Ray 集群的仪表板地址。该地址的格式应为:
[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` 参数。
注意
在远程集群上运行时,您需要确保 import 路径可访问。有关如何添加运行时环境,请参阅 处理依赖项。
提示
默认情况下,所有 Serve CLI 命令都假定您正在处理本地集群。除了 `serve start` 和 `serve run` 之外,所有 Serve CLI 命令都使用由 `ray start --head` 启动的本地集群关联的 Ray Dashboard 地址。但是,如果设置了 `RAY_DASHBOARD_ADDRESS` 环境变量,这些 Serve CLI 命令将默认使用该值。
同样,`serve start` 和 `serve 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` 更改)。一旦新的部署完成,将流量切换到新集群。