第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模型,结果环境没配好,白白浪费半天时间。

法律大模型微调环境搭建流程 Python环境配置 Python 3.10 + conda PyTorch安装 GPU/CPU版本选择 CUDA/GPU验证 nvidia-smi + torch HF库 安装 一键验证脚本 check_env.py ✅ 环境就绪,开始微调 ❌ 检查驱动/版本匹配 核心库:transformers + datasets + accelerate + peft + bitsandbytes

个人习惯:我每次开始新项目,都会把环境搭建步骤写成脚本,一键执行。这样换机器时不用重新想,直接跑脚本就行。嗯,省下来的时间可以多喝杯咖啡。

专注资料整理