
使用 SkyPilot 与 vLLM 在任意基础设施上部署 DeepSeek-R1 蒸馏模型8B 到 70B 完整实战指南【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilot本文以 SkyPilot 开源仓库中的 llm/deepseek-r1-distilled 示例为核心系统讲解如何在本地 GPU 工作站、Kubernetes 集群以及 15 公有云上用一条sky launch命令拉起 vLLM 服务并托管 DeepSeek-R1 蒸馏模型8B / 70B。读完本文你将掌握 DeepSeek-R1 蒸馏模型的最小可运行配置、GPU 选型矩阵、vLLM OpenAI 兼容端点调用方法以及向 SkyServe 多副本高可用服务升级的路径。DeepSeek-R1 蒸馏模型为什么适合用 SkyPilot 部署2025 年 1 月 20 日DeepSeek AI 发布了 DeepSeek-R1 系列模型参数规模最高达 671B。R1 在训练中自然涌现出大量强大的推理行为chain-of-thought reasoning其推理能力在多项评测中达到或接近当时闭源顶级模型 OpenAI-o1 的水平并成为首批在该能力维度上逼近闭源模型的开放权重 LLM 之一。对大多数团队而言直接部署 671B 级别的稠密/ MoE 原版模型需要 H100/H200 级别的多卡多机资源。SkyPilot 在 llm/deepseek-r1-distilled 目录下提供了针对蒸馏小模型的开箱即用方案通过 deepseek-r1-vllm.yaml 一个配置文件即可在 L4、A10G、A100 等单机单卡/双卡环境下用 vLLM 托管DeepSeek-R1-Distill-Llama-8B与DeepSeek-R1-Distill-Llama-70B。与原版 671B 的分布式 SGLang 方案见 llm/deepseek-r1/README.md互补蒸馏路线让普通团队用消费级数据中心 GPU 就能体验 R1 的推理能力。本指南默认使用 vLLM 作为推理引擎——它是开源社区中吞吐性能出色的 LLM 推理与服务库且提供 OpenAI 兼容的 HTTP API便于直接对接现有应用。Step 0接入任意基础设施安装 SkyPilot在本地控制机安装 SkyPilotpip install skypilot-nightly[all][all]会一并安装各云厂商的 SDK 依赖。安装完成后根据你计划运行 DeepSeek-R1 的基础设施类型选择下一步场景 A已有本地 GPU 机器或 GPU 集群—— 直接让 SkyPilot 接管现有机器sky local upsky local up会在现有机器或本机上初始化一个 SkyPilot 管理集群。从源码看该命令由 sky/client/cli/command.py 的local_up入口实现底层基于 kind 创建一个名为kind-skypilot的 Kubernetes 上下文见 sky/provision/kubernetes/utils.pySkyPilot 随后以 Kubernetes 模式调度这些本地 GPU。场景 B使用公有云15 云厂商—— 校验云凭据与配额sky checksky check会逐个探测各云厂商的认证是否就绪并打印可用的云与区域列表。完成任一场景后SkyPilot 即可在对应的基础设施上调度任务。Step 1一条命令拉起 DeepSeek-R1 蒸馏模型8B 模型sky launch deepseek-r1-vllm.yaml \ -c deepseek \ --env MODEL_NAMEdeepseek-ai/DeepSeek-R1-Distill-Llama-8B \ --gpus L4:170B 模型sky launch deepseek-r1-vllm.yaml \ -c deepseek \ --env MODEL_NAMEdeepseek-ai/DeepSeek-R1-Distill-Llama-70B \ --gpus A100-80GB:2命令说明-c deepseek为集群命名后续sky status、sky down均以此名称引用--env MODEL_NAME...覆盖 YAML 中默认的模型 ID指定要加载的 Hugging Face 模型--gpus GPU:数量覆盖 YAML 中的加速器声明指定 GPU 型号与卡数。若不确定自己可用哪些 GPU可运行sky gpus list查看当前账号/集群可访问的全部 GPU 型号。运行前也可先查看可用 GPUsky gpus list。模型与 GPU 兼容性矩阵原 README 给出了如下参考矩阵✅ 表示可运行❌ 表示不可行带说明的项需要附加参数GPUDeepSeek-R1-Distill-Qwen-7BDeepSeek-R1-Distill-Llama-70BDeepSeek-R1671BL4:1✅需--max-model-len 4096❌❌L4:8✅❌❌A100:8✅✅❌A100-80GB:12✅✅✅需--max-model-len 4096解读要点7B 级蒸馏模型对显存要求很低单张 L424GB 显存即可承载但长序列时需要将最大上下文长度限制在 4096 token70B 蒸馏模型至少需要 2 张 A100-80GB通过 vLLM 的张量并行将模型切分到多卡单张 L4 无法容纳671B 原版模型需要 12 张 A100-80GB 且同样限制上下文长度生产级多机方案请参考 llm/deepseek-r1。Step 2获取结果——OpenAI 兼容端点调用获取集群 IPSkyPilot 会把集群的对外 IP 写入集群状态ENDPOINT$(sky status --ip deepseek)8B 模型请求示例curl http://$ENDPOINT:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: deepseek-ai/DeepSeek-R1-Distill-Llama-8B, messages: [ { role: system, content: You are a helpful assistant. }, { role: user, content: Who are you? } ] } | jq .70B 模型请求示例curl http://$ENDPOINT:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: deepseek-ai/DeepSeek-R1-Distill-Llama-70B, messages: [ { role: system, content: You are a helpful assistant. }, { role: user, content: how many rs are in strawberry } ] } | jq .响应解读think思考链 最终答案R1 蒸馏模型会在响应中以think.../think标签输出可见的推理过程随后给出最终结论。以下是 Who are you? 的完整响应示例{ id: chatcmpl-507f467863344f31b98d8bf36b9a3c1c, object: chat.completion, created: 1737503962, model: deepseek-ai/DeepSeek-R1-Distill-Llama-70B, choices: [ { index: 0, message: { role: assistant, content: think\n\n/think\n\nGreetings! Im DeepSeek-R1, an artificial intelligence assistant created by DeepSeek. Im at your service and would be delighted to assist you with any inquiries or tasks you may have., tool_calls: [] }, logprobs: null, finish_reason: stop, stop_reason: null } ], usage: { prompt_tokens: 13, total_tokens: 57, completion_tokens: 44, prompt_tokens_details: null }, prompt_logprobs: null }针对 how many rs are in strawberry 这类需要逐字符推理的问题模型会展开详细思考链。例如它对 strawberry 的逐字母拆解S-T-R-A-W-B-E-R-R-Y、位置标注第 3/8/9 位为 R、以及“straw 含 1 个 R、berry 含 2 个 R”的组合式论证最终给出结论“strawberry 中包含 3 个 R”。其完整响应结构如下思考链内容较长此处展示 JSON 骨架{ id: chatcmpl-d532bd1c1738493ab9c8c906550044bf, object: chat.completion, created: 1737507945, model: deepseek-ai/DeepSeek-R1-Distill-Llama-70B, choices: [ { index: 0, message: { role: assistant, content: think\nOkay, so I need to figure out how many times the letter R appears in the word \strawberry.\...\nThe word \strawberry\ contains three Rs. \n\nStep-by-step breakdown:\n- The first R is the third letter.\n- The second R is the eighth letter.\n- The third R is the ninth letter.\n\nAnswer: There are 3 Rs in \strawberry.\, tool_calls: [] }, logprobs: null, finish_reason: stop, stop_reason: null } ], usage: { prompt_tokens: 15, total_tokens: 985, completion_tokens: 970, prompt_tokens_details: null }, prompt_logprobs: null }可以看到usage.completion_tokens970远大于prompt_tokens15这正是 R1 推理模型的典型特征绝大多数生成 token 都消耗在思考链上。在接入业务系统时可自行决定是否剥离think标签再展示给最终用户。深入解析 deepseek-r1-vllm.yaml一个可复用的 vLLM 服务模板deepseek-r1-vllm.yaml 是整套方案的灵魂全文件仅 22 行却完整覆盖了环境变量、资源声明、依赖安装与服务启动四大部分envs: MODEL_NAME: deepseek-ai/DeepSeek-R1-Distill-Llama-8B MAX_MODEL_LEN: 4096 resources: accelerators: {L4:1, A10G:1, A10:1, A100:1, A100-80GB:1} ports: - 8000 disk_tier: best setup: | uv pip install transformers4.48.1 uv pip install vllm0.6.6.post1 run: | echo Starting vllm openai api server... python -m vllm.entrypoints.openai.api_server \ --host 0.0.0.0 \ --tensor-parallel-size $SKYPILOT_NUM_GPUS_PER_NODE \ --model $MODEL_NAME \ --max-model-len $MAX_MODEL_LENenvs可被命令行覆盖的模型参数MODEL_NAME默认加载deepseek-ai/DeepSeek-R1-Distill-Llama-8B可通过--env MODEL_NAME...覆盖为 70B 或其他蒸馏变体MAX_MODEL_LEN默认 4096 token控制 vLLM 的最大上下文长度。显存紧张如单张 L4 跑 7B/8B 蒸馏模型时必须限制该值避免 OOM。resourcesSkyPilot 的按需资源声明accelerators: {L4:1, A10G:1, A10:1, A100:1, A100-80GB:1}声明“任一可用即可”的加速器候选集合。SkyPilot 会在这些型号中按成本/可用性自动选择从而在不同云、不同区域间自动 failover。命令行--gpus可进一步覆盖此集合ports: 8000向 SkyPilot 声明服务监听端口用于后续自动获取 endpoint 与安全组/负载均衡配置disk_tier: best请求高性能磁盘。这对下载数十 GB 模型权重、以及 vLLM 权重映射阶段显著有利。disk_tier在 sky/resources.py 中解析为DiskTier枚举可选值由supported_tiers校验非法值会直接抛错。setup秒级依赖安装uv pip install transformers4.48.1 uv pip install vllm0.6.6.post1SkyPilot 将setup块中的命令在任务首次调度时执行并把结果缓存为集群镜像后续复用时跳过。这里通过uv快速固定 vLLM 0.6.6.post1 与 transformers 4.48.1 的版本组合保证推理行为可复现。runvLLM OpenAI 服务器启动命令python -m vllm.entrypoints.openai.api_server \ --host 0.0.0.0 \ --tensor-parallel-size $SKYPILOT_NUM_GPUS_PER_NODE \ --model $MODEL_NAME \ --max-model-len $MAX_MODEL_LEN关键点在于--tensor-parallel-size $SKYPILOT_NUM_GPUS_PER_NODESKYPILOT_NUM_GPUS_PER_NODE是 SkyPilot 自动注入的任务环境变量定义于 sky/skylet/constants.py由 sky/backends/task_codegen.py 根据任务实际申请到的 GPU 数量math.ceil(num_gpus)在运行时填充也就是说无论你在命令行申请L4:1还是A100-80GB:2vLLM 的张量并行度都会自动与节点内 GPU 数对齐无需手工维护 YAML——这是“一个 YAML 适配多种 GPU 规格”的关键机制。进阶从单副本到 SkyServe 多副本高可用服务上面的sky launch只启动单副本 vLLM 服务。当需要更高吞吐、负载均衡、自动扩缩容与故障自愈时可在同一份 YAML 顶部追加service段并改用sky serve up。仓库中 examples/serve/vllm.yaml 与 llm/vllm/service.yaml 给出了标准写法service: readiness_probe: path: /v1/models # vllm 安装与权重加载耗时较长给足冷启动时间 initial_delay_seconds: 1200 replicas: 2 resources: ports: 8000 accelerators: {L4:1, A10G:1, A10:1, A100:1, A100-80GB:1}启动与查询sky serve up -n deepseek-serve deepseek-r1-vllm.yaml ENDPOINT$(sky serve status --endpoint deepseek-serve) curl $ENDPOINT/v1/chat/completions \ -H Content-Type: application/json \ -d { model: deepseek-ai/DeepSeek-R1-Distill-Llama-8B, messages: [{role: user, content: Who are you?}] }SkyServe 会自动在多个副本间做负载均衡并通过/v1/models就绪探针判断副本是否可服务replicas与initial_delay_seconds可根据流量和模型冷启动耗时调整。更多说明可参考仓库中的 examples/serve 示例目录。关闭与清理测试完毕后释放集群资源sky down deepseeksky down会终止-c deepseek对应的集群及其全部云资源实例、磁盘、IP避免持续计费。若使用了sky serve up对应服务用sky serve down deepseek-serve关闭。小结通过 llm/deepseek-r1-distilled 示例可以总结出一条清晰的 DeepSeek-R1 蒸馏模型落地路径pip install skypilot-nightly[all]安装 SkyPilot用sky local up本地 GPU或sky check公有云接入基础设施用sky launch deepseek-r1-vllm.yaml --env MODEL_NAME... --gpus ...一行拉起服务用sky status --ip deepseek获取 endpoint通过 OpenAI 兼容 API 调用并利用think标签展示或剥离推理过程生产场景追加service段升级为 SkyServe 多副本服务用sky down/sky serve down释放资源。这套模式同样适用于仓库 llm 目录下的 vLLM、SGLang、DeepSeek、Llama、Qwen 等其他大模型示例——更换MODEL_NAME与 GPU 规格即可快速复刻让“把任意 LLM 跑在任意基础设施上”真正变成一条命令的事。【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考