96G显存服务器llm部署
以下是为你的硬件(4张 Nvidia 3090 服务器,12核 CPU)和操作系统(Ubuntu 20.04)量身定制的详细指导手册,用于本地部署开源大语言模型(LLM)。我们将使用推荐的 Mixtral 8x22B 模型,结合 llama.cpp(单用户推理)和 vLLM(高吞吐量或多用户场景),搭配 Milvus 向量数据库进行 RAG(检索增强生成),以及 Text-Generation-WebUI 作为 GUI。手册将涵盖工具安装、步骤说明和优化建议,确保详尽且可操作。
本地部署 Mixtral 8x22B LLM 指导手册
目标:在 Ubuntu 20.04 上部署 Mixtral 8x22B,使用 4 张 Nvidia 3090(总计 96GB VRAM)进行高效推理,集成向量数据库和 GUI。
硬件:4 x Nvidia 3090(每张 24GB VRAM),12核 CPU
系统:Ubuntu 20.04 LTS
日期:截至 2025年3月22日
第一部分:环境准备
- 更新系统和安装基本工具
确保系统是最新的,并安装必要的工具。
bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git curl wget unzip python3-pip python3-dev
- 安装 Nvidia 驱动和 CUDA
你的 3090 需要 Nvidia 驱动和 CUDA 支持。Ubuntu 20.04 默认支持 CUDA 11.x,Mixtral 和相关库兼容 CUDA 11.8 或 12.x。
检查当前驱动
bash
nvidia-smi
-
预期输出:显示 4 张 3090 和驱动版本(例如 535.x)。
-
如果未安装,继续以下步骤。
安装 Nvidia 驱动和 CUDA 11.8
-
添加 Nvidia 仓库:
bash
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update
-
安装驱动和 CUDA:
bash
sudo apt install -y nvidia-driver-535 nvidia-cuda-toolkit
-
重启系统:
bash
sudo reboot
-
验证安装:
bash
nvidia-smi nvcc --version
- 预期:nvidia-smi 显示 4 张 GPU,nvcc 显示版本(如 11.8)。
(可选)升级到 CUDA 12.1
如果需要最新版本:
-
下载 CUDA 12.1:
bash
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_535.86.10_linux.run sudo sh cuda_12.1.0_535.86.10_linux.run
-
按提示安装(选择驱动和工具包)。
-
更新环境变量:
bash
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc
-
安装 cuDNN
cuDNN 加速深度学习计算,推荐与 CUDA 匹配的版本(例如 cuDNN 8.9 for CUDA 11.8)。
-
从 Nvidia 官网 下载 cuDNN 8.9(需要登录)。
-
解压并安装:
bash
tar -xzvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
-
验证:
bash
ls /usr/local/cuda/lib64 | grep cudnn
第二部分:模型和推理库安装
- 下载 Mixtral 8x22B 模型
我们使用 4-bit 量化版本(Q4_K_M,约 45-50GB VRAM),从 Hugging Face 下载 GGUF 格式。
bash
mkdir ~/llm_models && cd ~/llm_models
wget https://huggingface.co/TheBloke/Mixtral-8x22B-v0.1-GGUF/resolve/main/mixtral-8x22b-v0.1.Q4_K_M.gguf
-
文件大小:约 47GB。
-
存储路径:~/llm_models/mixtral-8x22b-v0.1.Q4_K_M.gguf。
- 安装 llama.cpp(单用户推理)
llama.cpp 轻量高效,支持多 GPU。
安装依赖
bash
sudo apt install -y g++ cmake libopenblas-dev
克隆和编译
bash
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_CUDA=1 -j12
-
LLAMA_CUDA=1:启用 CUDA 支持。
-
-j12:利用 12 核 CPU 加速编译。
测试模型
bash
./main -m ~/llm_models/mixtral-8x22b-v0.1.Q4_K_M.gguf --n-gpu-layers 100 -p "Hello, how are you?"
-
--n-gpu-layers 100:将所有层卸载到 GPU(96GB VRAM 足以支持)。
-
预期:输出类似 “Hi! I’m doing great, thanks for asking!”。
预期:输出类似“Hi!我很好,谢谢你的询问!”。
- 安装 vLLM(高吞吐量推理)
vLLM 适合多用户或 API 场景。
安装 Python 依赖
bash
pip3 install --upgrade pip
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu118
pip3 install vllm
运行 vLLM 服务器
bash
python3 -m vllm.entrypoints.openai_api_server \
--model mistral-community/Mixtral-8x22B-v0.1 \
--tensor-parallel-size 4 \
--dtype float16
-
--tensor-parallel-size 4:使用 4 个 GPU。
-
--dtype float16:节省 VRAM(约 50GB)。
测试 API
bash
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{"model": "mistral-community/Mixtral-8x22B-v0.1", "prompt": "Hello, world!", "max_tokens": 50}'
第三部分:向量数据库安装(Milvus)
- 安装 Docker
Milvus 通过 Docker 部署,支持 GPU。
bash
sudo apt install -y docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
newgrp docker
-
部署 Milvus(GPU 版本)
-
创建目录并下载配置文件:
bash
mkdir ~/milvus && cd ~/milvus wget https://github.com/milvus-io/milvus/releases/download/v2.3.5/milvus-standalone-docker-compose.yml -O docker-compose.yml
-
修改 docker-compose.yml,启用 GPU:
-
编辑文件:
bash
nano docker-compose.yml
-
在 standalone 服务下添加:
yaml
deploy: resources: reservations: devices: - driver: nvidia device_ids: ['0', '1', '2', '3'] capabilities: [gpu]
-
-
启动 Milvus:
bash
docker-compose up -d
-
验证:
bash
docker ps curl http://localhost:9091/healthz
- 预期:返回 OK。
-
安装 Milvus Python 客户端
bash
pip3 install pymilvus
第四部分:GUI 安装(Text-Generation-WebUI)
- 安装 Text-Generation-WebUI
bash
git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
pip3 install -r requirements.txt
- 配置和启动
使用 llama.cpp
bash
python3 server.py --model ~/llm_models/mixtral-8x22b-v0.1.Q4_K_M.gguf --n-gpu-layers 100
使用 vLLM
bash
python3 server.py --vllm --model mistral-community/Mixtral-8x22B-v0.1 --tensor-parallel-size 4
-
访问:浏览器打开 http://localhost:7860。
-
预期:看到聊天界面,可输入提示词。
-
集成 Milvus(RAG)
-
安装 LangChain:
bash
pip3 install langchain
-
示例代码(保存为 rag.py):
python
from langchain.vectorstores import Milvus from langchain.embeddings import HuggingFaceEmbeddings from langchain.text_splitter import CharacterTextSplitter # 加载文档 with open("your_document.txt") as f: text = f.read() splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50) docs = splitter.split_text(text) # 生成嵌入 embeddings = HuggingFaceEmbeddings(model_name="nomic-ai/nomic-embed-text-v1") vector_store = Milvus.from_texts(docs, embeddings, connection_args={"host": "localhost", "port": "19530"})
-
在 WebUI 中启用 RAG(需要配置扩展,参考文档)。
第五部分:优化和验证
- 硬件优化
-
VRAM:Mixtral (50GB) + Milvus (4-8GB) < 96GB,留有余量。
-
散热:运行 nvidia-smi 监控温度,确保低于 85°C。
-
电源:3090 高负载需 1000W+ PSU,检查稳定性。
- 性能验证
-
llama.cpp:预期 20-30 tokens/sec。
-
vLLM:预期 50-60 tokens/sec(批处理)。
-
Milvus:查询延迟 < 100ms。
- 开机自启
-
frpc(如需远程):参考前文 systemd 配置。
-
Milvus:Docker 已自启。
-
WebUI:创建 systemd 服务(类似 frpc)。
故障排除
-
CUDA 错误:检查驱动版本和 LD_LIBRARY_PATH。
-
模型加载失败:确认文件路径和 VRAM 分配。
-
WebUI 无法访问:检查端口 7860 是否被占用(netstat -tuln | grep 7860)。
这套手册覆盖了从环境配置到完整部署的每一步,适用于你的 Ubuntu 20.04 和 3090 硬件。如需进一步调整或调试,请告诉我具体问题!