在 Distributed Cloud 纯软件参考架构上开放模型部署

概览

此解决方案参考架构 (SRA) 定义了在 Distributed Cloud 纯软件独立集群上托管、部署和验证开放权重的大语言模型 (LLM) 的概念设计、组件拓扑和技术边界。

企业边缘环境通常需要低延迟推理和严格的数据主权。此解决方案参考架构提供了一个标准化、安全且可观测的服务堆栈,用于在配备客户自购 NVIDIA RTX PRO 6000 GPU (96GB VRAM) 的单节点 Distributed Cloud 纯软件集群上部署 Gemma 4 31B 模型。

特性和功能

  • 本地模型服务:在 Distributed Cloud 软件专用集群边界内本地公开行业标准、与 OpenAI 兼容的 API。
  • 支持大型边缘模型:经过优化,可以以原生精度 (BF16) 或量化格式运行 Gemma 4 31B,充分利用 96GB VRAM 容量。
  • 可观测性:仅与 Distributed Cloud 软件的监控基础架构 (Google Cloud Managed Service for Prometheus) 集成,使用原生 PodMonitoring 资源导出 GPU 遥测数据和 vLLM 性能指标,避免了对独立本地 Prometheus 服务器的需求。
  • 交互式验证:部署基于 Gradio 的网页界面,以便立即直观地验证模型响应能力。

架构原则

  • 简单性和可移植性:标准化为 Kubernetes 原生结构(部署、服务),而不是复杂的服务运算符,确保在单节点设置中轻松部署和维护。
  • 数据主权:所有推理流量以及提示和回答数据都严格保留在本地集群边界内。
  • 资源隔离:将物理 GPU 加速器专用于单个模型部署实例,以防止资源争用并保证可预测的延迟。

建筑和设计

组件

解决方案组件包括:

  • 客户命名空间(仅限 Distributed Cloud 软件集群):
    • vLLM 服务引擎:部署为运行 vLLM 容器的 Kubernetes Deployment。配置为从永久性存储加载 Gemma 权重并公开兼容 OpenAI 的 API。
    • Gradio Web 界面:部署为 Kubernetes Deployment,提供用于验证的聊天界面(可选:也可以在连接到集群 vLLM 服务的开发者工作站或测试运行时上外部运行)。
  • 永久性卷声明 (PVC):仅由 Distributed Cloud 软件本地共享存储空间(使用 local-shared StorageClass)提供支持,用于托管模型权重。
  • Kubernetes 服务:用于 vLLM API 端点的 ClusterIP 服务;用于将 Gradio 界面公开给客户网络的 NodePort 或 LoadBalancer 服务。
  • 基础设施(客户管理):
    • NVIDIA GPU Operator:编排物理 GPU 资源并将其仅公开给 Distributed Cloud 软件 Kubernetes 工作器节点。
    • NVIDIA RTX PRO 6000 GPU:底层物理加速器(96 GB GDDR7 内存架构)。
  • Google Cloud 集成:
    • Google Cloud Monitoring 和 Logging:默认的 Distributed Cloud 纯软件代理,用于收集系统日志、容器日志和基本指标,并将其转发到Google Cloud。

高级架构概览

下图展示了仅包含 Distributed Cloud 软件的集群中的请求流和组件交互:

打开 Distributed Cloud 纯软件架构图上的模型部署。

硬件限制

该解决方案专为配备 NVIDIA RTX PRO 6000 Blackwell GPU 的客户自备硬件而设计。

  • GPU 规格:NVIDIA RTX PRO 6000(Blackwell 服务器版或工作站版)。
  • 内存架构:96 GB GDDR7 VRAM(含 ECC)
  • 模型选择的影响:
    • 96 GB 的 VRAM 可让目标 Gemma 4 31B 模型以原生 BF16 精度运行(占用约 62 GB 的权重,为键值对 [KV] 缓存留下约 34 GB 的 VRAM 裕度)。
    • 当启用 Blackwell 硬件加速的 FP8 量化 (--quantization=fp8)(如参考实现中所配置)时,模型权重内存会减半至约 31 GB,从而将可用的 KV 缓存扩展到 ~56.5 GiB(61,728 个令牌),同时在 --gpu-memory-utilization=0.95 时启用大上下文窗口或高并发批次大小,而不会遇到内存不足 (OOM) 错误。

