最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

人工智能-WLS-Ubuntu22.04本地部署DeepSeek-R1

业界 admin 9浏览 0评论

人工智能-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
Miniforge32025-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 是一个理想选择。

Miniforge

  • 概述:Miniforge 是一个社区驱动的 Miniconda 版本,旨在提供开源的 conda 包。
  • 官网地址:
    • https://github/conda-forge/miniforge
  • 特点
    • 依赖于 conda-forge:Miniforge 默认使用 conda-forge 作为包源,conda-forge 是一个社区驱动的 conda 包构建和分发生态系统,提供了大量的开源软件包。
    • 小型安装包:与 Miniconda 类似,Miniforge 也是一个轻量级的安装包,用户可以根据需要自行添加软件包。
    • 更好的社区支持:由于 Miniforge 使用 conda-forge,你可以更容易地获取到更新和维护良好的开源包。

小结

  • 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
Miniforge32025-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 是一个理想选择。

Miniforge

  • 概述:Miniforge 是一个社区驱动的 Miniconda 版本,旨在提供开源的 conda 包。
  • 官网地址:
    • https://github/conda-forge/miniforge
  • 特点
    • 依赖于 conda-forge:Miniforge 默认使用 conda-forge 作为包源,conda-forge 是一个社区驱动的 conda 包构建和分发生态系统,提供了大量的开源软件包。
    • 小型安装包:与 Miniconda 类似,Miniforge 也是一个轻量级的安装包,用户可以根据需要自行添加软件包。
    • 更好的社区支持:由于 Miniforge 使用 conda-forge,你可以更容易地获取到更新和维护良好的开源包。

小结

  • 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的应用信息页面中,点击[演示]按钮,如下图:

就会进入对话页面,如下图:

输入问题,测试如下图:

发布评论

评论列表 (0)

  1. 暂无评论