Spaces:
Paused
Paused
Linux GPU部署指南 (RTX 4090)
🚀 自适应RAG系统在Linux RTX 4090环境部署
本指南将详细介绍如何在配备NVIDIA RTX 4090 GPU的Linux服务器上部署自适应RAG系统。
📋 环境要求
硬件要求
- NVIDIA RTX 4090 GPU
- 至少16GB内存(推荐32GB)
- 50GB+可用磁盘空间
- Ubuntu 20.04+ / CentOS 8+ / RHEL 8+
软件要求
- Linux操作系统(推荐Ubuntu 22.04 LTS)
- NVIDIA驱动程序(推荐535+)
- CUDA 12.0+
- Docker(可选但推荐)
- Python 3.8-3.11
🔧 步骤1:系统准备
1.1 更新系统
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git build-essential python3-pip python3-venv
1.2 安装NVIDIA驱动和CUDA
# 检查GPU
lspci | grep -i nvidia
# 添加NVIDIA软件源
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
# 安装NVIDIA驱动和CUDA
sudo apt-get install -y nvidia-driver-535 cuda-12-2
# 重启系统
sudo reboot
1.3 验证GPU安装
# 重启后验证
nvidia-smi
nvcc --version
🐳 步骤2:Docker环境配置(推荐)
2.1 安装Docker
# 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
2.2 安装NVIDIA Container Toolkit
# 添加NVIDIA Docker源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 安装nvidia-container-toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
2.3 创建Dockerfile
# 创建 Dockerfile
cat > Dockerfile << 'EOF'
FROM nvidia/cuda:12.2-devel-ubuntu22.04
# 设置非交互模式
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1
# 更新系统并安装Python
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
python3-venv \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
# 创建工作目录
WORKDIR /app
# 复制项目文件
COPY requirements.txt .
COPY *.py .
COPY *.md .
# 安装Python依赖
RUN pip3 install --no-cache-dir -r requirements.txt
# 暴露端口(如果需要Web界面)
EXPOSE 8000
# 启动命令
CMD ["python3", "main.py"]
EOF
🐍 步骤3:Python环境配置(直接部署)
3.1 创建Python虚拟环境
# 克隆项目
git clone <your-repo-url> adaptive_rag
cd adaptive_rag
# 创建虚拟环境
python3 -m venv rag_env
source rag_env/bin/activate
# 升级pip
pip install --upgrade pip
3.2 修改requirements.txt以支持GPU
需要更新requirements.txt以优化GPU使用:
# 创建GPU优化的requirements文件
cat > requirements_gpu.txt << 'EOF'
# 核心框架
langchain>=0.1.0
langgraph>=0.0.40
langchain-community>=0.0.20
langchain-core>=0.1.0
# LLM集成
langchain-ollama>=0.1.0
# 向量数据库和嵌入(GPU优化版本)
chromadb>=0.4.0
sentence-transformers>=2.2.0
torch>=2.0.0+cu118 --index-url https://download.pytorch.org/whl/cu118
torchvision>=0.15.0+cu118 --index-url https://download.pytorch.org/whl/cu118
transformers>=4.30.0
accelerate>=0.20.0
# 文档处理
tiktoken>=0.5.0
beautifulsoup4>=4.12.0
requests>=2.31.0
# 网络搜索
tavily-python>=0.3.0
# 数据处理
numpy>=1.24.0,<2.0
pandas>=2.0.0
# 工具库
python-dotenv>=1.0.0
pydantic>=2.0.0
typing-extensions>=4.0.0
# GPU加速库
cupy-cuda12x>=12.0.0
faiss-gpu>=1.7.4
EOF
3.3 安装依赖
# 安装GPU优化依赖
pip install -r requirements_gpu.txt
🛠️ 步骤4:修改配置以优化GPU使用
4.1 更新document_processor.py以使用GPU
需要修改嵌入模型配置:
# 在document_processor.py中修改
self.embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-MiniLM-L6-v2",
model_kwargs={'device': 'cuda'}, # 使用GPU
encode_kwargs={'normalize_embeddings': True}
)
4.2 创建GPU优化配置
# 创建 gpu_config.py
cat > gpu_config.py << 'EOF'
import torch
import os
# GPU配置
if torch.cuda.is_available():
DEVICE = "cuda"
GPU_COUNT = torch.cuda.device_count()
GPU_NAME = torch.cuda.get_device_name(0)
print(f"发现 {GPU_COUNT} 个GPU: {GPU_NAME}")
# 设置CUDA优化
torch.backends.cudnn.benchmark = True
torch.backends.cudnn.deterministic = False
# 设置GPU内存管理
torch.cuda.empty_cache()
else:
DEVICE = "cpu"
print("未发现GPU,使用CPU模式")
# 优化设置
EMBEDDING_BATCH_SIZE = 32 if DEVICE == "cuda" else 8
MAX_WORKERS = 4 if DEVICE == "cuda" else 2
EOF
🤖 步骤5:安装和配置Ollama
5.1 安装Ollama
# 下载并安装Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# 或者使用Docker
# docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
5.2 下载模型
# 下载Mistral模型
ollama pull mistral
# 或者下载更大的模型(如果GPU内存足够)
ollama pull llama2:13b
ollama pull codellama:34b
5.3 启动Ollama服务
# 启动Ollama服务
ollama serve &
# 验证服务
curl http://localhost:11434/api/version
🔐 步骤6:环境变量配置
6.1 创建.env文件
cat > .env << 'EOF'
# API密钥
TAVILY_API_KEY=your_tavily_api_key_here
# GPU配置
CUDA_VISIBLE_DEVICES=0
TORCH_CUDA_ARCH_LIST="8.9" # RTX 4090架构
# 模型配置
HF_HOME=/app/models
TRANSFORMERS_CACHE=/app/models
# 性能优化
OMP_NUM_THREADS=8
MKL_NUM_THREADS=8
EOF
🚀 步骤7:部署和启动
7.1 使用Docker部署
# 构建镜像
docker build -t adaptive-rag:gpu .
# 运行容器
docker run -d \
--gpus all \
--name adaptive-rag \
--env-file .env \
-p 8000:8000 \
-v $(pwd)/data:/app/data \
adaptive-rag:gpu
7.2 直接Python部署
# 激活虚拟环境
source rag_env/bin/activate
# 启动系统
python main.py
📊 步骤8:性能监控
8.1 创建监控脚本
cat > monitor_gpu.py << 'EOF'
import psutil
import GPUtil
import time
def monitor_system():
while True:
# GPU监控
gpus = GPUtil.getGPUs()
for gpu in gpus:
print(f"GPU {gpu.id}: {gpu.load*100}% | 内存: {gpu.memoryUsed}MB/{gpu.memoryTotal}MB")
# CPU和内存监控
print(f"CPU: {psutil.cpu_percent()}% | 内存: {psutil.virtual_memory().percent}%")
print("-" * 50)
time.sleep(5)
if __name__ == "__main__":
monitor_system()
EOF
pip install gputil
python monitor_gpu.py
🔧 步骤9:性能优化配置
9.1 创建优化启动脚本
cat > start_optimized.sh << 'EOF'
#!/bin/bash
# 设置GPU优化环境变量
export CUDA_VISIBLE_DEVICES=0
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512
export TOKENIZERS_PARALLELISM=false
# 启动系统
source rag_env/bin/activate
python main.py
EOF
chmod +x start_optimized.sh
9.2 创建系统服务
# 创建systemd服务
sudo tee /etc/systemd/system/adaptive-rag.service > /dev/null << 'EOF'
[Unit]
Description=Adaptive RAG System
After=network.target
[Service]
Type=simple
User=your_username
WorkingDirectory=/path/to/adaptive_rag
Environment=PATH=/path/to/adaptive_rag/rag_env/bin
ExecStart=/path/to/adaptive_rag/rag_env/bin/python main.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable adaptive-rag
sudo systemctl start adaptive-rag
🐛 步骤10:故障排除
10.1 常见问题
- CUDA内存不足
# 减少批处理大小
export EMBEDDING_BATCH_SIZE=16
# 或者启用梯度检查点
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:256
- Ollama连接问题
# 检查Ollama状态
sudo systemctl status ollama
# 重启Ollama
sudo systemctl restart ollama
- 权限问题
# 添加用户到docker组
sudo usermod -aG docker $USER
# 重新登录
10.2 性能调优
# GPU性能模式
sudo nvidia-smi -pm 1
sudo nvidia-smi -ac 9251,2100
# 系统优化
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
📈 预期性能
在RTX 4090环境下的预期性能:
- 文档嵌入: ~1000 documents/second
- 查询响应: ~2-5 seconds per query
- GPU利用率: 60-80%
- 内存使用: 8-12GB GPU memory
🎯 验证部署
# 测试GPU可用性
python -c "import torch; print(f'CUDA可用: {torch.cuda.is_available()}'); print(f'GPU数量: {torch.cuda.device_count()}')"
# 测试系统
curl -X POST http://localhost:8000/query \
-H "Content-Type: application/json" \
-d '{"question": "什么是LLM智能体?"}'
这个部署指南提供了完整的Linux GPU环境配置,确保您的自适应RAG系统能够充分利用RTX 4090的计算能力。