3.13. 使用多个 GPU 节点部署模型
在多个 GPU 节点间部署模型以处理大型模型,如大型语言模型(LLM)。
此流程演示了如何使用 vLLM 服务框架在多个 GPU 节点上提供 Red Hat OpenShift AI 的模型。多节点推断使用 vllm-multinode-runtime
自定义运行时。vllm-multinode-runtime
运行时使用与 VLLM ServingRuntime for KServe 运行时相同的镜像,同时还包括多GPU推断所需的信息。
目前,Red Hat OpenShift AI 作为技术预览功能通过多个 GPU 节点部署模型。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围
先决条件
- 具有集群管理员特权。
- 您已下载并安装 OpenShift 命令行界面 (CLI)。请参阅安装 OpenShift CLI。
您已为 GPU 类型启用了 Operator,如 Node Feature Discovery Operator、Nvidia GPU Operator。有关启用加速器的更多信息,请参阅启用加速器。
-
您使用 NVIDIA GPU (
nvidia.com/gpu
)。 -
您已通过
ServingRuntime
或InferenceService
指定 GPU 类型。如果ServingRuntime
中指定的 GPU 类型与InferenceService
中设置的不同,则两个 GPU 类型都会分配给资源,并可能导致错误。
-
您使用 NVIDIA GPU (
- 您已在集群中启用了 KServe。
-
您设置中只有一个 head pod。不要在
InferenceService
中使用min_replicas
或max_replicas
设置来调整副本数。创建其他 head pod 可能会导致它们排除在 Ray 集群中。 - 您已为 ReadWriteMany (RWX)访问模式设置并配置了持久性卷声明(PVC)。
流程
在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 选择或创建用于部署模型的命名空间。例如,您可以运行以下命令来创建
kserve-demo
命名空间:oc new-project kserve-demo
oc new-project kserve-demo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在目标命名空间中,为模型存储创建一个 PVC,并指定存储类的名称。存储类必须是文件存储。
注意如果您已经配置了 PVC,您可以跳过这一步。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将模型下载到 PVC。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
vllm-multinode-runtime
自定义运行时:oc process vllm-multinode-runtime-template -n redhat-ods-applications|oc apply -n kserve-demo -f -
oc process vllm-multinode-runtime-template -n redhat-ods-applications|oc apply -n kserve-demo -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下
InferenceService
配置部署模型:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下配置可以添加到
InferenceService
中:-
workerSpec.tensorParallelSize
:确定每个节点使用多少个 GPU。head 和 worker 节点部署资源中的 GPU 类型计数会自动更新。确保workerSpec.tensorParallelSize
的值至少为1
。 -
workerSpec.pipelineParallelSize
: 确定部署中涉及多少个节点。此变量代表节点总数,包括头和 worker 节点。确保workerSpec.pipelineParallelSize
的值至少为2
。
-
验证
要确认您已将环境设置为在多个 GPU 节点上部署模型,请检查 GPU 资源状态、InferenceService
状态、ray 集群状态,并将请求发送到模型。
检查 GPU 资源状态:
检索 head 和 worker 节点的 pod 名称:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查 <1> 和 <2> 的值来确认模型是否已正确加载。如果模型没有加载,则这些字段的值为
0MiB
。
使用以下命令验证您的
InferenceService
的状态:注意在技术预览中,您只能使用端口转发来推断。
oc wait --for=condition=ready pod/${podName} -n $DEMO_NAMESPACE --timeout=300s export MODEL_NAME=granite-8b-code-base-pvc
oc wait --for=condition=ready pod/${podName} -n $DEMO_NAMESPACE --timeout=300s export MODEL_NAME=granite-8b-code-base-pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应示例
NAME URL READY PREV LATEST PREVROLLEDOUTREVISION LATESTREADYREVISION AGE granite-8b-code-base-pvc http://granite-8b-code-base-pvc.default.example.com
NAME URL READY PREV LATEST PREVROLLEDOUTREVISION LATESTREADYREVISION AGE granite-8b-code-base-pvc http://granite-8b-code-base-pvc.default.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 向模型发送请求,以确认模型可用于推测:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow