第三方工具集成部署DeepSeek系列模型
前言
DeepSeek作为当前领先的开源大模型体系,其V3和R1系列模型凭借强大的自然语言处理能力和灵活的架构设计,已成为企业智能化转型的重要基础设施。为满足不同场景下的部署需求,社区生态已形成多种成熟的技术方案,本文重点介绍四款主流部署工具的集成方法,并提供官方资源索引:
SGLang
官网 | 专为大模型推理优化的高性能框架,通过RadixAttention技术和零开销调度器实现行业领先的吞吐性能,支持DeepSeek全系模型的FP8/INT4量化部署
LMDeploy
官网 | 由商汤科技团队维护的国产部署方案,提供从模型量化到服务编排的全流程工具链,支持与昇腾/海光等国产芯片深度适配
vLLM
官网 | 基于PagedAttention技术的高吞吐推理框架,在NVIDIA/AMD GPU集群上展现卓越性能,支持多节点张量并行
Ollama
deepseek_R1官网 | 极简本地化部署方案,通过GGUF格式实现消费级硬件的大模型运行,提供开箱即用的对话式交互体验
建议开发者根据计算资源规模(单卡/多卡)、性能需求(吞吐量/延迟)、部署环境(云端/边缘端)三个维度选择适配方案。本文所述方案均经过2025年4月最新版本验证,具体实施时请以各工具官方文档为准。
1.SGLang部署方案
SGLang 目前支持 MLA 优化、DP Attention、FP8 (W8A8)、FP8 KV 缓存和 Torch Compile,在开源框架中提供了领先的延迟和吞吐量性能。SGLang v0.4.1 完全支持在 NVIDIA 和 AMD GPU 上运行 DeepSeek-V3,使其成为一个高度通用且稳健的解决方案。SGLang 还支持多节点张量并行,允许你在多个网络连接的机器上运行该模型。
使用 SGLang 部署 DeepSeek 模型并调用的教程:
在本节中,我们将介绍如何使用高效的推理框架 SGLang 在 Debian 12.9 系统上部署 DeepSeek 的语言模型,并通过 OpenAI API 规范来调用这些模型。DeepSeek 提供了多个版本的模型,这里我们将重点介绍如何部署和调用 DeepSeek v3 和 DeepSeek-R1。
安装 SGLang
首先,我们需要安装 SGLang 及其依赖项。SGLang 是一个基于 Python 的框架,因此需要确保您的系统已经安装了 Python 3.x 和 pip。以下是安装步骤:
# 创建Python虚拟环境(推荐)
python3 -m venv sglang-env
source sglang-env/bin/activate
# 安装SGLang核心库(包含launch_server)
pip install "sglang[all]>=0.4.1.post5" --find-links https://flashinfer.ai/whl/cu124/torch2.4/flashinfer
请确保在执行上述命令时处于激活的虚拟环境中,以避免与其他 Python 包发生冲突。
调用具体的模型
接下来,根据您想要使用的 DeepSeek 模型,选择合适的命令来启动服务:
调用 DeepSeek v3
python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-V3 --tp 8 --trust-remote-code
调用 DeepSeek-R1
python3 -m sglang.launch_server --model deepseek-ai/DeepSeek-R1 --tp 8 --trust-remote-code
注意:–tp 8 参数指定了张量并行度为 8,这适合多 GPU 环境。如果您的硬件配置不同,请调整此参数。
一旦命令执行成功,服务将会在 30000 端口启动。
使用 OpenAI API 调用本地服务
现在,我们可以使用 OpenAI 的 API 规范与本地运行的 DeepSeek 模型进行交互。下面是一个简单的例子,演示了如何使用 openai Python 客户端来调用 Chat Completion 接口。
import openai
# 创建 OpenAI 客户端
client = openai.Client(
base_url="http://127.0.0.1:30000/v1", api_key="EMPTY")
# 调用 Chat Completion 接口,生成对话回复
response = client.chat.completions.create(
model="default", # 指定要使用的模型(本地服务中的默认模型)
messages=[ # 定义对话历史
{"role": "system", "content": "You are a helpful AI assistant"},
{"role": "user", "content": "List 3 countries and their capitals."},
],
temperature=0, # 设置生成的随机性,0 表示尽可能确定性的输出
max_tokens=64, # 限制生成的最大 token 数,避免输出过长
)
print(response)
在这个例子中,我们创建了一个 OpenAI 客户端实例,并将其指向本地运行的服务。然后,我们定义了一个对话请求,其中包含了系统的角色信息以及用户的问题。最后,我们打印出模型返回的回答。
这样,就可以轻松地在自己的应用中集成并使用 DeepSeek 的强大语言模型了。记得根据实际情况调整代码中的参数和配置。
2.LMDeploy部署方案
LMDeploy 是一个灵活且高性能的推理与服务框架,专为大语言模型量身定制,现在支持 DeepSeek-V3。它提供了离线管道处理和在线部署能力,能够与基于 PyTorch 的工作流无缝集成。
以下是使用 LMDeploy 工具箱调用 DeepSeek 模型的具体步骤,包括安装 LMDeploy、单任务推理以及在线服务调用。
(1)安装 LMDeploy
首先需要克隆 LMDeploy 的 GitHub 仓库,并以可编辑模式安装它。这样可以确保对本地代码所做的任何修改都能立即生效。
# 克隆项目的github仓库
git clone -b support-dsv3 https://github.com/InternLM/lmdeploy.git
# 进入克隆后的 lmdeploy 目录
cd lmdeploy
# 以“可编辑模式”安装 lmdeploy
pip install -e .
(2)单任务推理
接下来,我们将编写一个 Python 脚本来执行单任务推理。这里我们以 DeepSeek-V3-FP8 模型为例:
from lmdeploy import pipeline, PytorchEngineConfig
if __name__ == "__main__":
# 初始化推理管道 pipeline
pipe = pipeline("deepseek-ai/DeepSeek-V3-FP8", backend_config=PytorchEngineConfig(tp=8))
# 构造用户消息列表
messages_list = [
[{"role": "user", "content": "Who are you?"}],
[{"role": "user", "content": "Translate the following content into Chinese directly: "
"DeepSeek-V3 adopts innovative architectures to guarantee "
"economical training and efficient inference."}],
[{"role": "user", "content": "Write a piece of quicksort code in C++."}],
]
# 执行推理并获取输出
output = pipe(messages_list)
print(output)
(3)在线服务调用
要将模型作为在线服务运行,可以使用 lmdeploy serve api_server 命令。对于不同的模型,命令如下:
调用 DeepSeek-V3 模型
lmdeploy serve api_server deepseek-ai/DeepSeek-V3-FP8 --tp 8 --backend pytorch
调用 DeepSeek-R1 模型
lmdeploy serve api_server deepseek-ai/DeepSeek-R1-FP8 --tp 8 --backend pytorch
服务启动后,您可以通过以下 Python 代码来与本地运行的服务进行交互:
from openai import OpenAI
client = OpenAI(
api_key='YOUR_API_KEY',
base_url="http://0.0.0.0:23333/v1" # 替换为您的实际地址和端口
)
model_name = client.models.list().data[0].id
response = client.chat.completions.create(
model=model_name,
messages=[
{"role": "user", "content": "Write a piece of quicksort code in C++."}
],
temperature=0.8,
top_p=0.8
)
print(response)
请注意,YOUR_API_KEY 是您在 OpenAI 平台上生成的 API 密钥,但在本例中,由于我们是与本地部署的服务交互,因此这个值可以是任意字符串(如 ‘EMPTY’),因为实际的身份验证是由本地服务器处理的。此外,根据实际情况调整 base_url 和其他参数。
3.vLLM部署方案
vLLM v0.6.6 支持在 NVIDIA 和 AMD GPU 上以 FP8 和 BF16 模式进行 DeepSeek-V3 推理。除了标准技术外,vLLM 还提供了管道并行性,允许你在多个网络连接的机器上运行该模型。
(1)vLLM 安装
首先,确保您的环境中已经安装了 vLLM。可以使用 pip 命令来安装:
pip install vllm
请确保您的 CUDA 版本与 vLLM 兼容(如教程中提到的 CUDA 12.1)。如果需要,您可以检查当前的 CUDA 版本:
nvcc --version
(2)DeepSeek-v3 调用
接下来,我们可以使用以下 Python 代码来调用 DeepSeek-v3 模型:
from vllm import LLM
# 初始化 LLM 实例,指定使用 DeepSeek-V3 模型
llm = LLM(model="deepseek-ai/DeepSeek-V3", task="generate")
# 运行推理并生成文本
output = llm.generate("Hello, my name is")
print(output)
(3)DeepSeek-R1 调用
对于 DeepSeek-R1 的调用,代码结构基本相同,只需更改模型名称:
from vllm import LLM
# 初始化 LLM 实例,指定使用 DeepSeek-R1 模型
llm = LLM(model="deepseek-ai/DeepSeek-R1", task="generate")
# 运行推理并生成文本
output = llm.generate("Hello, my name is")
print(output)
请注意,在上述代码中,model 参数应为字符串形式,并且包含正确的模型名称。在您的原始代码片段中,model=deepseek-ai/DeepSeek-R1 缺少引号,这会导致 Python 尝试寻找一个名为 deepseek-ai/DeepSeek-R1 的变量而非字符串。因此,请确保将模型名称放在引号内,以表示这是一个字符串字面量。
此外,如果您需要调整生成参数,比如温度、最大生成长度等,可以通过设置相应的参数来完成,例如:
sampling_params = SamplingParams(temperature=0.7, max_tokens=100)
output = llm.generate("Hello, my name is", sampling_params)
可以控制生成文本的随机性和长度。请参考 vLLM 的官方文档获取更多关于配置选项的信息。
4.Ollama部署方案
这里是如何使用 Ollama 来部署和调用 DeepSeek R1 模型的详细步骤:
(1)Ollama 安装与启动
首先,安装 Ollama 并启动服务。可以通过以下命令完成安装:
curl -fsSL https://ollama.com/install.sh | sh
安装完成后,启动 Ollama 服务:
ollama start
(2)使用 ollama run 自动下载模型权重并运行
一旦 Ollama 服务启动,您可以直接通过 ollama run 命令来自动下载并运行指定的模型。例如,要运行 DeepSeek R1 的 1.5B 蒸馏模型,可以输入:
ollama run deepseek-r1:1.5b
对于半精度版本的 DeepSeek R1 模型(671b),可以使用如下命令:
ollama run deepseek-r1:671b
(3)手动下载 GGUF 权重并运行
如果需要手动下载 GGUF 格式的权重文件,并将其注册到 Ollama 中,可以按照以下步骤操作:
下载 GGUF 格式权重
创建一个目录用于存放下载的模型文件,并使用 modelscope 工具下载指定的 GGUF 文件:
mkdir DeepSeek-R1-1.5B-GGUF
modelscope download --model unsloth/DeepSeek-R1-Distill-Qwen-1.5B-GGUF DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf --local_dir ./DeepSeek-R1-1.5B-GGUF
注册模型,创建一个文本文件(例如命名为 ModelFile),并在其中写入模型路径:
FROM ./DeepSeek-R1-1.5B-GGUF/DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf
然后使用该文件将模型添加到 Ollama 的本地模型列表中:
ollama create DeepSeek-R1-1.5B -f ModelFile
检查模型是否成功注册:
ollama list
(4)启动使用
最后,使用 ollama run 命令来启动刚刚注册的模型:
ollama run DeepSeek-R1-1.5B
现在,您应该能够在终端与 DeepSeek R1 模型进行交互了。记得在对话结束后输入 /bye 来退出聊天界面。
请注意,在实际操作时,请确保替换示例中的具体参数(如模型名称、路径等)以匹配您的实际情况。如果您遇到任何问题或错误消息,请仔细检查命令和路径是否正确无误。