第2章:环境搭建——Python环境配置、PyTorch安装、CUDA与GPU环境验证、Hugging Face库安装
说实话,做法律大模型微调,最让人头疼的往往不是算法本身,而是环境搭建。我见过太多同学卡在这一步,明明代码写得没问题,就是跑不起来。嗯,今天咱们就把这事彻底搞定。
核心要点:环境搭建是微调工作的地基。地基不稳,后面全是白搭。我个人习惯先把环境理清楚,再动手写代码。
2.1 Python环境配置
Python版本选择上,我建议直接用3.10。为什么?因为PyTorch 2.x系列对3.10支持最好,而且Hugging Face的库在3.10上跑得最稳。我曾经在3.8上踩过坑,有些新库直接不支持了。
虚拟环境是必须的。你想想看,不同项目依赖的包版本可能冲突,混在一起迟早出事。我一般用conda来管理:
# 创建虚拟环境
conda create -n legal_llm python=3.10
# 激活环境
conda activate legal_llm
# 验证Python版本
python --version
# 输出:Python 3.10.12
这里有个小技巧:环境名最好起得有意义。我习惯用项目名+用途,比如legal_llm,一看就知道是干嘛的。
避坑指南:我曾经在Windows上直接用系统Python,结果装包时权限报错,折腾了半天。后来学乖了,一律用虚拟环境,干净又省心。
2.2 PyTorch安装
PyTorch安装其实很简单,但要注意版本匹配。我建议直接去官网(pytorch.org)用命令生成器,选好你的系统、CUDA版本,复制命令就行。
举个例子,如果你有NVIDIA显卡,CUDA 11.8,可以这样装:
# 安装PyTorch(CUDA 11.8版本)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
如果没有GPU,或者想先用CPU调试,那就装CPU版本:
# CPU版本
pip install torch torchvision torchaudio
我个人习惯先装CPU版本做代码调试,等逻辑跑通了再切到GPU版本。这样能省不少时间,毕竟GPU资源有时候要排队。
注意:PyTorch版本和CUDA版本必须匹配。我曾经在CUDA 12.0上装了CUDA 11.8的PyTorch,结果训练时直接报错。嗯,血的教训。
2.3 CUDA与GPU环境验证
装完PyTorch,第一件事就是验证GPU能不能用。写几行代码测试一下:
import torch
# 检查CUDA是否可用
print(f"CUDA可用: {torch.cuda.is_available()}")
# 如果可用,查看GPU信息
if torch.cuda.is_available():
print(f"GPU数量: {torch.cuda.device_count()}")
print(f"当前GPU: {torch.cuda.get_device_name(0)}")
print(f"显存总量: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.2f} GB")
输出示例:
CUDA可用: True
GPU数量: 1
当前GPU: NVIDIA A100-SXM4-80GB
显存总量: 80.00 GB
如果输出False,别慌。先检查驱动:
# 查看CUDA驱动版本
nvidia-smi
我遇到过一种情况:nvidia-smi能正常显示,但PyTorch就是检测不到GPU。后来发现是PyTorch版本和驱动不匹配。说白了,驱动版本太新或太旧都不行。
经验之谈:我建议CUDA驱动版本保持在11.8到12.1之间,PyTorch选对应版本。这个区间兼容性最好,大部分法律大模型都能跑。
2.4 Hugging Face库安装
Hugging Face的生态是微调工作的核心。我一般装这几个库:
# 安装核心库
pip install transformers
pip install datasets
pip install accelerate
pip install peft
pip install bitsandbytes # 用于量化,省显存
每个库的用途:
| 库名 | 用途 | 我为什么推荐 |
|---|---|---|
| transformers | 加载预训练模型、分词器 | 法律大模型基本都是用它加载的 |
| datasets | 处理法律文本数据 | 支持各种格式,省去写数据加载代码 |
| accelerate | 分布式训练加速 | 多卡训练时特别好用 |
| peft | 参数高效微调(LoRA等) | 法律模型微调必备,省显存 |
| bitsandbytes | 4bit/8bit量化 | 显存不够时救命用的 |
装完后验证一下:
from transformers import AutoModel, AutoTokenizer
# 试试加载一个小模型(比如bert-base-chinese)
model_name = "bert-base-chinese"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
print(f"模型加载成功: {model_name}")
print(f"参数量: {model.num_parameters() / 1e6:.2f}M")
如果没报错,说明环境基本就绪了。
避坑指南:我第一次用Hugging Face时,直接加载了一个70B的大模型,结果显存爆了。后来学乖了,先用小模型测试环境,再切到目标模型。你想想看,环境都没验证好,直接上大模型,那不是给自己找麻烦吗?
2.5 环境验证全流程
最后,我习惯写一个完整的验证脚本,一键检查所有环境:
# check_env.py
import sys
import torch
import transformers
print(f"Python版本: {sys.version}")
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
print(f"Transformers版本: {transformers.__version__}")
if torch.cuda.is_available():
print(f"GPU型号: {torch.cuda.get_device_name(0)}")
print(f"显存: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.2f} GB")
else:
print("警告: 未检测到GPU,将使用CPU训练(速度会慢很多)")
运行命令:
python check_env.py
输出示例:
Python版本: 3.10.12
PyTorch版本: 2.1.0
CUDA可用: True
Transformers版本: 4.36.2
GPU型号: NVIDIA A100-SXM4-80GB
显存: 80.00 GB
看到这个输出,你就可以放心开始微调了。
总结一下:环境搭建说白了就是三步——装Python、装PyTorch、装Hugging Face库。每一步验证好再往下走,别急着跑大模型。我见过太多人一上来就加载70B模型,结果环境没配好,白白浪费半天时间。
个人习惯:我每次开始新项目,都会把环境搭建步骤写成脚本,一键执行。这样换机器时不用重新想,直接跑脚本就行。嗯,省下来的时间可以多喝杯咖啡。