桌面显卡RTX4070部署AnythingLLM调用vLLM搭建本地大模型知识库

我们前面在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

开始之前,确认我们已经进入了虚拟环境。

source /root/deepseek/vllm_env/bin/activate

在下载模型之前,需要先通过如下命令安装ModelScope。

apt install python3-pip -ypip install modelscope

然后下载完整模型库。

modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local_dir /root/deepseek/

然后,我们使用vLLM启动模型服务:

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命令搭配&使程序在后台运行,防止进程因终端关闭而终止,适合长期稳定运行的场景。

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接口发送测试请求:

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引擎)。

apt install docker.io -y

然后,拉取AnythingLLM镜像。

docker pull mintplexlabs/anythingllm

接下来,我们创建一个AnythingLLM的存储目录并赋予权限,再手工创建一个配置文件。

mkdir anythingllmcd anythingllmtouch .envchmod 777 /root/deepseek/anythingllm -R

接下来,我们就可以启动AnythingLLM的Docker容器了。

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模型。

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着手打造个人知识库了!

***推荐阅读***

桌面显卡RTX4070安装Ubuntu系统部署vLLM环境

DeepSeek-R1内卷把自己卷死了,QwQ模型的优势凸显出来了

简单测试一下DeepSeek和QwQ检索知识库的能力

用Anything LLM来一场关于SD-WAN的开卷考试,DeepSeek-R1和QwQ谁更胜一筹?

围观一下,QwQ真的能和DeepSeek-R1一较高下吗?

目前来看,ollama量化过的DeepSeek模型应该就是最具性价比的选择

哪怕用笔记本的4070显卡运行DeepSeek,都要比128核的CPU快得多!

帮你省20块!仅需2条命令即可通过Ollama本地部署DeepSeek-R1模型

离线文件分享了,快来抄作业,本地部署一个DeepSeek个人小助理

Ubuntu使用Tesla P4配置Anaconda+CUDA+PyTorch

Ubuntu磁盘空间不足或配置错误时,如何操作扩容?

没有图形界面,如何快速部署一个Ubuntu 24.10的Server虚拟机

openVPN不同加密算法性能对比

Debian系统配置网络的花样还是太多了

使用openVPN对比AES和SM4加密算法性能,国密好像也没那么差

安装Debian时千万不要使用网络镜像站点

OpenWrt如何配置WireGuard互联?

