我们前面在4070笔记本上完成了vLLM环境的部署(桌面显卡RTX4070安装Ubuntu系统部署vLLM环境),电脑型号为机械革命极光X,处理器为12th Gen Intel(R) Core(TM) i7-12800HX,24核心;搭配32 GB(DDR5@4800 MHz)运行内存,500 GB系统盘(NVMe);显卡型号RTX4070,8 GB显存(8188MiB)。
已经安装好了Ubuntu 22.04 LTS系统,vLLM的当前最高版本为0.7.4,自动安装的版本为0.7.3;对应的,我们安装了显卡驱动的550.144.03版本,PyTorch的2.5.1版本,CUDA的12.4版本,cuDNN的9.8版本。

按照之前的经验(目前来看,ollama量化过的DeepSeek模型应该就是最具性价比的选择),8 GB显存要以BF16或FP16方式运行模型,也就只能跑一下1.5B模型,本次我们就以DeepSeek-R1:1.5b来演示一下。
正常来讲,官方建议通过huggingface来下载镜像,但是在国内更推荐使用ModelScope。模型文件链接如下:
https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B/files
开始之前,确认我们已经进入了虚拟环境。
bash
source /root/deepseek/vllm_env/bin/activate
在下载模型之前,需要先通过如下命令安装ModelScope。
nginx
apt install python3-pip -ypip install modelscope

然后下载完整模型库。
apache
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local_dir /root/deepseek/

然后,我们使用vLLM启动模型服务:
css
vllm serve /root/deepseek \ --trust-remote-code \ --tensor-parallel-size 1 \ --max-model-len 4096 \ --gpu-memory-utilization 0.9 \ --served-model-name deepseek-1.5b \ --port 8000 \ --host 0.0.0.0

此时,vLLM进程会独占一个终端。

如果需要在后台运行,可以使用nohup命令搭配&使程序在后台运行,防止进程因终端关闭而终止,适合长期稳定运行的场景。
css
nohup vllm serve /root/deepseek \ --trust-remote-code \ --tensor-parallel-size 1 \ --max-model-len 4096 \ --gpu-memory-utilization 0.9 \ --served-model-name deepseek-1.5b \ --port 8000 \ --host 0.0.0.0 > vllm.log 2>&1 &
或者直接新开一个终端重新连接,方便观察运行情况。
根据模型的配置文件config.json中的torch_dtype字段,我们可以看到,DeepSeek模型明确指定模型精度为bfloat16(BF16)。

此时的显存占用为6248 MB,比ollama使用FP16精度运行的1.5B模型的3661 MB显存占用更高。

在启动时,我们通过--gpu-memory-utilization设置了显存占用比例,推荐范围为0.8-0.95;如果计算能力不足,还可以使用--dtype参数调整模型精度,如设置为half强制使用float16精度;而使用--trust-remote-code则允许加载自定义模型代码。还可以使用--max-num-batched-tokens参数设置单次请求的最大token处理量,通过--max-num-seqs参数设置并行请求数。
vLLM模型启动后,我们可以查看端口状态观察是否启动成功。

或者使用API接口发送测试请求:
swift
curl http://localhost:8000/v1/completions \-H "Content-Type: application/json" \-d '{"model": "deepseek-1.5b", "prompt": "Hello!", "max_tokens": 200}'

确认模型可用之后,我们开始部署AnythingLLM。AnythingLLM支持运行在桌面环境或者服务器环境,我们前面介绍了在桌面环境的安装与运行(用Anything LLM来一场关于SD-WAN的开卷考试,DeepSeek-R1和QwQ谁更胜一筹?)。当在服务器环境中时,目前仅支持运行在Docker环境中。
首先,确认安装了Docker环境(Ubuntu 22.04.4安装Docker引擎)。
nginx
apt install docker.io -y

然后,拉取AnythingLLM镜像。
bash
docker pull mintplexlabs/anythingllm

接下来,我们创建一个AnythingLLM的存储目录并赋予权限,再手工创建一个配置文件。
bash
mkdir anythingllmcd anythingllmtouch .envchmod 777 /root/deepseek/anythingllm -R

接下来,我们就可以启动AnythingLLM的Docker容器了。
swift
docker run -d \ --network host \ --name anythingllm \ --cap-add SYS_ADMIN \ -p 3001:3001 \ -v /root/deepseek/anythingllm:/app/server/storage \ -v /root/deepseek/anythingllm/.env:/app/server/.env \ -e STORAGE_DIR="/app/server/storage" \ mintplexlabs/anythingllm:latest

AnythingLLM的Docker容器启动后,我们可以查看端口状态观察是否启动成功。

启动成功之后,我们就可以通过浏览器访问AnythingLLM的WEB管理页面了(http://192.168.1.222:3001)。

点击【开始】之后,我们开始配置LLM偏好,本次,我们选择【Local AI】,并在Local AI Base URL处填入http://192.168.1.222:8000/v1,这样系统就能自动识别到存在的模型,再从Chat Model Selection选择对应的模型就可以了。

对于企业用户而言,用户设置界面可以选择【我的团队】使用此实例。此时,我们将创建一个管理员账号,配置完成后,我们就可以创建和邀请其他人成为用户或管理员了。

数据处理与隐私页面。

跳过AnythingLLM调查。

创建我们的第一个工作区并开始使用AnythingLLM。

进入到工作区中,我们先简单提问一个问题。

确实快,输出速率达到了69.57 tok/s。
然后我们尝试使用FP16精度重新运行一下DeepSeek-R1模型。
css
nohup vllm serve /root/deepseek \--trust-remote-code \--dtype half \ --tensor-parallel-size 1 \ --max-model-len 4096 \ --gpu-memory-utilization 0.9 \ --served-model-name deepseek-1.5b \ --port 8000 \--host 0.0.0.0 > vllm.log 2>&1 &

此时的显存占用仍为6248 MB。

重新提问一下。

可以看到,相同的问题,DeepSeek认为再次提问是输出不够详细,需要更详细的回答。

从结果来看,输出速率变化不大,但是输出时长多了一倍多。
对应的,我们切换到Windows系统,还是使用AnythingLLM调用通过ollama运行的FP16量化的DeepSeek-R1:1.5b模型,用相同的问题再测试一下。

从长度和速率而言,跟第一次效果差不多,但是回答变成了英文回答。

要求用中文重新回答,可以看到回答的内容跟使用BF16精度时存在较大偏差。现在看来,后面可以使用AnythingLLM着手打造个人知识库了!
***推荐阅读***
DeepSeek-R1内卷把自己卷死了,QwQ模型的优势凸显出来了
用Anything LLM来一场关于SD-WAN的开卷考试,DeepSeek-R1和QwQ谁更胜一筹?
目前来看,ollama量化过的DeepSeek模型应该就是最具性价比的选择
哪怕用笔记本的4070显卡运行DeepSeek,都要比128核的CPU快得多!
帮你省20块!仅需2条命令即可通过Ollama本地部署DeepSeek-R1模型
离线文件分享了,快来抄作业,本地部署一个DeepSeek个人小助理
Ubuntu使用Tesla P4配置Anaconda+CUDA+PyTorch
没有图形界面,如何快速部署一个Ubuntu 24.10的Server虚拟机
使用openVPN对比AES和SM4加密算法性能,国密好像也没那么差
