LL推理运行时 - 多节点推理
type
status
date
slug
summary
tags
category
icon
password
网址
本指南提供了使用 Hugging Face 的 vLLM 服务运行时设置多节点和多 GPU 推理的分步说明。在继续之前,请确保您满足以下前提条件并了解此设置的限制。
前提条件
- 多节点功能仅在RawDeployment模式下支持。
- 多节点设置不支持自动扩缩容。
- 多节点配置需要持久卷声明(PVC),且必须支持ReadWriteMany(RWX)访问模式。
关键验证
TENSOR_PARALLEL_SIZE
和PIPELINE_PARALLEL_SIZE
不能通过环境变量设置。它们必须分别通过workerSpec.tensorParallelSize
和workerSpec.pipelineParallelSize
进行配置。
- 在为多节点设计的 ServingRuntime 中,必须同时设置
workerSpec.tensorParallelSize
和workerSpec.pipelineParallelSize
。
workerSpec.tensorParallelSize
的最小值为1,workerSpec.pipelineParallelSize
的最小值为2。
- 目前允许四种 GPU 类型:
nvidia.com/gpu
(默认),intel.com/gpu
,amd.com/gpu
和habana.ai/gaudi
。
- 您可以通过 InferenceService 指定 GPU 类型,但如果它与 ServingRuntime 中设置的不同,两种 GPU 类型都将被分配给资源。这可能会导致问题。
- 自动扩缩容器必须配置为
external
。
- StorageURI 唯一支持的存储协议是
PVC
。
- 默认情况下,允许以下 4 种 GPU 资源:
- 如果您想使用其他 GPU 类型,可以在 ISVC 的注解中按如下方式设置:
注意
您的设置中必须恰好有一个头节点 pod。可以使用
InferenceService (ISVC)
中的min_replicas
或max_replicas
设置来调整此头节点 pod 的副本数。但是,创建额外的头节点 pod 将导致它们被排除在 Ray 集群之外,从而导致功能不正常。请确保清楚记录此限制。不要在多节点服务中使用 2 种不同的 GPU 类型。
考虑事项
使用多节点功能可能表明您正在尝试部署一个非常大的模型。在这种情况下,您应该考虑增加
livenessProbe
、readinessProbe
和startupProbe
的initialDelaySeconds
。默认值可能不适合您的特定需求。您可以在 ServingRuntime 中为您的具体情况设置 StartupProbe。
多节点设置通常使用
RollingUpdate
部署策略,该策略确保现有服务在新服务准备就绪之前保持运行。但是,这种方法需要超过两倍的资源才能有效运行。因此,在开发阶段,使用Recreate
策略更为合适。此外,修改
PipelineParallelSize
(增加或减少)可能会因 Deployment 资源的默认行为而影响现有服务。需要注意的是,PipelineParallelSize 不是自动扩缩容概念;相反,它决定了将使用多少个节点来运行模型。因此,强烈建议不要在生产环境中修改此设置。如果不使用
Recreate
部署策略,并且需要更改 PipelineParallelSize,最好的方法是删除现有的 InferenceService (ISVC) 并创建一个具有所需配置的新服务。同样的建议也适用于 TensorParallelSize,因为动态修改此设置也会影响服务的稳定性和性能。注意
再次强调,PipelineParallelSize 不是通用的自动扩缩容机制,对其的更改应谨慎处理,尤其是在生产环境中。
WorkerSpec 和 ServingRuntime
要启用多节点/多 GPU 推理,必须在 ServingRuntime 和 InferenceService 中都配置
workerSpec
。huggingface-server-multinode
ServingRuntime
已经包含此字段,并基于支持多节点/多 GPU 功能的vLLM构建。请注意,此设置与 Triton 不兼容。注意
即使
ServingRuntime
已正确配置workerSpec
,除非 InferenceService 也配置了 workerSpec,否则多节点/多 GPU 功能不会启用。关键配置
使用
huggingface-server-multinode
ServingRuntime
时,您需要了解两个关键配置:workerSpec.tensorParallelSize
:此设置控制每个节点使用多少个 GPU。头节点和工作节点部署资源中的 GPU 类型数量将自动更新。
workerSpec.pipelineParallelSize
此设置决定部署中涉及的节点数量。此变量表示包括头节点和工作节点在内的节点总数。
示例 InferenceService
以下是 Hugging Face 模型的
InferenceService
配置示例:使用 2 个节点部署 Hugging Face vLLM 模型
按照以下步骤使用多节点设置部署 Hugging Face vLLM 模型。
1. 创建持久卷声明(PVC)
首先,为模型存储创建 PVC。确保使用您的实际存储类更新
%fileStorageClassName%
。2. 下载模型到 PVC
要下载模型,请将您的 Hugging Face 令牌(
HF_TEST_TOKEN
)导出为环境变量。用您的实际令牌替换%token%
。3. 创建 ServingRuntime
应用 ServingRuntime 配置。用您的 ServingRuntime YAML 路径替换 %TBD%。
4. 部署模型
最后,使用以下 InferenceService 配置部署模型:
检查InferenceService
状态
要验证您的
InferenceService
状态,运行以下命令:预期输出
检查GPU 资源
状态
要检查 GPU 资源状态,请按照以下步骤操作:
- 获取头节点和工作节点的 pod 名称:
- 检查头节点和工作节点 pod 的 GPU 内存大小:
预期输出
执行模型推理
您可以通过转发端口进行测试目的的模型推理。使用以下命令:
KServe Hugging Face vLLM 运行时支持以下 OpenAI 推理端点:
/v1/completions
/v1/chat/completions
OpenAI Completions 请求示例:
要向 OpenAI completions 端点发送请求,使用以下
curl
命令:预期输出
OpenAI Chat 请求示例:
要向 OpenAI chat completions 端点发送请求,使用以下
curl
命令:预期输出
上一篇
LLM 推理运行时 - 填充蒙版
下一篇
模型推理运行时 - 概要
Loading...