<think>嗯,用户想了解如何搭建本地大模型知识库。首先,我需要理清楚搭建的主要步骤,然后分步骤解释。可能要从硬件和软件需求开始,然后是选择模型,数据准备,部署知识库构建,优化和测试,最后维护。每个步骤都需要详细说明,但又要保持简洁,避免用户被过多细节淹没。 硬件方面,GPU是必须的,特别是大模型需要显存。比如NVIDIA的A100或者RTX 3090。内存和存储也不能少,用户可能需要知道至少需要多少RAM和存储空间。软件环境的话,Python、PyTorch或TensorFlow,还有Hugging Face的库,这些都是常用的。不过用户可能对这些工具不太熟悉,需要简单解释一下它们的作用。 模型选择部分,得列举几个常用的大模型,比如LLaMA、ChatGLM,还有Hugging Face的模型库。用户可能不知道这些模型的特点,需要说明它们的适用场景,比如中英文支持、资源消耗等。可能需要提醒用户根据计算资源选择合适的模型,比如7B参数的模型需要多少显存,帮助用户做决策。 数据准备是关键,用户可能有自己的数据,但需要清洗和预处理。格式转换也很重要,比如转成JSON或者文本文件。可能还要提到数据增强的方法,比如去重、分词,或者使用正则表达式清洗数据。这部分用户可能需要具体例子,但暂时先点到为止,后续可以深入。 模型部署方面,Hugging Face的Transformers库是常用的,加载预训练模型,然后进行微调。微调需要准备数据集,设置训练参数。这里可能需要解释一下微调的概念,以及为什么需要微调。另外,量化技术可以降低资源消耗,比如使用bitsandbytes库,但会影响精度,需要权衡。 构建知识库的话,向量数据库如Faiss或Milvus,这些可能用户不太熟悉,需要说明它们的作用,即将文本向量化后存储,方便检索。RAG技术结合检索和生成,提升回答的准确性。这里可能需要简单说明RAG的工作原理,比如先检索相关文档,再生成回答。 优化和测试部分,性能监控工具如NVIDIA的Nsight,帮助用户优化模型。测试时需要多角度验证,确保回答正确。用户可能需要知道具体测试的方法,比如人工检查或自动化测试。 长期维护方面,定期更新数据和模型,监控资源使用情况。用户可能关心如何更新模型,是否需要重新训练,或者增量训练。安全性和隐私保护也很重要,特别是处理敏感数据时,要提醒用户加密和权限控制。 常见问题里,资源不足的解决办法,比如模型量化或分布式训练。中文支持可能需要用特定的模型或自己微调。处理专业领域数据需要领域适配,可能要用领域内的数据进行微调。 整个流程下来,要确保逻辑清晰,步骤明确,同时考虑用户可能的疑问点,提前给出解答。避免使用太多技术术语,或者适当解释术语,让不同技术背景的用户都能理解。可能还需要推荐一些工具和库,帮助用户快速上手。最后提醒用户根据实际情况调整,比如资源有限时的替代方案。</think>### 本地大模型知识库搭建指南 #### 1. **硬件与软件准备** - **硬件需求** - **GPU**:建议使用显存≥24GB的显卡(如NVIDIA A100、RTX 3090/4090),显存不足时可选择模型量化或分布式训练。 - **内存**:推荐≥64GB RAM。 - **存储**:预留≥500GB SSD空间(用于存储模型、数据集及向量数据库)。 - **软件环境** - **操作系统**:Linux(推荐Ubuntu 22.04)或Windows WSL2。 - **依赖库**:Python 3.8+、PyTorch/TensorFlow、Hugging Face Transformers、LangChain等。 - **工具链**:Docker(可选)、CUDA/cuDNN(GPU加速必需)。 #### 2. **模型选择与部署** - **模型选型** - **开源大模型**: - LLaMA-2(7B/13B参数,需申请权限) - ChatGLM3-6B(中英双语,显存需求低) - Falcon-40B(商用友好,需高性能硬件) - **轻量化模型**: - 使用Hugging Face Model Hub搜索适配场景的模型(如`bert-base-chinese`)。 - **部署流程** 1. 下载预训练模型权重(Hugging Face或官方渠道)。 2. 加载模型: ```python from transformers import AutoModel, AutoTokenizer model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True) tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b") ``` 3. 使用量化技术(如4-bit/8-bit)降低显存占用: ```python model = model.quantize(4) # 4-bit量化示例 ``` #### 3. **数据准备与处理** - **知识数据来源** - 结构化数据:数据库导出的CSV/JSON文件。 - 非结构化数据:PDF、Word、网页爬虫数据(需文本提取)。 - **数据清洗** - 去噪:移除HTML标签、特殊符号、乱码。 - 分词:使用jieba(中文)或spaCy(英文)。 - 向量化:通过BERT等模型生成文本嵌入(Embedding)。 ```python from sentence_transformers import SentenceTransformer encoder = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2") embeddings = encoder.encode(["文本示例1", "文本示例2"]) ``` #### 4. **构建知识库系统** - **向量数据库选型** - **本地部署**:Faiss(轻量级)、Milvus(分布式支持)。 - **云服务**:Pinecone(付费,免运维)。 - **检索增强生成(RAG)** 1. 将知识数据存入向量数据库: ```python import faiss index = faiss.IndexFlatL2(embeddings.shape[1]) index.add(embeddings) ``` 2. 提问时先检索相关文档,再输入大模型生成答案: ```python query_embedding = encoder.encode(["用户问题"]) distances, indices = index.search(query_embedding, k=3) # 返回Top3相关结果 context = [knowledge_base[i] for i in indices[0]] answer = model.generate(context, query) ``` #### 5. **优化与测试** - **性能优化** - 使用vLLM加速推理(吞吐量提升5-10倍)。 - 采用HTTP API封装模型服务(FastAPI框架)。 - **效果验证** - 测试集覆盖:事实性问题、逻辑推理、多轮对话。 - 评估指标:回答准确率、响应延迟(RT≤3秒为佳)。 #### 6. **长期维护** - **数据更新**:定期增量导入新知识,重新生成向量索引。 - **模型迭代**:监控日志,根据用户反馈微调模型(LoRA/P-Tuning)。 - **安全防护**: - 输入过滤:防止Prompt注入攻击。 - 访问控制:API密钥验证+IP白名单。 --- ### 常见问题解答 1. **资源不足怎么办?** - 使用量化模型(如ChatGLM3-6B-INT4),显存需求可降至6GB。 - 采用CPU推理(速度下降,需开启OpenBLAS优化)。 2. **如何支持中文?** - 优先选择多语言模型(如mT5、ChatGLM3),或对英文模型进行SFT微调。 3. **专业领域适配?** - 领域数据微调:准备1k-10k条领域QA对,使用LoRA高效微调。 --- > **提示**:若需低成本启动,可先尝试LM Studio(桌面端离线运行LLM)或Ollama(Mac/Linux一键部署)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值