可支持性矩阵(责任)

组件 管理者 备注
实体硬件和操作系统 客户 客户自备的硬件(具体而言,是搭载 NVIDIA RTX PRO 6000 Blackwell GPU 的服务器或工作站)。
Distributed Cloud 纯软件集群安装 客户 必须遵循标准 Distributed Cloud(纯软件)安装文档。
GPU 驱动程序和运算符 客户 安装 NVIDIA GPU Operator 和 Helm 图表。Google 不支持 NVIDIA 运算符部署。
vLLM 服务清单 Google(解决方案) 作为本解决方案指南的一部分提供。
模型制品 客户 下载并托管 Gemma 模型权重。
Gradio 界面和应用代码 客户 客户自有应用层,用于验证和使用。
Cloud Logging 和 Cloud Monitoring Joint Google 提供默认集成;客户进行配置。

概念和技术

本部分详细介绍了功能组件、它们的职责以及它们在系统内的通信方式。它确定了支持目标使用情形所需的核心服务、数据存储单元和网络接口。

基础架构和平台

  • NVIDIA RTX PRO 6000 GPU:提供 96GB GDDR7 VRAM。物理 GPU 完全专用于模型部署实例。未启用 GPU 分区 (MIG),以确保模型对完整的 VRAM 和内存带宽具有独占访问权限,从而防止资源争用。
  • NVIDIA GPU Operator:由客户管理的 Operator,用于编排物理 GPU 资源并将其公开给 Distributed Cloud(纯软件)Kubernetes 工作器节点。
  • 节点本地存储空间(永久性卷声明):仅由 Distributed Cloud 软件支持的节点本地存储空间,用于在节点上托管和持久保存模型权重。这样可确保模型权重下载后,会持久保存在本地。后续的 pod 重启或更新会从此本地缓存加载权重,从而缩短启动时间并防范 WAN 中断。
  • 共享内存段 (/dev/shm):将具有 medium: Memory 的 emptyDir 卷装载到 /dev/shm,并分配 16GiB 的内存,以防止在 vLLM 中进行高并发张量运算期间出现分段错误。

服务和逻辑

  • vLLM 服务引擎:部署为运行 Vertex AI 合格 vLLM 容器的 Kubernetes Deployment,通过 ClusterIP 服务(端口 8000)公开。关键配置参数包括:
    • --model:Gemma 模型的路径或 ID(例如 google/gemma-4-31B-it)。
    • --tensor-parallel-size:设置为 1(单个 GPU 限制)。
    • --dtype:设置为 bfloat16 可针对非量化层和激活利用硬件原生精度。
    • --quantization:在参考实现中设置为 fp8,以利用 Blackwell FP8 权重量化(约 31 GB 权重,约 56.5 GiB KV 缓存),如果首选未量化的 BF16(约 62 GB 权重,约 34 GB KV 缓存),则省略。
  • Gradio Web 界面:部署为 Kubernetes Deployment,提供用于验证的聊天界面,通过 ClusterIP 服务(端口 8080)公开。它会连接到 vLLM 服务,以进行提示和响应互动。

可观测性和 Google Cloud 集成

  • Cloud Logging:使用默认的 Distributed Cloud 纯软件 Logging 代理自动捕获容器日志(vLLM 应用日志和 GPU 诊断信息)并将其转发到 Cloud Logging。
  • Cloud Monitoring (PodMonitoring):Google Cloud Managed Service for Prometheus (GMP) 资源同时以 vLLM pod(用于提供令牌吞吐量和 KV 缓存使用情况等服务遥测数据)和 GPU 指标导出器 pod(用于提供 GPU 遥测数据)为目标,并将指标导出到 Cloud Monitoring。

注意事项

