人工智能-WLS-Ubuntu22.04本地部署DeepSeek-R1
- 0 环境说明
- 1 切换软件源
- 1.1 备份原有的软件源配置
- 1.2 编辑软件源配置文件
- 1.3 更新软件包列表
- 1.4 升级软件包
- 2 安装DeepSeek服务器环境
- 2.0 安装基础依赖库
- 2.1 安装NVIDIA显卡驱动
- 2.2 安装CUDA
- 2.3 安装cuDNN
- 2.4 安装Miniforge3(或Anaconda/Miniconda)
- 2.5 安装Python
- 2.6 修改pip3软件源
- 2.7 安装PyTorch
- 2.8 安装vLLM
- 2.8 下载DeepSeek-R1模型
- 2.9 下载DeepSeek分词器tokenizer文件(可选)
- 2.10 部署DeepSeek-r1大模型
- 2.11 部署知识库应用
- 2.12 DeepSeek对话测试
0 环境说明
环境项 | 说明 |
---|---|
显卡型号 | NVIDIA GEFORCE RTX 4060 |
Linux版本 | Ubuntu22.04.5 LTS(基于WSL) |
CUDA版本 | 12.6 |
cuDNN版本 | 8.9.7 |
Miniforge3 | 2025-01-20 23:49 清华大学镜像更新 |
Python版本 | 3.10.16 |
PyTorch版本 | 2.6.0+cu126 |
以下所有操作请使用普通用户执行。
1 切换软件源
1.1 备份原有的软件源配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
1.2 编辑软件源配置文件
sudo vim /etc/apt/sources.list
对于 Ubuntu 20.04 (Focal Fossa) 内容如下:
deb https://mirrors.aliyun/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-proposed main restricted universe multiverse
对于 Ubuntu 22.04 (Jammy Jellyfish) 内容如下:
deb https://mirrors.aliyun/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-proposed main restricted universe multiverse
保存退出。
请注意根据你的 Ubuntu 版本选择对应的源,focal 代表 20.04,jammy 代表 22.04。
1.3 更新软件包列表
sudo apt update
1.4 升级软件包
sudo apt upgrade
2 安装DeepSeek服务器环境
2.0 安装基础依赖库
sudo apt install -y gcc git git-lfs
2.1 安装NVIDIA显卡驱动
- 定义:NVIDIA 驱动是操作系统与 NVIDIA GPU 之间的接口,允许操作系统和应用程序使用 GPU 的硬件功能。
- 功能:驱动程序负责管理 GPU 的资源,处理 GPU 的任务调度,以及提供与 GPU 相关的基本功能和性能优化。
- 重要性:在安装 CUDA 或 cuDNN 之前,必须先安装合适的 NVIDIA 驱动程序,以确保系统能够正确识别和使用 GPU。
安装服务器环境的第一步就是确认是否安装了NVIDIA驱动,可以使用以下命令查看是否安装了NVIDIA驱动:
nvidia-smi
如果出现类似下面的信息,则说明已经安装了NVIDIA的驱动:
上图中可以看出安装的NVIDIA驱动版本为:560.94,支持的CUDA版本为:12.6
我是在WSL下的Ubuntu22.04.5系统中进行操作的,系统安装后默认已经安装了NVIDIA的驱动,跟Windows下的驱动版本一致。如果没有安装的可以从NVIDIA的官网 (https://www.nvidia/) 下载相应的驱动进行安装。
2.2 安装CUDA
CUDA (Compute Unified Device Architecture)
- 定义:CUDA 是 NVIDIA 提供的并行计算平台和编程模型,使开发者能够使用 C、C++ 或 Fortran 等编程语言直接在 GPU 上运行计算密集型任务。
- 功能:CUDA 提供了一个丰富的 API,可以让开发者编写程序来利用 GPU 的并行计算能力,从而加速科学计算、图像处理、深度学习等任务。
- 依赖关系:CUDA 依赖于 NVIDIA 驱动程序的正确安装,以便能够访问 GPU 的硬件资源。
在执行以下安装步骤之前,可以先通过以下命令判断一下是否已经安装过CUDA:
nvcc --version
如果没有安装则按以下安装步骤进行安装。
安装步骤
1、打开NVIDIA开发者官网
官网下载地址为: https://developer.nvidia/cuda-downloads ,如下图所示:
2、切换至CUDA历史版本列表页
默认页面显示的是最新的CUDA版本的信息,点击页面中的[Archive of Previous CUDA Releases],进入到CUDA历史版本列表页面,如下图:
3、进入与自己电脑对应的CUDA版本页面
找到自己的电脑所支持的CUDA版本,然后点击对应的连接,进入对应版本的CUDA页面,如下图所示:
4、通过选项向导获取CUDA安装文件和安装方式
根据提供的选项,选择Operating System、Architecture、Distribution、Version、Installer Type,获取到具体的安装文件及安装方式,如下图所示:
5、下载安装文件并安装
根据上图中得到的安装文件及安装方式,在系统中执行以下命令:
# 添加CUDA存储库
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:graphics-drivers/ppa
# 下载并安装CUDA 12.6
mkdir soft
cd soft
wget https://developer.download.nvidia/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run
sudo sh cuda_12.6.0_560.28.03_linux.run
下载过程如下图:
可以看到下载后的cuda_12.6.0_560.28.03_linux.run文件大小为4.1GB。
在执行[sudo sh cuda_12.6.0_560.28.03_linux.run]的过程中会出现许可协议界面如下图:
此处输入accept,回车继续。然后出现选择安装那些组件,如下图:
其中CUDA Toolkit 12.6要必须选上,这里我保持默认,然后选择Install,回车继续。安装完成后,如下图:
6、配置CUDA环境变量
可以通过以下命令验证CUDA环境变量是否配置:
nvcc --version
如果出现下图,则说明没有配置环境变量
通过以下命令配置CUDA环境变量
vim ~/.bashrc
# 在文件末尾增加以下内容:
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
# 保存退出,然后执行以下命令使配置生效
source ~/.bashrc
由于~/.bashrc的修改只对当前用户有效,因此,建议直接通过修改/etc/profile,修改环境编码,具体如下:
sudo vim /etc/profile
# 在文件末尾增加以下内容:
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
# 保存退出,然后执行以下命令使配置生效
source /etc/profile
如下图:
7、验证环境变量的配置
输入以下命令验证环境变量的配置:
nvcc --version
如果出现下图结果,则说明配置成功!
2.3 安装cuDNN
cuDNN (CUDA Deep Neural Network library)
- 定义:cuDNN 是 NVIDIA 提供的一个 GPU 加速的深度神经网络库,专门用于深度学习框架的优化。
- 功能:cuDNN 提供了高效的实现,用于卷积、池化、激活函数、归一化等操作,使得深度学习模型的训练和推理能充分利用 GPU 的性能。
- 依赖关系:cuDNN 是建立在 CUDA 之上的库,因此需要 CUDA 的支持,并且也需要正确安装 NVIDIA 驱动程序。
安装步骤
1、打开cuDNN官网
官网地址: https://developer.nvidia/rdp/cudnn-archive ,如下图所示:
由于我安装的是CUDA 12.6,因此下载对应CUDA 12.x的最新版cuDNN就行,上图中可以看到最新的cuDNN版本为v8.9.7。
2、下载cuDNN
上图页面中点击对应cuDNN版本的 Download 链接,会进入cuDNN 8.9.7的下载地址列表页面,如下图:
在进行下一步之前,需要先在NVIDIA的网站上进行用户登录操作,如果没有进行登录,则在点击链接时会跳转到登录页面。
这里我们选择[Local Installer for Linux x86_64(Tar)],默认会弹出下载对话框,如下图:
我们可以复制这个网址,可以直接下载到本机(Windows宿主机), 如下图:
如果服务器是原生Ubuntu系统,可以通过SFTP上传值Ubuntu,因为我用的是WSL的Ubuntu,则可以直接检索到下载的cuDNN文件,如下图:
可以看出下载到的位置在WSL-Ubuntu的路径为:
/mnt/g/01备份/01软件/06人工智能/01CUDA/02cuDNN/02Linux/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
3、解压cuDNN压缩包
通过以下命令解压cuDNN:
cd ~/soft
tar -xvf /mnt/g/01备份/01软件/06人工智能/01CUDA/02cuDNN/02Linux/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz -C ./
执行过程如下图:
执行完毕如下图:
4、安装cuDNN库
cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive/
sudo cp include/cudnn*.h /usr/local/cuda-12.6/include
sudo cp lib/libcudnn* /usr/local/cuda-12.6/lib64
sudo chmod a+r /usr/local/cuda-12.6/include/cudnn*.h /usr/local/cuda-12.6/lib64/libcudnn*
如下图:
5、验证cuDNN的安装及版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
执行结果如下图:
2.4 安装Miniforge3(或Anaconda/Miniconda)
Miniforge、Anaconda 和 Miniconda 是三个不同的 Python 发行版和环境管理工具。
Miniforge、Anaconda 和 Miniconda 是三个不同的 Python 发行版和环境管理工具,虽然它们有相似的功能,但各自的目标和组成部分略有不同。以下是它们的主要区别:
Anaconda
- 概述:Anaconda 是一个开源的 Python 和 R 语言的发行版,专为数据科学、机器学习和科学计算而设计。
- 官网地址:
- https://www.anaconda/
- 特点:
- 包含大量预安装包:Anaconda 默认安装了 1,500 多个数据科学和机器学习的库,包括 NumPy、Pandas、Matplotlib、Scikit-learn 等。
- Anaconda Navigator:提供一个图形用户界面,方便用户管理环境和包。
- 较大的安装包:由于包含了许多常用的库,Anaconda 的安装文件比较大(通常超过 3GB)。
- 适合初学者:由于其即装即用的特性,非常适合初学者和数据科学从业者。
Miniconda
- 概述:Miniconda 是 Anaconda 的一个轻量级版本,提供了最基本的包管理功能和环境管理功能。
- 官网地址:
- https://www.anaconda/
- 特点:
- 小型安装包:Miniconda 的安装文件非常小(大约 400MB),只包含
conda
和 Python。 - 自定义安装:用户可以只安装他们需要的包和库,避免了不必要的资源占用。
- 适合进阶用户:如果你已经知道自己需要哪些库或想要一个极其轻量的开发环境,Miniconda 是一个理想选择。
- 小型安装包:Miniconda 的安装文件非常小(大约 400MB),只包含
Miniforge
- 概述:Miniforge 是一个社区驱动的 Miniconda 版本,旨在提供开源的 conda 包。
- 官网地址:
- https://github/conda-forge/miniforge
- 特点:
- 依赖于 conda-forge:Miniforge 默认使用
conda-forge
作为包源,conda-forge
是一个社区驱动的 conda 包构建和分发生态系统,提供了大量的开源软件包。 - 小型安装包:与 Miniconda 类似,Miniforge 也是一个轻量级的安装包,用户可以根据需要自行添加软件包。
- 更好的社区支持:由于 Miniforge 使用
conda-forge
,你可以更容易地获取到更新和维护良好的开源包。
- 依赖于 conda-forge:Miniforge 默认使用
小结
- Anaconda:功能齐全,但较大,适合初学者和需要大多数数据科学库的用户。
- Miniconda:轻量级,适合希望从零开始自定义环境的用户。
- Miniforge:与 Miniconda 类似,但使用
conda-forge
作为默认源,适合希望使用开源软件包的用户。
选择建议
- 如果你是初学者或希望快速开始数据科学项目,选择 Anaconda。
- 如果你想要一个轻量级的环境,并且知道自己需要哪些库,可以选择 Miniconda。
- 如果你希望使用大量开源软件包,且倾向于使用社区维护的包,选择 Miniforge。
##blue##
下面以采用Miniforge3为例进行安装介绍
1、下载Miniforge3
由于Miniforge的官网是在github下,而github的网络时好时不好,因此我们可以从清华大学开源软件镜像站获取Miniforge。首先进入清华大学开源软件站 https://mirrors.tuna.tsinghua.edu/ ,如下图所示:
然后在搜索框中输入miniforge,如下图:
点击搜索结果中的miniforge链接,进入miniforge的版本目录页,如下图:
点击进入LastRelease目录,如下图:
点击对应自己系统的版本链接,会弹出下载对话框,如下图:
可以把网址文本框中的下载地址复制出来,然后通过wget命令进行下载,命令如下:
cd ~/soft
wget -c https://mirrors.tuna.tsinghua.edu/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh
执行如下图:
2、安装Miniforge3
可以通过以下命令进行安装
chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
安装过程中会有协议输入提示。
# 下面的提示输入yes
Do you accept the license terms? [yes|no]
>>> yes
# 安装路径提示,回车默认就行
Miniforge3 will now be installed into this location:
/home/zhenglibing/miniforge3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/zhenglibing/miniforge3] >>>
# 撤销提示,直接回车或者输入no再回车继续就行。
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> no
#
安装路径是:/home/zhenglibing/miniforge3
3、进入base环境
通过以下命令进入base环境
source ~/miniforge3/bin/activate
~/miniforge3就是miniforge3的安装目录,其实就是/home/zhenglibing/miniforge3
如下图:
2.5 安装Python
1、创建Python环境
安装好miniforge3后,就通过miniforge3的conda命令创建一个python 3.10的环境,命令如下:
conda create -n deepseek-r1 python=3.10
执行过程如下图:
2、查看conda环境列表
通过以下命令查看conda下的环境列表
conda env list
执行如下图:
3、进入deepseek-r1 Conda环境
通过以下命令激活进入,并验证python的版本信息:
conda activate deepseek-r1
python --version
执行如下图:
2.6 修改pip3软件源
为了避免使用pip/pip3安装工具时由于网络问题、下载超时导致安装失败,可以通过使用国内镜像源的方式解决,有2种方式。
1、在安装时通过 -i (–index-url)参数执行国内镜像源
比如:
pip3 install packagename -i https://pypi.tuna.tsinghua.edu/simple
packagename为要安装的工具包名称
2、创建~/.pip/pip.conf实现永久设置国内镜像源
可以将镜像源地址添加到你的 pip 配置文件中,以便每次都使用该源。通过以下命令创建或编辑配置文件:
mkdir -p ~/.pip
echo "[global]" > ~/.pip/pip.conf
echo "index-url = https://pypi.tuna.tsinghua.edu/simple" >> ~/.pip/pip.conf
3、升级pip
升级 pip 到最新版本。可以通过以下命令来升级 pip:
pip3 install --upgrade pip
2.7 安装PyTorch
PyTorch 是一个开源的深度学习框架,由 Facebook 的人工智能研究团队开发。它提供了强大的工具和库,适用于构建和训练深度学习模型,广泛应用于学术研究和工业界。
1、确定PyTorch版本
首先进入PyTorch的官网: https://pytorch/ ,如下图:
点击[Get started >]按钮,如下图:
根据自己实际的服务器环境选择,最后得到可以运行的命令脚本。
2、安装PyTorch
执行上图中获得的脚本:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch/whl/cu126
安装过程如下图:
安装完毕后如下图:
3、验证PyTorch是否可以使用GPU
可以通过以下命令,验证PyTorch是否可以使用GPU:
python -c "import torch; print(torch.cuda.is_available())"
如果返回True,则说明PyTorch可以使用GPU,执行如下图:
2.8 安装vLLM
vLLM (Very Large Language Model) 是一个用于高效推理的库,专为大规模语言模型的部署而构建。
1、安装vLLM
通过以下命令安装vLLM:
pip3 install vllm --upgrade
# 如果未更改pip3软件源为国内镜像源,可以直接使用以下命令进行安装,否则 可能由于网络问题下载文件失败
pip3 install vllm --upgrade -i https://pypi.tuna.tsinghua.edu/simple
安装过程如下图:
安装完毕如下图:
2、查看vLLM的版本
可以通过以下命令查看pip下安装的所有软件包的版本:
pip3 list
如下图:
可以通过以下命令查看vllm的详情
pip3 show vllm
执行如下图:
还可以直接使用以下命令查看版本:
vllm --version
执行如下图:
2.8 下载DeepSeek-R1模型
由于网络问题,我们通常是无法访问Huggingface官网( https://huggingface.co )的,我们可以从 https://hf-mirror ,或者魔搭社区( https://modelscope )中获取预训练模型。
这里以使用魔搭社区为例。详情参考: https://modelscope/docs/home
1、安装modescope
pip3 install modelscope
执行如下:
2、选择模型
打开魔搭社区的模型首页( https://modelscope/models ),如下图:
在搜索框中输入模型名称,选择要部署的预训练模型(unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF 为例),进入模型详情页面,如下图:
点击模型文件,可以看到当前模型的文件列表,如下图:
根据自己电脑GPU的配置选择合适的量化模型(以 DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf 为例),点击进入详情页面,如下图:
3、使用modescope下载模型
##blue##
这里下载gguf格式的蒸馏量化模型
modelscope download --model 'unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF' --include 'DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf' --local_dir ./models/deepseek-r1-7b
下载完毕后如下图:
其他模型下载
使用以下命令下载模型文件:
modelscope download --model="deepseek-ai/DeepSeek-R1-Distill-Qwen-7B" --local_dir ./model-dir
会在当前目录下创建model-dir目录,并把模型文件下载到model-dir目录下。
如下图:
2.9 下载DeepSeek分词器tokenizer文件(可选)
正常情况下,使用vLLM加载上面DeepSeek模型GGUF权重文件后,不需要单独加载分词器文件,即可实现推理。
然而,博主在本地部署DeepSeek后,发现DeepSeek的官方模型库的一个bug,需要通过修改DeepSeek的分词器配置文件予以解决。
由于这个月DeepSeek的官方模型库更新了分词器配置文件tokenizer_config.json里的chat-template,导致本地部署DeepSeek-R1-Distill-Qwen-32B后,
向模型提问时,模型只输出,没有开头的,从而导致前端应用无法正确识别DeepSeek的思考过程(Reasoning)。
这里单独下载DeepSeek分词器文件,并使用vLLM进行加载。
通过以下命令下载分词器:
modelscope download --model 'deepseek-ai/DeepSeek-R1-Distill-Qwen-7B' --include 'tokenizer*.json' --local_dir ./models/deepseek-r1-7b
执行如下图:
通过文本编辑器打开tokenizer_config.json文件,找到字段"chat_template",将其字段值末尾的\n删除掉即可。
注意:这种解决bug的workaround方式,需要在提示词中显式增加标签,才能启动DeepSeek模型的推理Reasoning能力。后文的提示词中有所体现,请读者留意。
2.10 部署DeepSeek-r1大模型
1、设置环境变量来指定使用ModelScope上的模型
export VLLM_USE_MODELSCOPE=True
2、部署并运行LLM大模型
通过vLLM部署大模型有2种方式
2.1 vllm serve 的方式
vllm serve ./models/deepseek-r1-7b/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf \
--served-model-name unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 2048 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key [API访问密钥]
- served-model-name,指定模型的名称。
- trust-remote-code,加载HuggingFace自定义代码时必须启用。
- host,指定服务侦听的IP地址。
- port,指定服务侦听的端口号。
- max-model-len,模型上下文长度。如果未指定,将继承模型自身设置。将max-model-len设置为2048、4096或8196,以找到在没有错误的情况下工作的最大值。如果取值过大,你可能会遇到OOM错误。
- dtype,权重和激活参数的数据类型,用于控制计算精度,常用auto、half、float16、bfloat16、float、float32。
- enable-prefix-caching,重复调用接口时缓存提示词内容,以加快推理速度。例如,如果你输入一个长文档并查询问有关它的各种问题,启用该参数将提高性能。
- enforce-eager,用于启用eager模式,加快推理速度。
- max_num_seqs,用于配置同时处理多少个请求;由于这将使内存使用量增加一倍,因此最好将其设置为1。
- api-key,指定API的访问密钥,把“[API访问密钥]”改为自己要设定的密钥。
Safetensors类型权重的模型部署方式如下
vllm serve ./model-dir \
--served-model-name deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 1024 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key [API访问密钥]
或者
python -m vllm.entrypoints.openai.api_server \
--model ./model-dir \
--served-model-name deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 1024 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key [API访问密钥]
./model-dir表示.safetensors权重文件所在的目录,config.json等文件要全。
2.2 python -m vllm.entrypoints.openai.api_server 的方式
python -m vllm.entrypoints.openai.api_server \
--model ./models/deepseek-r1-7b/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf \
--served-model-name unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 2048 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key wongoing
第1种方式部署模型如下图(第2种类型):
出现下图说明部署运行成功:
查看一下显存的使用情况:
nvidia-smi
如下图:
从图中可以看出一共8GB的显存用了7个多GB。
3、查看 vLLM 支持的 DeepSeek API 接口
通过浏览器访问 http://localhost:6006/docs 查看 vLLM 支持的 DeepSeek API 接口,如下图:
4、通过Apifox测试 DeepSeek API 接口
模型列表API调用示例(GET):
curl http://localhost:6006/v1/models -H "Authorization: Bearer wongoing"
下图展示了如何通过接口查询模型列表:
对话API调用示例(POST):
curl http://localhost:6006/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer wongoing" \
-d '{
"model": "bartowski/DeepSeek-R1-Distill-Qwen-32B-GGUF",
"messages": [
{"role": "user", "content": "问题:玄武门之变结束的当天,李世民在深夜写下一段独白,他会写什么?要求:先思考,然后按照以下格式回答用户的问题:<think>推理内容</think>内容"}
],
"temperature": 0.6
}'
下图展示了如何通过接口进行对话:
2.11 部署知识库应用
0、选择知识库应用框架
一般情况下,LLM大模型推理服务与知识库应用服务不会部署在同一台服务器上(我是在Windows11中又安装了个WSL-Ubuntu20.04.6作为知识库应用服务器)。分为以下几个步骤:
- 1、开放DeepSeek推理服务接口
- 2、部署知识库应用
- 3、知识库应用对接DeepSeek模型
- 4、低代码可视化流程编排
1、开放DeepSeek推理服务接口
2、部署知识库应用
MaxKb官网: https://maxkb
离线安装参考: https://maxkb/docs/installation/offline_installtion
在线安装参考: https://maxkb/docs/installation/online_installtion
这里我们采用docker方式部署
安装docker参考命令如下:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
首先获取 MaxKb 的docker镜像,如下:
docker pull registry.fit2cloud/maxkb/maxkb
执行如下图:
docker images
执行如下图:
运行maxkb镜像,如下:
docker run -d --name=maxkb --restart=always -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data -v ~/.python-packages:/opt/maxkb/app/sandbox/python-packages registry.fit2cloud/maxkb/maxkb
# 用户名: admin
# 初始密码: MaxKB@123..
执行如下图:
3、知识库应用对接DeepSeek模型
知识库应用的使用操作流程一般可分为四步:添加模型、创建知识库、创建应用、发布应用。
在浏览器地址栏输入:http://localhost:8080,进入MaxKb的首页,如下图:
输入用户名和密码(默认用户名为admin,默认密码为MaxKB@123…),点击登录(首次登录会提示修改密码),进入管理页面,如下图:
然后点击系统设置,页面添加模型,如下图:
- 私有模型的类型选择vLLM,因为我是通过vLLM部署的DeepSeek-R1大模型的。
- 模型名称和基础模型,最好和vllm部署模型时的–served-model-name参数对一个,这样比较有规律。
- API ULR中执行的IP(或域名)跟vllm运行时–host参数和–port参数有关,由于我是在docker容器中访问宿主机的推理服务,因此指定的地址是172.17.0.1。
http://172.17.0.1:6006/v1
- API Key输入的内容就是vllm运行时–api-key后面跟的值。
点击保存后,就可以看到添加的模型,如下图:
然后我们切换到应用选项卡,添加一个应用,如下图:
点击创建应用,如下图:
输入应用名称、应用描述,应用类型,可以选择简单配置,也可以选择高级编排,这里选择简单配置,如下图:
保存、发布后,应用如下图:
4、低代码可视化流程编排
创建应用时,选择高级编排如下图:
2.12 DeepSeek对话测试
在MaxKb的应用信息页面中,点击[演示]按钮,如下图:
就会进入对话页面,如下图:
输入问题,测试如下图:
人工智能-WLS-Ubuntu22.04本地部署DeepSeek-R1
- 0 环境说明
- 1 切换软件源
- 1.1 备份原有的软件源配置
- 1.2 编辑软件源配置文件
- 1.3 更新软件包列表
- 1.4 升级软件包
- 2 安装DeepSeek服务器环境
- 2.0 安装基础依赖库
- 2.1 安装NVIDIA显卡驱动
- 2.2 安装CUDA
- 2.3 安装cuDNN
- 2.4 安装Miniforge3(或Anaconda/Miniconda)
- 2.5 安装Python
- 2.6 修改pip3软件源
- 2.7 安装PyTorch
- 2.8 安装vLLM
- 2.8 下载DeepSeek-R1模型
- 2.9 下载DeepSeek分词器tokenizer文件(可选)
- 2.10 部署DeepSeek-r1大模型
- 2.11 部署知识库应用
- 2.12 DeepSeek对话测试
0 环境说明
环境项 | 说明 |
---|---|
显卡型号 | NVIDIA GEFORCE RTX 4060 |
Linux版本 | Ubuntu22.04.5 LTS(基于WSL) |
CUDA版本 | 12.6 |
cuDNN版本 | 8.9.7 |
Miniforge3 | 2025-01-20 23:49 清华大学镜像更新 |
Python版本 | 3.10.16 |
PyTorch版本 | 2.6.0+cu126 |
以下所有操作请使用普通用户执行。
1 切换软件源
1.1 备份原有的软件源配置
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
1.2 编辑软件源配置文件
sudo vim /etc/apt/sources.list
对于 Ubuntu 20.04 (Focal Fossa) 内容如下:
deb https://mirrors.aliyun/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ focal-proposed main restricted universe multiverse
对于 Ubuntu 22.04 (Jammy Jellyfish) 内容如下:
deb https://mirrors.aliyun/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.aliyun/ubuntu/ jammy-proposed main restricted universe multiverse
保存退出。
请注意根据你的 Ubuntu 版本选择对应的源,focal 代表 20.04,jammy 代表 22.04。
1.3 更新软件包列表
sudo apt update
1.4 升级软件包
sudo apt upgrade
2 安装DeepSeek服务器环境
2.0 安装基础依赖库
sudo apt install -y gcc git git-lfs
2.1 安装NVIDIA显卡驱动
- 定义:NVIDIA 驱动是操作系统与 NVIDIA GPU 之间的接口,允许操作系统和应用程序使用 GPU 的硬件功能。
- 功能:驱动程序负责管理 GPU 的资源,处理 GPU 的任务调度,以及提供与 GPU 相关的基本功能和性能优化。
- 重要性:在安装 CUDA 或 cuDNN 之前,必须先安装合适的 NVIDIA 驱动程序,以确保系统能够正确识别和使用 GPU。
安装服务器环境的第一步就是确认是否安装了NVIDIA驱动,可以使用以下命令查看是否安装了NVIDIA驱动:
nvidia-smi
如果出现类似下面的信息,则说明已经安装了NVIDIA的驱动:
上图中可以看出安装的NVIDIA驱动版本为:560.94,支持的CUDA版本为:12.6
我是在WSL下的Ubuntu22.04.5系统中进行操作的,系统安装后默认已经安装了NVIDIA的驱动,跟Windows下的驱动版本一致。如果没有安装的可以从NVIDIA的官网 (https://www.nvidia/) 下载相应的驱动进行安装。
2.2 安装CUDA
CUDA (Compute Unified Device Architecture)
- 定义:CUDA 是 NVIDIA 提供的并行计算平台和编程模型,使开发者能够使用 C、C++ 或 Fortran 等编程语言直接在 GPU 上运行计算密集型任务。
- 功能:CUDA 提供了一个丰富的 API,可以让开发者编写程序来利用 GPU 的并行计算能力,从而加速科学计算、图像处理、深度学习等任务。
- 依赖关系:CUDA 依赖于 NVIDIA 驱动程序的正确安装,以便能够访问 GPU 的硬件资源。
在执行以下安装步骤之前,可以先通过以下命令判断一下是否已经安装过CUDA:
nvcc --version
如果没有安装则按以下安装步骤进行安装。
安装步骤
1、打开NVIDIA开发者官网
官网下载地址为: https://developer.nvidia/cuda-downloads ,如下图所示:
2、切换至CUDA历史版本列表页
默认页面显示的是最新的CUDA版本的信息,点击页面中的[Archive of Previous CUDA Releases],进入到CUDA历史版本列表页面,如下图:
3、进入与自己电脑对应的CUDA版本页面
找到自己的电脑所支持的CUDA版本,然后点击对应的连接,进入对应版本的CUDA页面,如下图所示:
4、通过选项向导获取CUDA安装文件和安装方式
根据提供的选项,选择Operating System、Architecture、Distribution、Version、Installer Type,获取到具体的安装文件及安装方式,如下图所示:
5、下载安装文件并安装
根据上图中得到的安装文件及安装方式,在系统中执行以下命令:
# 添加CUDA存储库
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:graphics-drivers/ppa
# 下载并安装CUDA 12.6
mkdir soft
cd soft
wget https://developer.download.nvidia/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run
sudo sh cuda_12.6.0_560.28.03_linux.run
下载过程如下图:
可以看到下载后的cuda_12.6.0_560.28.03_linux.run文件大小为4.1GB。
在执行[sudo sh cuda_12.6.0_560.28.03_linux.run]的过程中会出现许可协议界面如下图:
此处输入accept,回车继续。然后出现选择安装那些组件,如下图:
其中CUDA Toolkit 12.6要必须选上,这里我保持默认,然后选择Install,回车继续。安装完成后,如下图:
6、配置CUDA环境变量
可以通过以下命令验证CUDA环境变量是否配置:
nvcc --version
如果出现下图,则说明没有配置环境变量
通过以下命令配置CUDA环境变量
vim ~/.bashrc
# 在文件末尾增加以下内容:
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
# 保存退出,然后执行以下命令使配置生效
source ~/.bashrc
由于~/.bashrc的修改只对当前用户有效,因此,建议直接通过修改/etc/profile,修改环境编码,具体如下:
sudo vim /etc/profile
# 在文件末尾增加以下内容:
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
# 保存退出,然后执行以下命令使配置生效
source /etc/profile
如下图:
7、验证环境变量的配置
输入以下命令验证环境变量的配置:
nvcc --version
如果出现下图结果,则说明配置成功!
2.3 安装cuDNN
cuDNN (CUDA Deep Neural Network library)
- 定义:cuDNN 是 NVIDIA 提供的一个 GPU 加速的深度神经网络库,专门用于深度学习框架的优化。
- 功能:cuDNN 提供了高效的实现,用于卷积、池化、激活函数、归一化等操作,使得深度学习模型的训练和推理能充分利用 GPU 的性能。
- 依赖关系:cuDNN 是建立在 CUDA 之上的库,因此需要 CUDA 的支持,并且也需要正确安装 NVIDIA 驱动程序。
安装步骤
1、打开cuDNN官网
官网地址: https://developer.nvidia/rdp/cudnn-archive ,如下图所示:
由于我安装的是CUDA 12.6,因此下载对应CUDA 12.x的最新版cuDNN就行,上图中可以看到最新的cuDNN版本为v8.9.7。
2、下载cuDNN
上图页面中点击对应cuDNN版本的 Download 链接,会进入cuDNN 8.9.7的下载地址列表页面,如下图:
在进行下一步之前,需要先在NVIDIA的网站上进行用户登录操作,如果没有进行登录,则在点击链接时会跳转到登录页面。
这里我们选择[Local Installer for Linux x86_64(Tar)],默认会弹出下载对话框,如下图:
我们可以复制这个网址,可以直接下载到本机(Windows宿主机), 如下图:
如果服务器是原生Ubuntu系统,可以通过SFTP上传值Ubuntu,因为我用的是WSL的Ubuntu,则可以直接检索到下载的cuDNN文件,如下图:
可以看出下载到的位置在WSL-Ubuntu的路径为:
/mnt/g/01备份/01软件/06人工智能/01CUDA/02cuDNN/02Linux/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
3、解压cuDNN压缩包
通过以下命令解压cuDNN:
cd ~/soft
tar -xvf /mnt/g/01备份/01软件/06人工智能/01CUDA/02cuDNN/02Linux/cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz -C ./
执行过程如下图:
执行完毕如下图:
4、安装cuDNN库
cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive/
sudo cp include/cudnn*.h /usr/local/cuda-12.6/include
sudo cp lib/libcudnn* /usr/local/cuda-12.6/lib64
sudo chmod a+r /usr/local/cuda-12.6/include/cudnn*.h /usr/local/cuda-12.6/lib64/libcudnn*
如下图:
5、验证cuDNN的安装及版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
执行结果如下图:
2.4 安装Miniforge3(或Anaconda/Miniconda)
Miniforge、Anaconda 和 Miniconda 是三个不同的 Python 发行版和环境管理工具。
Miniforge、Anaconda 和 Miniconda 是三个不同的 Python 发行版和环境管理工具,虽然它们有相似的功能,但各自的目标和组成部分略有不同。以下是它们的主要区别:
Anaconda
- 概述:Anaconda 是一个开源的 Python 和 R 语言的发行版,专为数据科学、机器学习和科学计算而设计。
- 官网地址:
- https://www.anaconda/
- 特点:
- 包含大量预安装包:Anaconda 默认安装了 1,500 多个数据科学和机器学习的库,包括 NumPy、Pandas、Matplotlib、Scikit-learn 等。
- Anaconda Navigator:提供一个图形用户界面,方便用户管理环境和包。
- 较大的安装包:由于包含了许多常用的库,Anaconda 的安装文件比较大(通常超过 3GB)。
- 适合初学者:由于其即装即用的特性,非常适合初学者和数据科学从业者。
Miniconda
- 概述:Miniconda 是 Anaconda 的一个轻量级版本,提供了最基本的包管理功能和环境管理功能。
- 官网地址:
- https://www.anaconda/
- 特点:
- 小型安装包:Miniconda 的安装文件非常小(大约 400MB),只包含
conda
和 Python。 - 自定义安装:用户可以只安装他们需要的包和库,避免了不必要的资源占用。
- 适合进阶用户:如果你已经知道自己需要哪些库或想要一个极其轻量的开发环境,Miniconda 是一个理想选择。
- 小型安装包:Miniconda 的安装文件非常小(大约 400MB),只包含
Miniforge
- 概述:Miniforge 是一个社区驱动的 Miniconda 版本,旨在提供开源的 conda 包。
- 官网地址:
- https://github/conda-forge/miniforge
- 特点:
- 依赖于 conda-forge:Miniforge 默认使用
conda-forge
作为包源,conda-forge
是一个社区驱动的 conda 包构建和分发生态系统,提供了大量的开源软件包。 - 小型安装包:与 Miniconda 类似,Miniforge 也是一个轻量级的安装包,用户可以根据需要自行添加软件包。
- 更好的社区支持:由于 Miniforge 使用
conda-forge
,你可以更容易地获取到更新和维护良好的开源包。
- 依赖于 conda-forge:Miniforge 默认使用
小结
- Anaconda:功能齐全,但较大,适合初学者和需要大多数数据科学库的用户。
- Miniconda:轻量级,适合希望从零开始自定义环境的用户。
- Miniforge:与 Miniconda 类似,但使用
conda-forge
作为默认源,适合希望使用开源软件包的用户。
选择建议
- 如果你是初学者或希望快速开始数据科学项目,选择 Anaconda。
- 如果你想要一个轻量级的环境,并且知道自己需要哪些库,可以选择 Miniconda。
- 如果你希望使用大量开源软件包,且倾向于使用社区维护的包,选择 Miniforge。
##blue##
下面以采用Miniforge3为例进行安装介绍
1、下载Miniforge3
由于Miniforge的官网是在github下,而github的网络时好时不好,因此我们可以从清华大学开源软件镜像站获取Miniforge。首先进入清华大学开源软件站 https://mirrors.tuna.tsinghua.edu/ ,如下图所示:
然后在搜索框中输入miniforge,如下图:
点击搜索结果中的miniforge链接,进入miniforge的版本目录页,如下图:
点击进入LastRelease目录,如下图:
点击对应自己系统的版本链接,会弹出下载对话框,如下图:
可以把网址文本框中的下载地址复制出来,然后通过wget命令进行下载,命令如下:
cd ~/soft
wget -c https://mirrors.tuna.tsinghua.edu/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh
执行如下图:
2、安装Miniforge3
可以通过以下命令进行安装
chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
安装过程中会有协议输入提示。
# 下面的提示输入yes
Do you accept the license terms? [yes|no]
>>> yes
# 安装路径提示,回车默认就行
Miniforge3 will now be installed into this location:
/home/zhenglibing/miniforge3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/zhenglibing/miniforge3] >>>
# 撤销提示,直接回车或者输入no再回车继续就行。
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> no
#
安装路径是:/home/zhenglibing/miniforge3
3、进入base环境
通过以下命令进入base环境
source ~/miniforge3/bin/activate
~/miniforge3就是miniforge3的安装目录,其实就是/home/zhenglibing/miniforge3
如下图:
2.5 安装Python
1、创建Python环境
安装好miniforge3后,就通过miniforge3的conda命令创建一个python 3.10的环境,命令如下:
conda create -n deepseek-r1 python=3.10
执行过程如下图:
2、查看conda环境列表
通过以下命令查看conda下的环境列表
conda env list
执行如下图:
3、进入deepseek-r1 Conda环境
通过以下命令激活进入,并验证python的版本信息:
conda activate deepseek-r1
python --version
执行如下图:
2.6 修改pip3软件源
为了避免使用pip/pip3安装工具时由于网络问题、下载超时导致安装失败,可以通过使用国内镜像源的方式解决,有2种方式。
1、在安装时通过 -i (–index-url)参数执行国内镜像源
比如:
pip3 install packagename -i https://pypi.tuna.tsinghua.edu/simple
packagename为要安装的工具包名称
2、创建~/.pip/pip.conf实现永久设置国内镜像源
可以将镜像源地址添加到你的 pip 配置文件中,以便每次都使用该源。通过以下命令创建或编辑配置文件:
mkdir -p ~/.pip
echo "[global]" > ~/.pip/pip.conf
echo "index-url = https://pypi.tuna.tsinghua.edu/simple" >> ~/.pip/pip.conf
3、升级pip
升级 pip 到最新版本。可以通过以下命令来升级 pip:
pip3 install --upgrade pip
2.7 安装PyTorch
PyTorch 是一个开源的深度学习框架,由 Facebook 的人工智能研究团队开发。它提供了强大的工具和库,适用于构建和训练深度学习模型,广泛应用于学术研究和工业界。
1、确定PyTorch版本
首先进入PyTorch的官网: https://pytorch/ ,如下图:
点击[Get started >]按钮,如下图:
根据自己实际的服务器环境选择,最后得到可以运行的命令脚本。
2、安装PyTorch
执行上图中获得的脚本:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch/whl/cu126
安装过程如下图:
安装完毕后如下图:
3、验证PyTorch是否可以使用GPU
可以通过以下命令,验证PyTorch是否可以使用GPU:
python -c "import torch; print(torch.cuda.is_available())"
如果返回True,则说明PyTorch可以使用GPU,执行如下图:
2.8 安装vLLM
vLLM (Very Large Language Model) 是一个用于高效推理的库,专为大规模语言模型的部署而构建。
1、安装vLLM
通过以下命令安装vLLM:
pip3 install vllm --upgrade
# 如果未更改pip3软件源为国内镜像源,可以直接使用以下命令进行安装,否则 可能由于网络问题下载文件失败
pip3 install vllm --upgrade -i https://pypi.tuna.tsinghua.edu/simple
安装过程如下图:
安装完毕如下图:
2、查看vLLM的版本
可以通过以下命令查看pip下安装的所有软件包的版本:
pip3 list
如下图:
可以通过以下命令查看vllm的详情
pip3 show vllm
执行如下图:
还可以直接使用以下命令查看版本:
vllm --version
执行如下图:
2.8 下载DeepSeek-R1模型
由于网络问题,我们通常是无法访问Huggingface官网( https://huggingface.co )的,我们可以从 https://hf-mirror ,或者魔搭社区( https://modelscope )中获取预训练模型。
这里以使用魔搭社区为例。详情参考: https://modelscope/docs/home
1、安装modescope
pip3 install modelscope
执行如下:
2、选择模型
打开魔搭社区的模型首页( https://modelscope/models ),如下图:
在搜索框中输入模型名称,选择要部署的预训练模型(unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF 为例),进入模型详情页面,如下图:
点击模型文件,可以看到当前模型的文件列表,如下图:
根据自己电脑GPU的配置选择合适的量化模型(以 DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf 为例),点击进入详情页面,如下图:
3、使用modescope下载模型
##blue##
这里下载gguf格式的蒸馏量化模型
modelscope download --model 'unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF' --include 'DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf' --local_dir ./models/deepseek-r1-7b
下载完毕后如下图:
其他模型下载
使用以下命令下载模型文件:
modelscope download --model="deepseek-ai/DeepSeek-R1-Distill-Qwen-7B" --local_dir ./model-dir
会在当前目录下创建model-dir目录,并把模型文件下载到model-dir目录下。
如下图:
2.9 下载DeepSeek分词器tokenizer文件(可选)
正常情况下,使用vLLM加载上面DeepSeek模型GGUF权重文件后,不需要单独加载分词器文件,即可实现推理。
然而,博主在本地部署DeepSeek后,发现DeepSeek的官方模型库的一个bug,需要通过修改DeepSeek的分词器配置文件予以解决。
由于这个月DeepSeek的官方模型库更新了分词器配置文件tokenizer_config.json里的chat-template,导致本地部署DeepSeek-R1-Distill-Qwen-32B后,
向模型提问时,模型只输出,没有开头的,从而导致前端应用无法正确识别DeepSeek的思考过程(Reasoning)。
这里单独下载DeepSeek分词器文件,并使用vLLM进行加载。
通过以下命令下载分词器:
modelscope download --model 'deepseek-ai/DeepSeek-R1-Distill-Qwen-7B' --include 'tokenizer*.json' --local_dir ./models/deepseek-r1-7b
执行如下图:
通过文本编辑器打开tokenizer_config.json文件,找到字段"chat_template",将其字段值末尾的\n删除掉即可。
注意:这种解决bug的workaround方式,需要在提示词中显式增加标签,才能启动DeepSeek模型的推理Reasoning能力。后文的提示词中有所体现,请读者留意。
2.10 部署DeepSeek-r1大模型
1、设置环境变量来指定使用ModelScope上的模型
export VLLM_USE_MODELSCOPE=True
2、部署并运行LLM大模型
通过vLLM部署大模型有2种方式
2.1 vllm serve 的方式
vllm serve ./models/deepseek-r1-7b/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf \
--served-model-name unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 2048 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key [API访问密钥]
- served-model-name,指定模型的名称。
- trust-remote-code,加载HuggingFace自定义代码时必须启用。
- host,指定服务侦听的IP地址。
- port,指定服务侦听的端口号。
- max-model-len,模型上下文长度。如果未指定,将继承模型自身设置。将max-model-len设置为2048、4096或8196,以找到在没有错误的情况下工作的最大值。如果取值过大,你可能会遇到OOM错误。
- dtype,权重和激活参数的数据类型,用于控制计算精度,常用auto、half、float16、bfloat16、float、float32。
- enable-prefix-caching,重复调用接口时缓存提示词内容,以加快推理速度。例如,如果你输入一个长文档并查询问有关它的各种问题,启用该参数将提高性能。
- enforce-eager,用于启用eager模式,加快推理速度。
- max_num_seqs,用于配置同时处理多少个请求;由于这将使内存使用量增加一倍,因此最好将其设置为1。
- api-key,指定API的访问密钥,把“[API访问密钥]”改为自己要设定的密钥。
Safetensors类型权重的模型部署方式如下
vllm serve ./model-dir \
--served-model-name deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 1024 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key [API访问密钥]
或者
python -m vllm.entrypoints.openai.api_server \
--model ./model-dir \
--served-model-name deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 1024 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key [API访问密钥]
./model-dir表示.safetensors权重文件所在的目录,config.json等文件要全。
2.2 python -m vllm.entrypoints.openai.api_server 的方式
python -m vllm.entrypoints.openai.api_server \
--model ./models/deepseek-r1-7b/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf \
--served-model-name unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF \
--trust-remote-code \
--host 0.0.0.0 \
--port 6006 \
--max-model-len 2048 \
--dtype float16 \
--enable-prefix-caching \
--enforce-eager \
--max_num_seqs 1 \
--api-key wongoing
第1种方式部署模型如下图(第2种类型):
出现下图说明部署运行成功:
查看一下显存的使用情况:
nvidia-smi
如下图:
从图中可以看出一共8GB的显存用了7个多GB。
3、查看 vLLM 支持的 DeepSeek API 接口
通过浏览器访问 http://localhost:6006/docs 查看 vLLM 支持的 DeepSeek API 接口,如下图:
4、通过Apifox测试 DeepSeek API 接口
模型列表API调用示例(GET):
curl http://localhost:6006/v1/models -H "Authorization: Bearer wongoing"
下图展示了如何通过接口查询模型列表:
对话API调用示例(POST):
curl http://localhost:6006/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer wongoing" \
-d '{
"model": "bartowski/DeepSeek-R1-Distill-Qwen-32B-GGUF",
"messages": [
{"role": "user", "content": "问题:玄武门之变结束的当天,李世民在深夜写下一段独白,他会写什么?要求:先思考,然后按照以下格式回答用户的问题:<think>推理内容</think>内容"}
],
"temperature": 0.6
}'
下图展示了如何通过接口进行对话:
2.11 部署知识库应用
0、选择知识库应用框架
一般情况下,LLM大模型推理服务与知识库应用服务不会部署在同一台服务器上(我是在Windows11中又安装了个WSL-Ubuntu20.04.6作为知识库应用服务器)。分为以下几个步骤:
- 1、开放DeepSeek推理服务接口
- 2、部署知识库应用
- 3、知识库应用对接DeepSeek模型
- 4、低代码可视化流程编排
1、开放DeepSeek推理服务接口
2、部署知识库应用
MaxKb官网: https://maxkb
离线安装参考: https://maxkb/docs/installation/offline_installtion
在线安装参考: https://maxkb/docs/installation/online_installtion
这里我们采用docker方式部署
安装docker参考命令如下:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
首先获取 MaxKb 的docker镜像,如下:
docker pull registry.fit2cloud/maxkb/maxkb
执行如下图:
docker images
执行如下图:
运行maxkb镜像,如下:
docker run -d --name=maxkb --restart=always -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data -v ~/.python-packages:/opt/maxkb/app/sandbox/python-packages registry.fit2cloud/maxkb/maxkb
# 用户名: admin
# 初始密码: MaxKB@123..
执行如下图:
3、知识库应用对接DeepSeek模型
知识库应用的使用操作流程一般可分为四步:添加模型、创建知识库、创建应用、发布应用。
在浏览器地址栏输入:http://localhost:8080,进入MaxKb的首页,如下图:
输入用户名和密码(默认用户名为admin,默认密码为MaxKB@123…),点击登录(首次登录会提示修改密码),进入管理页面,如下图:
然后点击系统设置,页面添加模型,如下图:
- 私有模型的类型选择vLLM,因为我是通过vLLM部署的DeepSeek-R1大模型的。
- 模型名称和基础模型,最好和vllm部署模型时的–served-model-name参数对一个,这样比较有规律。
- API ULR中执行的IP(或域名)跟vllm运行时–host参数和–port参数有关,由于我是在docker容器中访问宿主机的推理服务,因此指定的地址是172.17.0.1。
http://172.17.0.1:6006/v1
- API Key输入的内容就是vllm运行时–api-key后面跟的值。
点击保存后,就可以看到添加的模型,如下图:
然后我们切换到应用选项卡,添加一个应用,如下图:
点击创建应用,如下图:
输入应用名称、应用描述,应用类型,可以选择简单配置,也可以选择高级编排,这里选择简单配置,如下图:
保存、发布后,应用如下图:
4、低代码可视化流程编排
创建应用时,选择高级编排如下图:
2.12 DeepSeek对话测试
在MaxKb的应用信息页面中,点击[演示]按钮,如下图:
就会进入对话页面,如下图:
输入问题,测试如下图: