在 Amazon SageMaker HyperPod 上用 vLLM 部署 Qwen3.8-2.4T-A95B

2026-09-10 36 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

Qwen3.8-2.4T-A95B 是一个拥有 2.4 万亿参数的开放权重模型。要把这类模型稳定地运行起来,难点不只是启动一个容器,还包括多节点 GPU 集群规划、模型权重分发、NVFP4 量化、推理并行,以及如何把推理、工具调用和 MTP 投机解码暴露成可用的 API。

Amazon SageMaker HyperPod 负责提供可扩展的训练和推理基础设施,vLLM 则负责模型加载、批处理和 OpenAI 兼容服务。两者结合后,可以把一次性的集群实验整理成更容易重复部署的推理服务。

先把集群边界定义清楚

2.4T 参数模型的显存需求远高于普通单卡或单节点部署。实际规划时,需要同时考虑以下几项:

  • GPU 数量、显存容量和节点间网络带宽。
  • 模型权重、分词器和缓存所在的共享存储。
  • 张量并行与流水线并行的拓扑限制。
  • KV cache 的容量,以及并发请求对上下文长度的影响。
  • 节点故障、容器启动时间和权重下载时间。

HyperPod 集群的实例类型、节点数量和网络配置应根据目标吞吐量与上下文长度测算。下面的命令是一个可改造的配置骨架,变量值需要替换为账号、区域、子网和实际支持的 GPU 实例:

#!/usr/bin/env bash
set -euo pipefail

export AWS_REGION="us-west-2"
export CLUSTER_NAME="qwen38-hyperpod"
export MODEL_ID="Qwen/Qwen3.8-2.4T-A95B"
export INSTANCE_TYPE="<supported-gpu-instance-type>"
export NODE_COUNT="<number-of-worker-nodes>"
export SUBNET_ID="subnet-xxxxxxxx"
export SECURITY_GROUP_ID="sg-xxxxxxxx"

# 确认当前账号、区域和 SageMaker 权限
aws sts get-caller-identity
aws configure set region "$AWS_REGION"

# HyperPod 的创建参数通常还包括 VPC、IAM role、生命周期脚本和存储配置。
# 请将下面的占位文件替换为团队审核过的 HyperPod 集群配置。
aws sagemaker create-cluster \
  --cluster-name "$CLUSTER_NAME" \
  --instance-groups "file://hyperpod-instance-groups.json" \
  --vpc-config "Subnets=[$SUBNET_ID],SecurityGroupIds=[$SECURITY_GROUP_ID]" \
  --region "$AWS_REGION"

aws sagemaker describe-cluster \
  --cluster-name "$CLUSTER_NAME" \
  --query 'ClusterStatus' \
  --output text

不同 AWS 区域、HyperPod 版本和调度器配置可能需要不同的 create-cluster 字段。部署前应以当前 AWS CLI 和 SageMaker HyperPod 文档中的参数定义为准,并确认目标 GPU 支持 vLLM 所需的 NVFP4 内核。

用 NVFP4 降低推理成本

NVFP4 量化可以显著减少模型权重和部分推理数据的存储与显存压力,但它不是“加上一个参数就一定能运行”。需要检查三类兼容性:

  1. GPU 架构是否提供对应的低精度计算能力。
  2. vLLM、CUDA、驱动和量化 checkpoint 的版本是否匹配。
  3. 量化后的模型是否仍满足目标任务的精度要求。

可以在 HyperPod 工作节点上用独立环境验证 vLLM 参数,再接入正式服务。下面的启动示例展示了一个可改造的配置方式:

#!/usr/bin/env bash
set -euo pipefail

MODEL_ID="Qwen/Qwen3.8-2.4T-A95B"
SERVED_NAME="qwen3.8-2.4t-a95b"

# 这些数值需要根据节点 GPU 数量、显存、上下文长度和压测结果调整。
TENSOR_PARALLEL_SIZE="<gpus-per-parallel-group>"
PIPELINE_PARALLEL_SIZE="<pipeline-stage-count>"

