尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

保姆级教程 | 两台 DGX Spark 双机部署 DeepSeek V4 Flash(0731),从零到跑通 OpenAI 兼容 API

保姆级教程 | 两台 DGX Spark 双机部署 DeepSeek V4 Flash(0731),从零到跑通 OpenAI 兼容 API 本教程基于开源项目 spark-vllm-dockerB12X 内核分支在双机 DGX Spark 集群上实测跑通。覆盖物理连接 → 网络配置 → 免密 SSH → 构建镜像 → ModelScope 下载模型 → 启动 vLLM → 验证推理以及一路踩过的坑。一、写在前面这套方案能给你什么1.1 硬件主角DGX SparkNVIDIA DGX Spark代号 GB10是一台「桌面级 AI 超算」单颗 GB10 SoC128GB 统一内存LPDDR5xCPU/GPU 共享单卡 GPU算力主打 FP4/FP8 推理场景自带 ConnectX-7 网络控制器单根 QSFP 线缆可提供最高200GRDMARoCE互连出厂 Ubuntu Docker开箱即用。单机跑大模型往往显存不够于是「双机/多机张量并行」成了把大模型搬到本地跑的关键玩法。DeepSeek V4 Flash 正是那种「单机装不下、双机刚好」的模型。1.2 模型主角DeepSeek V4 Flash 0731deepseek-ai/DeepSeek-V4-Flash-0731是 DeepSeek 在 2026-07-31 发布的正式版推理模型MIT 开源指标数值架构DeepSeekMoEMixture-of-Experts总参数量284B含 DSpark 投机解码模块后约 304B单 token 激活参数13B上下文窗口1M tokens最大输出约 38 万 token权重精度路由专家FP4非专家层 FP8模型体积约167GB注意力混合注意力CSA压缩稀疏注意力 HCA高度压缩注意力KV 缓存省约 90%这个量级 1M 上下文单台 DGX Spark128GB 统一内存装不下正是需要2 台做张量并行TP2的典型场景。1.3 部署方案全貌┌────────────────────────────┐ QSFP 直连 / ConnectX 200G ┌────────────────────────────┐ │ DGX Spark 节点 A │ ════════════════════════════ │ DGX Spark 节点 B │ │ (head / 主控) │ rocep1s0f0,roceP2p1s0f0 │ (worker / 从节点) │ │ GB10 × 1 · 128GB 统一内存 │ ◄──── NCCL RDMA ────► │ GB10 × 1 · 128GB 统一内存 │ │ vLLM · TP rank 0 · :8000 │ │ vLLM · TP rank 1 │ └────────────────────────────┘ └────────────────────────────┘用开源项目spark-vllm-docker的B12X 镜像基于 SM121 架构做了大量手写 kernel 优化模型通过ModelScope魔搭下载国内网络友好--no-ray多节点后端PyTorch 分布式--tp 2让两台机器各出一块 GPU 张量并行。1.4 前置清单项目说明硬件2 × DGX SparkUbuntu Docker网络1 根 QSFP 线缆直连可选再加 10G 管理网软件git、python3.10、Docker系统自带、uv/uvx时间网络/SSH 约 30 分钟镜像构建约 2–40 分钟取决于网络模型下载约 1–2 小时本文使用节点 A 192.168.100.10节点 B 192.168.100.11同一网段内即可请按你实际规划替换。二、物理连接与网络配置最容易出错的环节2.1 QSFP 直连把两台 Spark 用一根 QSFP 线缆连起来插在最外侧的 QSFP 口从背面看是右边那个。实测连一根线就能跑满带宽双口都插没有额外收益不必多插。更多台机器才需要 RoCE 交换机或 mesh 组网。2.2 理解 ConnectX 的「孪生口」DGX Spark 的 ConnectX 很特别单根线缆背后其实有2 组 PCIe 5.0 x4 链路每组链路由一对「Ethernet RoCE」接口组成$ ibdev2netdev rocep1s0f0 port1enp1s0f0np0(Down)rocep1s0f1 port1enp1s0f1np1(Up)roceP2p1s0f0 port1enP2p1s0f0np0(Down)roceP2p1s0f1 port1enP2p1s0f1np1(Up)也就是说一个物理口对应两组「Ethernet RoCE」Ethernetenp1s0f1np1、enP2p1s0f1np1RoCE/IBrocep1s0f1、roceP2p1s0f1vLLM 走的是RoCE RDMAEthernet 口只要配个 IP 用于带外控制即可。为了榨满带宽NCCL 需要同时用两个 RoCE 口NCCL_IB_HCArocep1s0f1,roceP2p1s0f1。上面的口名是文档示例插的是「右一」口。具体叫什么取决于你插的物理口本文实测机器插的口对应enp1s0f0np0Ethernetrocep1s0f0/roceP2p1s0f0RoCE。launch-cluster.sh会自动探测并设好NCCL_IB_HCA你只要按 2.3 把对应的 Ethernet 口配上 IP 即可。好消息launch-cluster.sh会自动探测这些接口并设置好环境变量你只需要把 Ethernet 口配好静态 IP。2.3 配置静态 IP给两台机器的 ConnectX Ethernet 口配上同一网段的静态 IP。注意接口名取决于你插的物理 QSFP 口本文实测机器为enp1s0f0np0用ip link或ibdev2netdev确认你实际的口名插另一个口可能是enp1s0f1np1。一条命令立即生效临时重启会丢—— 本文实测用法节点 A主节点sudoipaddradd192.168.100.10/24 dev enp1s0f0np0sudoiplinksetenp1s0f0np0 up节点 B工作节点sudoipaddradd192.168.100.11/24 dev enp1s0f0np0sudoiplinksetenp1s0f0np0 up⚠️ 两个节点配同一个网段即可互通。想榨满 200G 带宽可以把每个口的两组孪生口enp1s0f0np0与enP2p1s0f0np0都配 IP但两个孪生口千万不要配在同一网段会干扰自动发现并搞乱路由。NCCL 走 RoCE 不走 Ethernet本文实测只配一个 Ethernet 口就足够。launch-cluster.sh会自动探测 RoCE 接口并设置NCCL_IB_HCA。2.4 验证网络ipaddr show enp1s0f0np0# 确认节点 A 拿到 192.168.100.10ping-c3192.168.100.11# 节点 A 上 ping 节点 B2.5 配置免密 SSH主节点上生成密钥并分发到所有从节点后续launch-cluster.sh/build-and-copy.sh都要靠免密 SSH 跨机操作ssh-keygen-trsa-b4096-f~/.ssh/id_rsa-Nssh-copy-id root192.168.100.11sshroot192.168.100.11# 验证免密登录成功建议顺手把PermitRootLogin等 sshd 配置检查一遍确保 root 能免密登录。没有 root 权限后面容器/系统级操作会很痛苦。三、克隆项目与环境准备在主节点节点 A上执行。3.1 克隆 spark-vllm-dockergitclone https://github.com/eugr/spark-vllm-docker.gitcdspark-vllm-docker3.2 安装 uv / uvx项目脚本依赖uvx用来下载模型等curl-LsSfhttps://astral.sh/uv/install.sh|sh国内网络慢的话可以换镜像curl-LsSfhttps://astral.org.cn/uv/install.sh|sh装完把$HOME/.local/bin加进PATH然后确认source$HOME/.local/bin/env uvx--version3.3 生成 .env自动发现节点网络 免密 SSH 就绪后让项目自动探测集群并写入.env./run-recipe.sh--discover它会把CLUSTER_NODES、COPY_HOSTS等探测结果写进.env。也可以手动写格式见.env.exampleCLUSTER_NODES192.168.100.10,192.168.100.11COPY_HOSTS192.168.100.11CLUSTER_NODES第一个 IP 是主节点head。COPY_HOSTS是镜像/模型分发目标通常就是所有从节点。四、构建并分发 B12X 镜像4.1 为什么是 B12XDeepSeek V4 Flash 用到的 B12XSM120/121手写 kernelMLA 稀疏注意力、FP8 GEMM、MoE、MHC 超连接等目前主要在B12X 分支的 vLLM 里有。所以不能用默认镜像要用--exp-b12x--exp-b12x默认直接拉取预编译好的eugr/spark-vllm-b12x:latest快想从源码编译就加--rebuild-vllm慢20–40 分钟注意B12X没有发布 vLLM wheels所以--use-wheels与它不兼容。4.2 一条命令构建 分发./build-and-copy.sh --exp-b12x-c--exp-b12x选择 B12X 镜像预设镜像 tag 为vllm-node-b12x-c--copy-to把镜像分发到COPY_HOSTS来自.env或自动发现里的所有节点。网络慢的话初次拉取 base 镜像 B12X 镜像可能耗时较长请耐心等待。之后重复构建会走缓存快很多。隔一段时间可以用docker system df和docker builder prune --filter until72h清理构建缓存。验证一下两台机器上都有镜像dockerimages|grepb12xsshroot192.168.100.11docker images | grep b12x五、让模型从 ModelScope 下载国内网络友好5.1 思路vLLM 默认从 HuggingFace 拉模型国内经常拉不动。好在 vLLM 原生支持环境变量VLLM_USE_MODELSCOPETRUE启动时会改从ModelScope魔搭下载。模型 ID 不变deepseek-ai/DeepSeek-V4-Flash-0731。但有一个前提镜像里要装了modelscope这个 Python 包。官方 vLLM 镜像一般没装需要在容器里pip install modelscope。5.2install-modelscope这个 mod项目支持「mod」机制在容器启动前注入一段初始化脚本。仓库里的mods/install-modelscope/run.sh就是干这个的完整内容如下#!/bin/bashset-euopipefailPREFIX[install-modelscope]# Tsinghua PyPI mirror (fast for CN networks)INDEX_URLhttps://pypi.tuna.tsinghua.edu.cn/simple# vLLMs modelscope_list_repo_files() expects the pre-1.38 get_model_files()# response format (files carry a Type key). modelscope1.38.0 broke that and# raises KeyError(Type) / unexpected revision kwarg. vLLMs supported range# is 1.18.1,1.38; this pin forces the newest compatible build (1.37.x).MODELSCOPE_SPECmodelscope1.18.1,1.38echo Installing modelscope into the vLLM runtime environment echo$PREFIXusing PyPI mirror:$INDEX_URLecho$PREFIXinstalling:$MODELSCOPE_SPEC(pinned for vLLM compat)if!command-vuv/dev/null21;thenecho$PREFIXuv not found in container; falling back to pip2python3-mpipinstall-i$INDEX_URL$MODELSCOPE_SPECelseuv pipinstall--index-url$INDEX_URL$MODELSCOPE_SPECfipython3 -EOF try: import modelscope print(fOK: modelscope {modelscope.__version__} is importable) except Exception as exc: raise SystemExit(fmodelscope import failed: {exc}) EOFecho OK: modelscope installed, VLLM_USE_MODELSCOPE will work inside this container 要点优先用容器里的uv pip installuv不存在就退回pip走清华 PyPI 镜像加速国内下载装完会导入一次modelscope自检。deepseek-v4-flash-0731这个 recipe 已经把 mod 和 env 都配好了见下一节的 YAMLmods:-mods/instanttensor-hybrid-draft-loader-mods/install-modelscopeenv:VLLM_USE_MODELSCOPE:TRUE所以你什么都不用改直接跑 recipe 即可容器启动后先装 modelscopevLLM 再从 ModelScope 下载模型。5.3 版本 pin 的来龙去脉重要为什么把 modelscope 钉在1.18.1,1.38因为modelscope1.38.02026-07 发布改了HubApi.get_model_files()的响应格式而 vLLM 的modelscope_list_repo_files()还在用旧格式会直接报KeyError: Type所以强制装 1.37.x 这个最新兼容版本。等 vLLM 修了这个问题见 vllm-project/vllm#47358就可以放松上限。5.4 宿主机预下载可选为了省时间vLLM 启动时才在容器内下载模型容器重建后会重新下载。想省时间可以先在宿主机用 modelscope CLI 预下载pipinstallmodelscope modelscope download--modeldeepseek-ai/DeepSeek-V4-Flash-0731\--local_dir./models/deepseek-ai/DeepSeek-V4-Flash-0731但注意ModelScope 缓存默认在~/.cache/modelscope/hub它不在 launch-cluster.sh 的默认挂载目录里默认只挂 vllm/flashinfer/triton/tilelang 和 HuggingFace 缓存。要让容器看到宿主机缓存需要手动挂载./run-recipe.sh deepseek-v4-flash-0731 --no-ray--tp2--namevllm_ds4\-v~/.cache/modelscope:/root/.cache/modelscope本教程默认走「容器内自动从 ModelScope 下载」不需要上面这步。六、启动集群./launch-cluster.sh-dstart-d是 daemon 模式把两台机器上的vllm_node容器以sleep infinity方式后台拉起供后续exec使用。这一步做完可以确认dockerps# 本机容器sshroot192.168.100.11docker ps# 对端容器七、一行命令启动 vLLM核心命令cd~/spark-vllm-docker ./run-recipe.sh deepseek-v4-flash-0731 --no-ray--tp2--namevllm_ds4--served-model-name deepseek-v4-flash和--api-key {api_key}已经写进 recipe 的 YAML见 7.1启动时自动带上不需要再在命令行传。要换 API 密钥直接改recipes/deepseek-v4-flash-0731.yaml里defaults.api_key的值即可。参数拆解参数含义deepseek-v4-flash-0731recipe 名recipes/deepseek-v4-flash-0731.yaml--no-ray多节点用 PyTorch 分布式后端不依赖 Ray双机 B12X 的默认推荐--tp 2张量并行度 2两台机器各出一块 GPU模型权重一分为二加载--name vllm_ds4容器别名方便docker ps/docker logs识别--served-model-name deepseek-v4-flash给 API 起个短名字调用时model字段就用它在 recipe 的command里配好见 7.1--api-key {api_key}为 API 加鉴权所有请求都要带Authorization: Bearer头密钥填在 recipe 的defaults.api_key想指定上下文长度 / 显存占用./run-recipe.sh deepseek-v4-flash-0731 --no-ray--tp2--namevllm_ds4\--max-model-len262144--gpu-mem0.85recipe 里的--max-model-len默认是autovLLM 会根据显存自动计算固定长度就显式传。--served-model-name、--api-key已写在 recipe YAML 里见 7.1无需命令行传其他自定义 vLLM 参数在--之后追加即可。7.1 这个 recipe 长什么样recipes/deepseek-v4-flash-0731.yaml的内容大致如下已含 ModelScope 相关改动model:deepseek-ai/DeepSeek-V4-Flash-0731container:vllm-node-b12xbuild_args:---exp-b12xcluster_only:truemods:-mods/instanttensor-hybrid-draft-loader# 主模型 InstantTensor投机草稿懒加载-mods/install-modelscope# 容器内安装 modelscopedefaults:port:8000host:0.0.0.0tensor_parallel:2gpu_memory_utilization:0.85max_model_len:autoblock_size:256max_num_seqs:8max_num_batched_tokens:8192max_cudagraph_capture_size:64num_speculative_tokens:5api_key:你的API密钥# 填你自己的 API 密钥env:VLLM_USE_MODELSCOPE:TRUE# 从 ModelScope 下载模型CUTE_DSL_ARCH:sm_121aVLLM_USE_AOT_COMPILE:1# AOT 编译VLLM_USE_B12X_WO_PROJECTION:1# B12X 系列 kernel 开关VLLM_USE_B12X_MHC:1VLLM_USE_B12X_FP8_GEMM:1VLLM_USE_B12X_MOE:1VLLM_USE_B12X_SPARSE_INDEXER:1VLLM_USE_V2_MODEL_RUNNER:1...command:|vllm serve deepseek-ai/DeepSeek-V4-Flash-0731 \ --host {host} \ --port {port} \ --trust-remote-code \ --tensor-parallel-size {tensor_parallel} \ --kv-cache-dtype fp8 \ --block-size {block_size} \ --max-model-len {max_model_len} \ --max-num-seqs {max_num_seqs} \ --max-num-batched-tokens {max_num_batched_tokens} \ --gpu-memory-utilization {gpu_memory_utilization} \ --enable-prefix-caching \ --tokenizer-mode deepseek_v4 \ --tool-call-parser deepseek_v4 \ --enable-auto-tool-choice \ --reasoning-parser deepseek_v4 \ --reasoning-config {{reasoning_parser:deepseek_v4,reasoning_start_str:,reasoning_end_str:}} \ --default-chat-template-kwargs.thinkingtrue \ --default-chat-template-kwargs.reasoning_efforthigh \ --load-format instanttensor \ --moe-backend b12x \ --linear-backend b12x \ --attention-backend B12X_MLA_SPARSE \ --served-model-name deepseek-v4-flash \ --api-key {api_key} \ --max-cudagraph-capture-size {max_cudagraph_capture_size} \ --compilation-config {{cudagraph_mode:FULL_AND_PIECEWISE,custom_ops:[all]}} \ --speculative-config {{method:dspark,num_speculative_tokens:{num_speculative_tokens},draft_sample_method:probabilistic,attention_backend:B12X_MLA_SPARSE}}注意 YAML 里的{{...}}是转义后的模板变量run-recipe会用defaults里的值替换{host}、{port}、{api_key}等对应run-recipe.py里的command.format(**params)。--served-model-name和--api-key {api_key}就配置在这里。启动命令里的关键 vLLM 参数--kv-cache-dtype fp8KV 缓存用 FP8大幅省显存--load-format instanttensor流式加载避免把 167GB 权重一次性塞进内存--attention-backend B12X_MLA_SPARSEB12X 稀疏 MLA 注意力--speculative-config {method:dspark,num_speculative_tokens:5,...}DSpark 投机解码草稿模型每步猜 5 个 token显著提速--tokenizer-mode deepseek_v4、--reasoning-parser deepseek_v4、--tool-call-parser deepseek_v4模型自带的推理/工具调用格式支持--default-chat-template-kwargs.thinkingtrue/reasoning_efforthigh默认开启思考模式、高推理强度--served-model-name deepseek-v4-flash给 API 起短名调用时model字段用它即可--api-key {api_key}API 鉴权密钥填在defaults.api_keyrun-recipe会自动替换{api_key}。7.2 启动日志里看什么启动时会出现几段关键日志正常现象耐心等待容器内安装modelscopeinstall-modelscopemod 的输出vLLM 从 ModelScope 下载模型约 167GB取决于带宽AOT 编译VLLM_USE_AOT_COMPILE首次会花一段时间生成编译产物之后走缓存InstantTensor 流式加载权重NCCL/RDMA 初始化两个 rank 握手最后出现Application startup complete或监听0.0.0.0:8000的日志。建议用 tmux 跑别关终端tmux new-svllm ./run-recipe.sh deepseek-v4-flash-0731 --no-ray--tp2--namevllm_ds4# Ctrl-b d 退出 tmux随时 tmux a -t vllm 回来八、验证与调用服务监听在主节点的:8000即http://主节点IP:8000。本文主节点为192.168.100.10如需从外部访问用主节点的对外路由 IP例如10.0.0.28请换成你自己的即可。8.1 检查模型列表curlhttp://192.168.100.10:8000/v1/models\-HAuthorization: Bearer 你的API密钥能列出deepseek-v4-flash就是--served-model-name指定的名字就说明加载成功。开启--api-key后所有请求都要带上这个鉴权头否则返回 401。8.2 发起一次对话含推理过程curlhttp://192.168.100.10:8000/v1/chat/completions\-HContent-Type: application/json\-HAuthorization: Bearer 你的API密钥\-d{ model: deepseek-v4-flash, messages: [{role: user, content: 用三句话介绍 DGX Spark}], max_tokens: 512, reasoning_effort: high }响应会带 DeepSeek 风格的reasoning_content思考过程和content最终回答。8.3 用 Python OpenAI SDK 调用fromopenaiimportOpenAI clientOpenAI(api_key你的API密钥,# 与 --api-key 保持一致base_urlhttp://192.168.100.10:8000/v1,)respclient.chat.completions.create(modeldeepseek-v4-flash,# --served-model-name 指定的名字messages[{role:user,content:用三句话介绍 DGX Spark}],max_tokens512,extra_body{reasoning_effort:high},)print(resp.choices[0].message.content)8.4 在 GPU 上确认模型已加载在任意节点执行nvidia-smi能直接看到本节点的 vLLM 张量并行 worker 进程----------------------------------------------------------------------------------------- | NVIDIA-SMI 580.142 Driver Version: 580.142 CUDA Version: 13.0 | --------------------------------------------------------------------------------------- | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 NVIDIA GB10 On | 0000000F:01:00.0 Off | N/A | | N/A 49C P0 12W / N/A | Not Supported | 0% Default | | | | N/A | --------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | || | 0 N/A N/A 3300 G /usr/lib/xorg/Xorg 56MiB | | 0 N/A N/A 3445 G /usr/bin/gnome-shell 49MiB | | 0 N/A N/A 764903 C VLLM::Worker_TP0 10121... | -----------------------------------------------------------------------------------------几个关键点VLLM::Worker_TP0表示本节点是张量并行 rank 0主节点对端节点节点 B会显示VLLM::Worker_TP1用ssh root192.168.100.11 nvidia-smi确认两台机器都应看到各自的 worker 进程有这个进程在就说明模型权重已在本节点加载、vLLM worker 正常运行空载时GPU-Util 0%、功耗只有十几瓦是正常的有请求进来利用率会立刻拉高注意Memory-Usage显示Not Supported因为 GB10 是CPU/GPU 统一内存架构128GB 共用nvidia-smi不单独报告显存占用这是正常现象不代表没吃显存。这样你就有了一套本地自托管的、OpenAI 兼容的 DeepSeek V4 Flash 推理服务可以接进各类 Agent/工作流。九、踩坑记录FAQ9.1modelscope报KeyError: TypevLLM 从 ModelScope 拉模型时崩报错KeyError(Type)/ unexpectedrevisionkwarg。原因modelscope1.38.0改了 API 响应格式和当前 vLLM 不兼容。解决本项目install-modelscopemod 已把版本钉在modelscope1.18.1,1.38直接用即可。手动的等价做法在容器里执行uv pip install modelscope1.18.1,1.38。9.2 重启容器后模型又从头下载ModelScope 缓存默认在容器内~/.cache/modelscope/hub不在 launch-cluster.sh 的默认挂载列表里容器重建即消失。解决任选其一接受每次重建重新下载宿主机预下载后挂载-v ~/.cache/modelscope:/root/.cache/modelscope给launch-cluster.sh的CACHE_DIRS_TO_CREATE增加~/.cache/modelscope。9.3:8000端口连不通排查顺序dockerps# 容器是否在跑、名字是否为 vllm_ds4ss-lntp|grep8000# 端口是否监听curlhttp://127.0.0.1:8000/v1/models\-HAuthorization: Bearer 你的API密钥# 本机先试宿主机防火墙挡了的话很多 DGX Spark 默认 iptables 策略较严sudoiptables-L-n# 看看是不是被 DROP 了sudoiptables-F# 临时清空生产环境请用白名单规则9.4 改了配置/参数重跑总是起不来先用docker ps -a找到旧容器停掉再重跑dockerps-adockerstop容器ID./run-recipe.sh deepseek-v4-flash-0731 --no-ray--tp2--namevllm_ds4launch-cluster.sh对已存在的容器一般是复用顽固的陈旧容器需要手动清理。9.5 大模型用--load-format fastsafetensors内存爆炸项目 README 明确警告模型加载后占用超过可用 RAM 的 85% 时别用fastsafetensors可能直接 OOM。DeepSeek V4 Flash 这种 167GB 的模型请用 recipe 默认的--load-format instanttensor流式加载到显存。9.6--tp到底该设几DGX Spark 每台1 块 GPU所以双机--tp 2正好用满两台。--tp会被 launch-cluster 换算成需要的节点数双机集群--tp 2用两台--tp 4会自动用满 4 台如果你有更多 Spark。别把--tp设成单机核数那是误解。9.7 国内拉 base 镜像太慢给 Docker 配置国内镜像加速器registry mirrorbuild-and-copy.sh默认拉eugr/spark-vllm-b12x:latest如果已存在于本机就不会重复拉。9.8 首次启动很久没反应大概率在 AOT 编译或从 ModelScope 下载权重用docker logs -f vllm_ds4对端则ssh ... docker logs -f vllm_ds4看进度别急着杀进程。十、调参建议与性能投机解码recipe 已开启 DSparknum_speculative_tokens: 5草稿模型随主权重一起加载。想省显存可降到 3想更快可尝试 6–8观察--speculative-config里的接受率日志。KV 缓存--kv-cache-dtype fp8--block-size 256配合模型自带的 CSA/HCA 注意力1M 上下文才能塞进显存。不要关 FP8 KV。推理强度通过请求参数reasoning_effortlow/high/max在速度与深度间取舍不需要思考的简单任务设low或thinkingfalse提速明显。显存余量--gpu-memory-utilization 0.85是较稳的默认跑满 1M 上下文长任务时可以把并发压小--max-num-seqs或适当降长度。做一次吞吐测试用 2–4 并发请求打满观察 TTFT首 token 延迟与 TPOT每 token 生成时间再微调投机 token 数。每个人的带宽/任务不同没有一个万能数字。十一、参考链接开源项目spark-vllm-docker含 Networking 指南、Recipes 文档模型介绍Together AI 模型卡、The Batch 报道、Open Source For Youmodelscope 版本兼容问题vllm-project/vllm#47358
返回列表