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文件,结果把桌面搞崩了。其实有更稳妥的办法。
我的标准流程:
- 先卸载旧驱动:
sudo apt purge nvidia* - 添加官方PPA源:
sudo add-apt-repository ppa:graphics-drivers/ppa - 安装推荐驱动:
sudo apt install nvidia-driver-535(535是目前最稳的版本) - 重启后验证:
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:v1、legal-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环境根本看不到。
知识体系总览
下面这张图,是我自己总结的软件环境搭建全流程。你可以把它贴在工位上,每次搭环境时对照着来。
好了,环境搭好之后,下一节咱们就开始真正部署法律大模型了。记住:环境搭得好,后面少烦恼。别嫌这一步麻烦,我见过太多人在这上面翻车,最后花几倍的时间来排查。
公众号:蓝海资料掘金营,微信deep3321