第二章:部署环境准备

说实话,很多法律大模型项目翻车,不是模型本身不行,而是环境没搭好。我见过太多人花了几十万买卡,结果因为驱动版本不对,白白浪费一周时间。这一章,咱们就把这些坑一个个填平。

2.1 硬件选型:GPU、内存、存储

法律大模型推理,说白了就是算力换效果。我个人习惯把硬件选型分成三档:

配置等级 GPU 内存 存储 适用场景
入门级 RTX 4090 24GB 64GB 1TB NVMe SSD 7B以下模型微调/推理
进阶级 A100 80GB × 2 256GB 4TB NVMe SSD 13B-70B模型推理
生产级 H100 80GB × 4+ 512GB+ 10TB NVMe RAID 70B+模型并发服务

这里有个关键点:显存决定你能跑多大的模型。7B模型用FP16推理大概需要14GB显存,13B模型需要26GB。嗯,千万别买少了。

⚠️ 避坑指南
我曾经帮一个律所搭环境,他们买了4张RTX 3090,结果发现主板只支持2路NVLink。最后两张卡之间通信全靠PCIe,推理速度直接砍半。所以买卡前,一定先看主板支持几路NVLink。

2.2 操作系统配置

我强烈推荐Ubuntu 22.04 LTS。为什么?因为CUDA和PyTorch对它的支持最好。你想想看,要是装个CentOS,光驱动就能折腾你两天。

系统安装后,这几件事必须做:

  1. 关闭自动更新——有一次半夜系统自动升级内核,第二天CUDA驱动全挂了,教训深刻。
  2. 设置swap分区——建议设为内存的2倍。法律文档处理时,内存经常爆。
  3. 调整文件描述符限制——大模型并发请求多,默认1024根本不够。
# 我的标准配置脚本
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential dkms nvidia-driver-535 -y

# 关闭自动更新
sudo systemctl disable apt-daily.service
sudo systemctl disable apt-daily.timer

# 调整文件描述符
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf

2.3 CUDA与PyTorch环境搭建

这是最容易出问题的环节。我的原则是:版本对齐。别追求最新,要追求稳定。

推荐版本组合(2024年稳定版)
CUDA 12.1 + PyTorch 2.1.0 + cuDNN 8.9.4

为什么会推荐这个组合?因为法律大模型常用的transformers库和vLLM,对这个组合测试最充分。我试过CUDA 12.4,结果vLLM直接报错,回退到12.1就一切正常。

# CUDA安装(以12.1为例)
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run

# 配置环境变量
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

# 验证安装
nvidia-smi
nvcc --version

PyTorch安装有个小技巧:用pip装比用conda装更可控。我遇到过conda自动升级CUDA版本,导致项目跑不起来的情况。

# PyTorch安装
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121

# 验证GPU可用
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count())"

2.4 Docker容器化部署

说实话,Docker是解决环境依赖问题的终极方案。我现在的所有法律大模型项目,都跑在容器里。好处很明显:

  • 环境隔离,不会污染宿主机
  • 一键部署,换机器也能跑
  • 版本管理,回滚方便

但Docker跑GPU有个坑:必须装nvidia-container-toolkit。我第一次用Docker跑模型时,忘了装这个,结果容器里根本认不出GPU。

# 安装nvidia-container-toolkit
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
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

# 测试GPU容器
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi

下面是我常用的法律大模型Dockerfile模板:

FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04

RUN apt-get update && apt-get install -y \
    python3.10 python3-pip git curl \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "serve.py"]
💡 我的经验
建议把模型权重文件挂载到容器外部,用-v参数映射。这样更新模型时不用重新构建镜像,省时间。我一般这样启动:
docker run --gpus all -v /data/models:/app/models -p 8000:8000 legal-llm:latest

2.5 环境验证清单

每次搭完环境,我都会跑一遍这个验证脚本。确保所有组件都正常工作:

#!/bin/bash
echo "=== 环境验证 ==="

# 1. 检查GPU
echo "1. GPU状态:"
nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader

# 2. 检查CUDA
echo "2. CUDA版本:"
nvcc --version | grep "release"

# 3. 检查PyTorch
echo "3. PyTorch GPU可用:"
python3 -c "import torch; print(f'PyTorch: {torch.__version__}, GPU: {torch.cuda.is_available()}')"

# 4. 检查Docker GPU支持
echo "4. Docker GPU支持:"
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi -L

echo "=== 验证完成 ==="

嗯,到这里,你的部署环境就准备好了。记住一句话:环境搭得好,模型跑得早。别嫌这些准备工作繁琐,我见过太多人因为跳过这些步骤,最后花了两倍时间返工。

法律大模型部署环境准备流程 硬件选型 GPU(显存决定模型规模) 内存(建议64GB+) 存储(NVMe SSD必备) 操作系统配置 Ubuntu 22.04 LTS 关闭自动更新 调整文件描述符 CUDA + PyTorch 环境 CUDA 12.1 PyTorch 2.1.0 cuDNN 8.9.4 Docker容器化部署 nvidia-container-toolkit 模型权重挂载 端口映射

公众号:蓝海资料掘金营,微信deep3321