可扩展性与性能

  • GPU 专用:NVIDIA RTX PRO 6000 GPU 完全专用于 vLLM 容器。在此架构中,未通过 MIG 或时间切片实现 GPU 共享,以确保可预测的推理延迟时间并防止出现 OOM。Gemma 4 31B 模型还需要大部分 VRAM 容量来存储模型权重(约 62 GB),这使得其他模型无法同时运行。
  • 部署策略:强制执行为 Recreate。由于我们只有一个 GPU,因此在更新期间无法同时运行两个 vLLM pod 实例。必须先终止旧 pod 以释放 GPU 锁定,然后新 pod 才能启动。

资源管理

  • VRAM 预留空间:虽然 96 GB NVIDIA RTX PRO 6000 在未量化的 BF16 精度下可容纳 Gemma 4 31B 模型(权重约 62 GB,为 KV 缓存留下约 34 GB),但参考部署支持 Blackwell FP8 量化 (--quantization=fp8),以将权重内存减少到约 31 GB,并将可用的 KV 缓存扩展到 ~56.5 GiB(61,728 并发令牌)。
  • KV 缓存大小调整:SRA 假设采用默认 vLLM 分配 (--gpu-memory-utilization=0.95),这可最大限度地提高引擎的 VRAM 使用率。

可用性和可靠性

  • 缓存热度:使用节点本地 PV 至关重要。如果节点重启,则会重复使用主机目录中的缓存权重。
  • 映像缓存:由于 vLLM 容器映像较大(超过 10 GB),建议设置 imagePullPolicy: IfNotPresent,以避免在 pod 重启时出现注册表拉取延迟。

运维复杂性

  • 控制台可见性:与 GKE 不同,Distributed Cloud 纯软件不支持基于控制台的“AI/ML 模型”视图。所有验证和监控都必须通过 kubectl CLI、端口转发和直接 Cloud Monitoring 信息中心来执行。

设计决策

推理引擎:vLLM 与 Triton 与 Ollama

  • 所选选项: vLLM
  • 理由:vLLM 通过 PagedAttention 为 LLM 提供出色的开箱即用性能,支持 OpenAI API 对等性,并具有来自 Vertex AI 的预先经过资格认证的容器映像。
  • 替代方案被拒:
    • Triton:对于单模型边缘部署,配置和编译过于复杂。
    • Ollama:缺少生产监控所需的高级遥测端点和精细的并发调优。

遥测路径:原生 GMP 与本地 Prometheus

所选选项: 原生 GMP (PodMonitoring)

  • 理由:Distributed Cloud 纯软件仅支持与 Cloud Monitoring 进行原生集成。我们可以使用 Managed Prometheus 将指标直接路由到Google Cloud ,从而减少集群内的运营开销。
  • 替代方案遭拒:
    • 本地 Prometheus 和 Grafana 堆栈:被拒绝,以最大限度减少单节点集群上的控制平面资源使用量。

假设和限制

前提

  • GPU Operator 可用性:假设客户已成功安装 NVIDIA GPU Operator,并在部署此解决方案之前配置了 nvidia RuntimeClass。
  • Hugging Face 访问权限:部署需要有效的 Hugging Face 令牌,该令牌具有对受限的 Gemma 4 代码库的访问权限,并以 Kubernetes Secret 的形式存储。
  • 网络路径:集群必须具有互联网访问权限(或内部代理),才能在初始设置期间下载容器映像和模型权重。

限制

  • 单 GPU 边界:第 1 阶段的架构受单个 NVIDIA RTX PRO 6000 GPU 的物理容量限制。第 1 阶段不支持大于约 310 亿参数的模型(或需要多 GPU 张量并行的高并发工作负载)。
  • 无滚动更新:Recreate 策略意味着在模型更新或配置更改期间,服务会暂时停机,因为 GPU 无法在旧 pod 和新 pod 之间共享。
  • 排除性能调优:与项目范围一致,此架构中排除了节点级优化(CPU 固定、巨页、PerformanceTuningProfile)。

后续步骤