环境搭建与工具链:工欲善其事,必先利其器
说实话,每次带新人入门大模型微调,我最怕看到的就是环境配置卡壳。明明代码逻辑都懂,结果在装包、配CUDA上折腾一整天——这种事我见过太多次了。我自己刚入行那会儿,也曾在CUDA版本不匹配的坑里爬了整整两天。
所以这一章,咱们就把这些基础工作一次性搞定。别嫌啰嗦,环境搭好了,后面才能跑得顺。
Python环境配置:选对版本,少走弯路
Python版本这事儿,我建议你直接上3.10或3.11。为什么?因为PyTorch 2.x和Hugging Face的最新特性,对这两个版本支持最好。3.8以下就别考虑了,很多新库已经放弃支持。
我个人习惯用conda来管理环境。你想想看,不同项目依赖的包版本可能打架,用虚拟环境隔离是最省心的。
# 创建虚拟环境,指定Python版本
conda create -n llm_finetune python=3.10
# 激活环境
conda activate llm_finetune
# 验证版本
python --version
llm_finetune_py310,这样一眼就能看出来是干嘛的。
PyTorch/TensorFlow安装:选对框架,看场景
大模型微调这块,PyTorch是绝对的主流。Hugging Face的Transformers库底层就是PyTorch,社区生态也最活跃。TensorFlow当然也能用,但说实话,现在做LLM微调的,十有八九都在用PyTorch。
安装PyTorch有个关键点——一定要去官网用自动生成的命令。为什么?因为你的CUDA版本、操作系统、包管理器都不一样,官网的配置器会自动匹配最合适的版本。
# PyTorch安装示例(CUDA 11.8版本)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 验证安装
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
pip install torch 结果装成了CPU版本,跑模型时才发现GPU根本没被调用。所以安装完一定要验证 torch.cuda.is_available() 是否为 True。
CUDA与cuDNN配置:GPU加速的关键
说白了,CUDA就是NVIDIA给GPU写的「翻译官」,让PyTorch能指挥GPU干活。cuDNN则是专门优化深度学习计算的加速库。
配置CUDA最忌讳什么?版本乱搭。PyTorch每个版本都有对应的CUDA版本要求。比如PyTorch 2.0对应CUDA 11.7或11.8,你装个CUDA 12.0反而可能出问题。
| PyTorch版本 | 推荐CUDA版本 | 对应cuDNN版本 |
|---|---|---|
| 2.0.x | 11.7 / 11.8 | 8.5 / 8.6 |
| 2.1.x | 11.8 / 12.1 | 8.7 / 8.9 |
| 2.2.x | 12.1 | 8.9 |
检查CUDA和cuDNN是否装好,可以用下面这些命令:
# 检查CUDA版本
nvcc --version
# 检查cuDNN版本(如果安装了)
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
LD_LIBRARY_PATH 指向了错误的CUDA路径。解决办法是用 conda install cudatoolkit 来管理,conda会自动帮你搞定路径问题。
Hugging Face Transformers库安装:微调的核心工具
这个库可以说是大模型微调的「瑞士军刀」。加载模型、分词、训练、推理,一条龙全包了。安装很简单,但有几个依赖包建议一起装上:
# 安装Transformers及其生态工具
pip install transformers datasets accelerate peft
# 验证安装
python -c "from transformers import AutoModel; print('Transformers installed successfully')"
这里重点说说 accelerate 和 peft:
- accelerate:帮你自动处理多GPU、混合精度训练,省去手动写分布式代码的麻烦。
- peft:参数高效微调的核心库,LoRA、Prefix Tuning这些技术都靠它实现。
pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple。我第一次装的时候没加镜像,等了快半小时...
Weights & Biases实验管理:让训练过程可视化
训练大模型时,loss曲线、学习率变化、GPU利用率这些指标,光看终端输出太痛苦了。W&B就是干这个的——把实验数据自动上传到云端,生成漂亮的图表,还能对比不同实验的效果。
# 安装W&B
pip install wandb
# 登录(首次需要注册账号)
wandb login
在训练代码中集成W&B也很简单:
import wandb
# 初始化一次实验
wandb.init(
project="llm-finetune-demo",
config={
"learning_rate": 2e-5,
"batch_size": 8,
"epochs": 3
}
)
# 在每个训练step记录loss
wandb.log({"loss": loss_value, "lr": current_lr})
总结:环境搭建的黄金法则
嗯,到这里环境就搭好了。最后给你三个建议:
- 版本锁定:把安装的所有包版本记录到
requirements.txt里,方便复现。 - 先跑通再优化:别一上来就搞分布式、混合精度,先用小模型跑通流程再说。
- 善用容器:如果条件允许,用Docker打包环境。我团队现在所有项目都走Docker,再也没出现过「在我机器上能跑」的尴尬。
下一章咱们就开始实战——加载一个预训练模型,看看它到底能干啥。