3. 软件环境搭建:打好地基才能盖高楼

说实话,我见过太多法律大模型项目“死”在环境搭建这一步。不是驱动版本不对,就是CUDA和PyTorch打架,折腾一两天还没跑起来。嗯,这一章咱们就把这些坑一个个填平。

核心思路:操作系统是地基 → 驱动和CUDA是钢筋 → Docker是预制板 → Python环境是装修。一层层往上搭,别跳步。

3.1 操作系统选择与优化(Ubuntu 20.04/22.04)

我个人习惯用Ubuntu 20.04 LTS。为什么?因为NVIDIA驱动和CUDA对20.04的支持最成熟,踩过的坑最少。22.04当然也行,但有些老显卡驱动可能得手动编译——你想想看,这多折腾。

选哪个版本?

场景 推荐版本 理由
新装机(RTX 30/40系显卡) Ubuntu 22.04 内核新,对新一代硬件支持好
老机器(RTX 20系及以下) Ubuntu 20.04 驱动兼容性最好,社区资料最全
生产服务器 Ubuntu 20.04 LTS 长期支持到2025年,稳定第一

安装后的优化操作:

  • 关闭自动更新:sudo systemctl disable apt-daily.service —— 别让系统半夜偷偷重启,我吃过这亏。
  • 设置swap空间:至少32GB。法律大模型推理时,显存不够会往内存写,swap太小直接OOM。
  • 调整文件描述符限制:ulimit -n 65535,不然跑多进程时容易报“Too many open files”。

小技巧:装完系统第一件事,跑 sudo apt update && sudo apt upgrade -y。别问我为什么,有一次我跳过这步,结果CUDA死活装不上,查了半天发现是内核太旧。

3.2 NVIDIA驱动与CUDA安装

这一步是重灾区。我见过有人直接去NVIDIA官网下.run文件,结果把桌面搞崩了。其实有更稳妥的办法。

我的标准流程:

  1. 先卸载旧驱动:sudo apt purge nvidia*
  2. 添加官方PPA源:sudo add-apt-repository ppa:graphics-drivers/ppa
  3. 安装推荐驱动:sudo apt install nvidia-driver-535(535是目前最稳的版本)
  4. 重启后验证:nvidia-smi 能看到显卡信息就对了

CUDA安装:千万别装最新版!法律大模型常用的框架(比如vLLM、Transformers)对CUDA版本有要求。我建议装CUDA 11.8或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 --toolkit --silent --override

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

# 验证
nvcc --version

我曾经踩过的坑:有一次装CUDA 12.2,结果PyTorch还没适配,跑模型时一直报“CUDA error: no kernel image is available”。折腾了两天,最后降级到12.1才解决。所以,别追新,追稳

3.3 Docker与容器化环境配置

说白了,Docker就是给你的模型环境装个“隔离箱”。好处是:换机器、换团队、换项目,环境完全一致,不会出现“在我电脑上能跑啊”这种尴尬。

安装Docker:

# 官方推荐方式
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 把当前用户加入docker组(免sudo)
sudo usermod -aG docker $USER
newgrp docker

# 验证
docker --version

配置NVIDIA Container Toolkit:这一步很多人漏掉。没有它,Docker容器里用不了GPU。

# 添加源
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-ubuntu20.04 nvidia-smi

我的习惯:每个法律大模型项目都单独建一个Docker镜像。比如 legal-llm:v1legal-llm:v2。这样回滚、切换版本都方便,不会污染宿主机环境。

3.4 Python虚拟环境与依赖管理

嗯,这里我要多说两句。很多人图省事,直接在系统Python里pip install。结果呢?项目A要torch 1.13,项目B要torch 2.0,冲突了。你想想看,这多头疼。

推荐方案:使用conda

# 安装Miniconda(轻量级,够用)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 创建法律大模型专用环境
conda create -n legal_llm python=3.10
conda activate legal_llm

# 安装核心依赖
pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
pip install transformers==4.36.0 accelerate==0.25.0
pip install vllm==0.2.7  # 法律大模型推理加速库

依赖管理最佳实践:

  • pip freeze > requirements.txt 锁定版本 —— 别用 >=,指定精确版本号
  • 每个项目一个独立的conda环境,命名规则:项目名_python版本(比如 legal_qa_py310
  • 定期清理不用的环境:conda env remove -n 环境名

注意:千万别用 pip install --user 装包!有一次我这么干,结果系统Python和conda环境打架,import时报错说“找不到模块”。排查了半天,发现包装到了 ~/.local 目录下,conda环境根本看不到。

知识体系总览

下面这张图,是我自己总结的软件环境搭建全流程。你可以把它贴在工位上,每次搭环境时对照着来。

法律大模型软件环境搭建全流程 ① 操作系统 Ubuntu 20.04 LTS / 22.04 LTS ② NVIDIA驱动 + CUDA Toolkit 驱动535 + CUDA 12.1(推荐) ③ Docker + NVIDIA Container Toolkit 容器化隔离,环境一致性保障 ④ Python虚拟环境 Conda + Python 3.10 + 依赖管理 🚀 法律大模型运行 ⚠️ 避坑要点 • 别追新版本 • 先卸载旧驱动 • 锁定CUDA版本 • 配NVIDIA Toolkit • 用conda隔离 • 别用--user装包 • 定期清理环境 • 备份requirements ✅ 推荐版本 OS: 20.04/22.04 驱动: 535 CUDA: 12.1 Docker: 24.0+ Python: 3.10 PyTorch: 2.1.0 vLLM: 0.2.7

好了,环境搭好之后,下一节咱们就开始真正部署法律大模型了。记住:环境搭得好,后面少烦恼。别嫌这一步麻烦,我见过太多人在这上面翻车,最后花几倍的时间来排查。


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