vllm serve "$MODEL_ID" \
  --served-model-name "$SERVED_NAME" \
  --quantization nvfp4 \
  --tensor-parallel-size "$TENSOR_PARALLEL_SIZE" \
  --pipeline-parallel-size "$PIPELINE_PARALLEL_SIZE" \
  --host 0.0.0.0 \
  --port 8000 \
  --max-model-len "<validated-context-length>" \
  --gpu-memory-utilization 0. nine \
  --enable-auto-tool-choice \
  --tool-call-parser "<parser-supported-by-this-qwen-checkpoint>" \
  --reasoning-parser "<reasoning-parser-supported-by-this-vllm-version>" \
  --speculative-config '{"method":"mtp","num_speculative_tokens":<token-count>}'

上面的 0. nine 不是有效的数值,正式执行时应改为例如 0.90;保留这个明显占位符是为了避免把未经验证的显存比例直接复制到生产环境。某些 vLLM 版本对 MTP、reasoning parser 和 tool-call parser 的参数名称或可选值有所不同,应先运行:

vllm serve --help | rg 'quantization|speculative|reasoning|tool-call|tensor-parallel|pipeline-parallel'

如果目标版本不接受 --speculative-config,就应按照该版本的帮助信息改写配置,而不是混用其他版本的命令行参数。MTP 的收益也取决于模型 checkpoint 是否包含对应的多 token 预测能力,以及请求中的生成长度和采样参数。

验证 OpenAI 兼容接口

服务启动后,可以用标准 Chat Completions 请求检查模型是否可访问。<endpoint> 可以是 HyperPod 节点上的内部地址、反向代理地址或经过认证的服务入口。

export ENDPOINT="http://<endpoint>:8000"
export MODEL_NAME="qwen3.8-2.4t-a95b"

curl -sS "$ENDPOINT/v1/chat/completions" \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer local-dev-token' \
  -d "$(cat <<JSON
{
  "model": "$MODEL_NAME",
  "messages": [
    {"role": "user", "content": "请用三点说明如何检查一个 HyperPod 推理服务。"}
  ],
  "temperature": 0.2,
  "max_tokens": 256
}
JSON
)" | jq .

推理能力、工具调用和 MTP 是否真正生效,不能只看 HTTP 状态码。建议分别验证:

  • 普通问答是否返回 choices 和可读的消息内容。
  • reasoning 输出是否符合当前 API 约定,且没有把内部思考内容错误暴露给不该看到的客户端。
  • 工具调用是否返回结构化的 tool call,包括函数名和 JSON 参数。
  • MTP 开启前后的首 token 延迟、生成速度、显存使用和错误率。
  • 多节点场景下,节点间通信是否成为吞吐瓶颈。

工具调用请求可以这样构造,具体字段仍以所使用的 vLLM 版本和模型模板为准:

curl -sS "$ENDPOINT/v1/chat/completions" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "qwen3.8-2.4t-a95b",
    "messages": [
      {"role": "user", "content": "查询北京今天的天气。"}
    ],
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "get_weather",
          "description": "查询指定城市的天气",
          "parameters": {
            "type": "object",
            "properties": {
              "city": {"type": "string"}
            },
            "required": ["city"]
          }
        }
      }
    ],
    "tool_choice": "auto"
  }' | jq .

生产环境还需要在 API 网关或服务层加入身份认证、请求限流、最大上下文长度、超时和审计日志。不要把带有高权限工具的模型端点直接暴露到公网;模型返回的工具参数必须经过服务端校验和授权。

上线前的检查清单

HyperPod 加 vLLM 的组合适合需要大模型吞吐和弹性基础设施的场景,但部署成本和运维复杂度也明显高于单节点服务。建议按以下顺序推进:

  • 先用小规模节点验证容器、驱动、CUDA、vLLM 和 checkpoint 的兼容性。
  • 固定镜像、模型版本和启动参数,记录每次压测结果。
  • 在真实上下文长度下比较 FP、量化和 NVFP4 配置的质量与吞吐。
  • 分别测量首 token 延迟、每秒输出 token 数、并发上限、显存占用和失败率。
  • 只在收益经过压测验证后启用 MTP,并保留快速回滚配置。
  • 为模型下载、节点故障、服务重启和滚动升级准备运行手册。

核心原则是把“模型能启动”和“服务可运营”分开验证。NVFP4 解决的是资源效率问题,MTP 解决的是部分生成场景下的速度问题,而 HyperPod 解决的是大规模 GPU 集群的供给与管理问题。三者只有在版本、拓扑和业务负载都匹配时,才能共同带来稳定收益。


相关推荐