引言
DeepSeek(深度求索)是国内优质的开源大模型系列,涵盖代码生成(DeepSeek-Coder)、通用对话(DeepSeek-LLM)等多个场景,支持在 Linux 服务器本地化部署,满足企业级私有化需求。本文以DeepSeek-LLM-7B-Chat(轻量通用对话模型)为例,基于 Ubuntu 22.04 LTS 系统,详细讲解从环境搭建到模型启动的完整流程,同时适配 CentOS 等其他 Linux 发行版。
一、部署前准备:明确核心依赖与服务器要求
在部署前需确认服务器硬件与软件环境,避免因资源不足或依赖缺失导致部署失败。
- 硬件要求(关键指标)
DeepSeek 模型对算力要求较高,不同参数规模模型的最低配置参考:
模型规格
显存要求
CPU 要求
内存要求
适用场景
DeepSeek-7B
≥10GB
8 核及以上(x86_64)
≥16GB
轻量对话、小规模推理
DeepSeek-13B
≥20GB
16 核及以上
≥32GB
中规模对话、复杂任务推理
DeepSeek-67B
≥60GB
32 核及以上
≥64GB
企业级大规模推理
注:若服务器无 GPU(仅 CPU 推理),需将模型转为 INT4/INT8 量化版本,且推理速度会显著降低,建议优先使用 NVIDIA GPU(支持 CUDA 11.7+)。
- 软件依赖清单
Linux 环境需提前安装以下基础软件,所有操作均以root用户或 sudo 权限执行:
操作系统:Ubuntu 20.04+/CentOS 8+/Debian 11+(本文以 Ubuntu 为例,CentOS 差异处会标注)
包管理器:apt(Ubuntu)/yum(CentOS)
基础工具:git(代码克隆)、python3.10+(推荐 3.10,适配多数 AI 库)、pip(Python 包管理)
GPU 依赖(可选):NVIDIA 驱动(≥515.43.04)、CUDA Toolkit 11.7/12.1、cuDNN 8.5+
二、环境搭建:从基础依赖到 GPU 配置
- 更新系统与安装基础工具
Ubuntu 系统执行:
更新系统软件包
sudo apt update && sudo apt upgrade -y
安装基础工具(git、python3、pip等)
sudo apt install -y git python3 python3-pip python3-venv build-essential libssl-dev libffi-dev
CentOS 系统执行:
安装EPEL源(避免依赖缺失)
sudo dnf install -y epel-release
更新并安装基础工具
sudo dnf update -y && sudo dnf install -y git python3 python3-pip python3-devel gcc gcc-c++
- 配置 Python 虚拟环境(推荐)
为避免 Python 包版本冲突,使用venv创建独立虚拟环境:
创建虚拟环境目录(如~/deepseek-env)
python3 -m venv ~/deepseek-env
激活虚拟环境(Ubuntu/CentOS通用)
source ~/deepseek-env/bin/activate
激活后终端前缀会显示(deepseek-env),表示环境生效
- GPU 环境配置(有 GPU 时必做)
若服务器搭载 NVIDIA GPU,需安装驱动、CUDA 与 cuDNN,确保 PyTorch 能调用 GPU:
步骤 1:安装 NVIDIA 驱动
查看GPU型号,确认支持的驱动版本
lspci | grep -i nvidia
Ubuntu自动安装推荐驱动(CentOS需手动下载.run文件)
sudo ubuntu-drivers autoinstall
重启服务器使驱动生效
sudo reboot
重启后执行nvidia-smi,若显示 GPU 信息(含 CUDA Version),说明驱动安装成功。
步骤 2:安装 CUDA Toolkit(以 11.8 为例)
下载CUDA 11.8安装脚本(Ubuntu 22.04)
执行安装(仅安装CUDA Toolkit,不重复安装驱动)
sudo sh cuda_11.8.0_520.61.05_linux.run --toolkit --silent --override
配置CUDA环境变量(写入~/.bashrc)
echo 'export PATH=/usr/local/cuda-11.8/bin:PATH′>> /.bashrcecho′exportLDLIBRARYPATH=/usr/local/cuda−11.8/lib64:PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:PATH′>> /.bashrcecho′exportLDLIBRARYPATH=/usr/local/cuda−11.8/lib64:LD_LIBRARY_PATH' >> ~/.bashrc
生效环境变量
source ~/.bashrc
验证CUDA安装:输出CUDA版本即成功
nvcc -V
步骤 3:安装 cuDNN(需注册 NVIDIA 账号)
访问NVIDIA cuDNN 下载页,选择与 CUDA 11.8 匹配的 cuDNN 版本(如 cuDNN 8.9.7 for CUDA 11.x)。
下载cuDNN Library for Linux x86_64(.tar.xz 格式),上传至服务器并解压:
解压cuDNN压缩包
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda11.x.tar.xz
将cuDNN文件复制到CUDA目录
sudo cp cudnn--linux-x86_64/include/cudnn .h /usr/local/cuda-11.8/include/
sudo cp -P cudnn--linux-x86_64/lib/libcudnn /usr/local/cuda-11.8/lib64/
赋予权限
sudo chmod a+r /usr/local/cuda-11.8/include/cudnn*.h /usr/local/cuda-11.8/lib64/libcudnn*
三、模型部署:从获取到启动(两种主流方式)
DeepSeek 模型部署支持Hugging Face Transformers(通用框架)和vLLM(高性能推理框架),前者兼容性强,后者推理速度更快,按需选择。
方式 1:基于 Hugging Face Transformers 部署(入门首选)
步骤 1:安装依赖库
在激活的 Python 虚拟环境中安装所需库:
安装PyTorch(GPU版本,对应CUDA 11.8)
pip3 install torch2.1.0 torchvision0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118
安装Transformers、加速库与对话工具
pip3 install transformers4.35.2 accelerate0.24.1 sentencepiece0.1.99 tokenizers0.14.1
若仅 CPU 推理,将 PyTorch 改为 CPU 版本:pip3 install torch==2.1.0 --index-url https://download.pytorch.org/whl/cpu
步骤 2:获取 DeepSeek 模型(两种途径)
DeepSeek 模型开源托管于 Hugging Face,可通过git克隆或直接在代码中自动下载。
途径 1:git 克隆模型(推荐,避免重复下载)
创建模型存储目录
mkdir -p ~/deepseek-models && cd ~/deepseek-models
克隆DeepSeek-LLM-7B-Chat模型(需Hugging Face账号,提前登录)
git lfs install # 启用Git LFS(大文件存储)
git clone https://huggingface.co/deepseek-ai/DeepSeek-LLM-7B-Chat
克隆完成后,模型文件位于~/deepseek-models/DeepSeek-LLM-7B-Chat
注:若提示 "git lfs 未安装",Ubuntu 执行sudo apt install git-lfs,CentOS 执行sudo dnf install git-lfs。
途径 2:代码自动下载(首次运行时触发,需联网)
无需提前克隆,在启动代码中指定模型路径,Transformers 会自动下载至~/.cache/huggingface/hub。
步骤 3:编写启动脚本(对话交互模式)
创建deepseek_chat.py脚本,实现命令行对话功能:
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import torch
1. 加载模型与Tokenizer(模型路径替换为实际路径)
model_path = "~/deepseek-models/DeepSeek-LLM-7B-Chat" # 本地克隆路径
若未克隆,直接用"Hugging Face模型名":model_path = "deepseek-ai/DeepSeek-LLM-7B-Chat"
tokenizer = AutoTokenizer.from_pretrained(
model_path,
trust_remote_code=True,
padding_side="right" # 避免生成时警告
)
model = AutoModelForCausalLM.from_pretrained(
model_path,
trust_remote_code=True,
torch_dtype=torch.float16, # GPU用float16,CPU用float32
device_map="auto" # 自动分配设备(优先GPU)
).eval() # 推理模式,禁用Dropout
2. 配置生成参数(控制输出长度、随机性等)
generation_config = GenerationConfig(
temperature=0.7, # 随机性:0~1,越低越确定
top_p=0.95,
top_k=40,
max_new_tokens=1024, # 最大生成 tokens 数
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.pad_token_id
)
3. 命令行对话交互
print("DeepSeek-LLM-7B-Chat 启动成功,输入'quit'退出对话!")
while True:
user_input = input("\n用户:")
if user_input.lower() == "quit":
print("对话结束!")
break
# 构建对话模板(遵循DeepSeek格式)
prompt = f"### User: {user_input}\n### Assistant:"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
# 生成响应(禁用梯度计算,提升速度)
with torch.no_grad():
outputs = model.generate(
**inputs,
generation_config=generation_config
)
# 解码输出(跳过输入部分)
response = tokenizer.decode(outputs[0][len(inputs["input_ids"][0]):], skip_special_tokens=True)
print(f"DeepSeek:{response}")
步骤 4:启动模型并测试
确保虚拟环境已激活,执行脚本
python3 deepseek_chat.py
测试对话(示例)
用户:请解释Linux中"sudo"命令的作用
DeepSeek:"sudo"是Linux系统中的一个命令,全称为"superuser do",用于允许普通用户在输入自身密码后,以超级用户(root)的权限执行指定命令...
若能正常输出响应,说明基于 Transformers 的部署成功。
方式 2:基于 vLLM 部署(高性能推理,推荐生产环境)
vLLM 是专为大模型设计的高性能推理框架,支持动态批处理、PagedAttention 等优化,推理速度比 Transformers 快 3~10 倍,适合高并发场景。
步骤 1:安装 vLLM(需匹配 CUDA 版本)
CUDA 11.8版本安装vLLM
pip3 install vllm==0.2.7
若CUDA 12.1,安装对应版本:pip3 install vllm==0.2.7 --extra-index-url https://download.pytorch.org/whl/cu121
步骤 2:启动 vLLM 服务(支持 API 调用)
通过vllm.entrypoints.api_server启动 HTTP 服务,支持多用户并发请求:
启动服务(模型路径替换为实际路径)
python3 -m vllm.entrypoints.api_server
--model ~/deepseek-models/DeepSeek-LLM-7B-Chat
--tensor-parallel-size 1 \ # 显卡数量(单GPU设为1)
--port 8000 \ # 服务端口
--trust-remote-code
--dtype float16 # GPU用float16,CPU用float32
启动成功后,终端会显示:Uvicorn running on http://0.0.0.0:8000(服务监听所有网卡的 8000 端口)。
步骤 3:测试 API 服务(两种方式)
方式 1:curl 命令测试(简单验证)
curl http://localhost:8000/v1/completions
-H "Content-Type: application/json"
-d '{
"model": "DeepSeek-LLM-7B-Chat",
"prompt": "### User: 如何在Linux中查看进程?### Assistant:",
"max_tokens": 512,
"temperature": 0.7
}'
若返回含"choices"的 JSON 结果,说明 API 服务正常。
方式 2:Python 脚本测试(模拟多轮对话)
创建test_vllm_api.py:
import requests
import json
API地址
url = "http://localhost:8000/v1/completions"
headers = {"Content-Type": "application/json"}
请求参数
data = {
"model": "DeepSeek-LLM-7B-Chat",
"prompt": "### User: 请写一个Linux脚本监控CPU使用率,超过80%时报警### Assistant:",
"max_tokens": 1024,
"temperature": 0.6,
"top_p": 0.95
}
发送请求
response = requests.post(url, headers=headers, data=json.dumps(data))
result = response.json()
提取并打印响应
if "choices" in result:
print("DeepSeek响应:", result["choices"][0]["text"].strip())
else:
print("请求失败:", result)
执行脚本:python3 test_vllm_api.py,会输出监控脚本代码,验证服务可用性。
四、部署优化:后台运行与端口开放
- 后台运行模型服务(避免终端关闭后停止)
使用nohup或screen让服务在后台运行,以 vLLM 服务为例:
方式1:nohup后台运行(输出日志到deepseek.log)
nohup python3 -m vllm.entrypoints.api_server
--model ~/deepseek-models/DeepSeek-LLM-7B-Chat
--port 8000
--dtype float16 > deepseek.log 2>&1 &
查看服务是否运行
ps aux | grep vllm.entrypoints.api_server
停止服务(根据PID)
kill -9 <服务PID>
方式2:screen创建会话(支持重新连接)
安装screen(Ubuntu:sudo apt install screen;CentOS:sudo dnf install screen)
screen -S deepseek # 创建名为deepseek的会话
在会话中启动服务(同步骤2)
python3 -m vllm.entrypoints.api_server --model ~/deepseek-models/DeepSeek-LLM-7B-Chat --port 8000
按Ctrl+A+D退出会话(服务后台运行)
重新连接会话:screen -r deepseek
关闭会话:screen -S deepseek -X quit
- 开放端口(允许外部访问)
若需从其他机器访问 Linux 服务器上的 DeepSeek 服务,需开放对应端口(如 8000):
Ubuntu(ufw 防火墙):
开放8000端口
sudo ufw allow 8000/tcp
查看防火墙状态(确认8000端口已开放)
sudo ufw status
CentOS(firewalld 防火墙):
开放8000端口
sudo firewall-cmd --add-port=8000/tcp --permanent
重启防火墙生效
sudo firewall-cmd --reload
查看开放端口
sudo firewall-cmd --list-ports
五、常见问题排查