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日


第一部分:环境准备

  1. 更新系统和安装基本工具

确保系统是最新的,并安装必要的工具。

bash

sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git curl wget unzip python3-pip python3-dev
  1. 安装 Nvidia 驱动和 CUDA

你的 3090 需要 Nvidia 驱动和 CUDA 支持。Ubuntu 20.04 默认支持 CUDA 11.x,Mixtral 和相关库兼容 CUDA 11.8 或 12.x。

检查当前驱动

bash

nvidia-smi

安装 Nvidia 驱动和 CUDA 11.8

  1. 添加 Nvidia 仓库:

    bash

    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt update
    
  2. 安装驱动和 CUDA:

    bash

    sudo apt install -y nvidia-driver-535 nvidia-cuda-toolkit
    
  3. 重启系统:

    bash

    sudo reboot
    
  4. 验证安装:

    bash

    nvidia-smi
    nvcc --version
    
    • 预期:nvidia-smi 显示 4 张 GPU,nvcc 显示版本(如 11.8)。

(可选)升级到 CUDA 12.1

如果需要最新版本:

  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
    
  2. 按提示安装(选择驱动和工具包)。

  3. 更新环境变量:

    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
    
  4. 安装 cuDNN

cuDNN 加速深度学习计算,推荐与 CUDA 匹配的版本(例如 cuDNN 8.9 for CUDA 11.8)。

  1. Nvidia 官网 下载 cuDNN 8.9(需要登录)。

  2. 解压并安装:

    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*
    
  3. 验证:

    bash

    ls /usr/local/cuda/lib64 | grep cudnn
    

第二部分:模型和推理库安装

  1. 下载 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
  1. 安装 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

测试模型

bash

./main -m ~/llm_models/mixtral-8x22b-v0.1.Q4_K_M.gguf --n-gpu-layers 100 -p "Hello, how are you?"
  1. 安装 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

测试 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)

  1. 安装 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
  1. 部署 Milvus(GPU 版本)

  2. 创建目录并下载配置文件:

    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
    
  3. 修改 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]
      
  4. 启动 Milvus:

    bash

    docker-compose up -d
    
  5. 验证:

    bash

    docker ps
    curl http://localhost:9091/healthz
    
    • 预期:返回 OK。
  6. 安装 Milvus Python 客户端

bash

pip3 install pymilvus

第四部分:GUI 安装(Text-Generation-WebUI)

  1. 安装 Text-Generation-WebUI

bash

git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
pip3 install -r requirements.txt
  1. 配置和启动

使用 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
  1. 集成 Milvus(RAG)

  2. 安装 LangChain:

    bash

    pip3 install langchain
    
  3. 示例代码(保存为 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"})
    
  4. 在 WebUI 中启用 RAG(需要配置扩展,参考文档)。


第五部分:优化和验证

  1. 硬件优化
  1. 性能验证
  1. 开机自启

故障排除


这套手册覆盖了从环境配置到完整部署的每一步,适用于你的 Ubuntu 20.04 和 3090 硬件。如需进一步调整或调试,请告诉我具体问题!