跳转至

微调环境准备

工欲善其事,必先利其器。这一篇我们把从硬件到 Python 库的整套环境搭建好。

1. 硬件准备

GPU 选择

微调对 GPU 显存(VRAM) 要求高,对算力要求次之。常见显卡参考:

GPU 型号 显存 适合规模
RTX 3060 12GB QLoRA 7B 紧张
RTX 4070 / 4070 Ti 12-16GB QLoRA 7B
RTX 3090 / 4090 24GB QLoRA 13B、LoRA 7B
A6000 / 6000 Ada 48GB LoRA 13B、QLoRA 70B
A100 40GB 40GB 全量微调 7B
A100 / H100 80GB 80GB 全量微调 13B

如果没有本地显卡,可以使用云服务:

  • Google Colab:免费 T4(16GB),Pro 提供 A100
  • Kaggle:免费 P100(16GB)/ T4 x2
  • AutoDL / 智星云(国内):按小时租 4090、A100
  • RunPod / Vast.ai:海外按小时租 GPU

系统要求

  • 操作系统:Linux(Ubuntu 22.04 推荐)或 WSL2
  • CUDA:12.1+ (和 PyTorch 版本对应)
  • 内存:建议 32GB+
  • 硬盘:模型文件大,建议 500GB+ SSD

2. 检查 GPU 和驱动

# 查看 GPU 信息
nvidia-smi

# 查看 CUDA 版本
nvcc --version

输出示例:

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.86.10              Driver Version: 535.86.10    CUDA Version: 12.2     |
+-----------------------------------------+----------------------+----------------------+
|   0  NVIDIA GeForce RTX 4090            On  | ...              | 24564MiB             |
+-----------------------------------------+----------------------+----------------------+

3. 创建 Python 虚拟环境

强烈推荐使用 conda 管理环境,能避免 CUDA 版本冲突:

# 安装 Miniconda(如果没有)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 创建专用环境
conda create -n llm-finetune python=3.10 -y
conda activate llm-finetune

4. 安装 PyTorch

PyTorch 官网 选择对应的 CUDA 版本。CUDA 12.1 示例:

pip install torch==2.4.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

验证安装:

import torch

print(torch.__version__)            # 2.4.0+cu121
print(torch.cuda.is_available())    # True
print(torch.cuda.device_count())    # 1
print(torch.cuda.get_device_name(0))# NVIDIA GeForce RTX 4090

5. 安装核心微调库

pip install transformers==4.45.0 \
            datasets==3.0.0 \
            accelerate==0.34.0 \
            peft==0.13.0 \
            trl==0.11.0 \
            bitsandbytes==0.43.3 \
            sentencepiece \
            protobuf

各库的作用:

作用
transformers HuggingFace 核心库,加载模型和分词器
datasets 数据集加载与处理
accelerate 分布式训练、混合精度
peft LoRA 等参数高效微调方法
trl SFT、DPO、PPO 等对齐训练
bitsandbytes 4bit/8bit 量化(QLoRA 必备)
sentencepiece 一些模型(Llama、Qwen)的分词器依赖

6. 安装可选工具

Flash Attention 2(提速 + 省显存):

pip install flash-attn --no-build-isolation

需要 CUDA 11.6+ 和 Ampere 架构(30 系/A 系)以上的显卡。

训练监控(强烈推荐):

# Weights & Biases(在线)
pip install wandb
wandb login

# TensorBoard(本地)
pip install tensorboard

评估指标:

pip install evaluate rouge-score nltk

7. 验证完整环境

新建 check_env.py

import torch
import transformers
import peft
import trl
import datasets
import bitsandbytes as bnb

print(f"PyTorch:       {torch.__version__}")
print(f"CUDA:          {torch.version.cuda}")
print(f"GPU available: {torch.cuda.is_available()}")
print(f"GPU name:      {torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A'}")
print(f"GPU memory:    {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB")
print()
print(f"transformers:  {transformers.__version__}")
print(f"peft:          {peft.__version__}")
print(f"trl:           {trl.__version__}")
print(f"datasets:      {datasets.__version__}")
print(f"bitsandbytes:  {bnb.__version__}")

# 简单的 GPU 加载测试
x = torch.randn(1000, 1000).cuda()
y = x @ x
print(f"\nGPU 计算正常: {y.shape}, {y.device}")

运行:

python check_env.py

8. HuggingFace 配置

登录 HuggingFace

下载 Llama、Qwen 等模型需要登录:

huggingface-cli login

将 token 粘贴进去(在 huggingface.co/settings/tokens 创建)。

配置国内镜像(可选)

国内访问慢可以用 hf-mirror:

export HF_ENDPOINT=https://hf-mirror.com

或写入 ~/.bashrc 永久生效。

修改模型缓存目录

模型文件很大,默认存在 ~/.cache/huggingface/。如果系统盘空间小,建议改到大盘:

export HF_HOME=/data/huggingface_cache

9. 下载基座模型

下载一个小模型用于测试。这里用 Qwen2.5-0.5B:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/Qwen2.5-0.5B-Instruct"

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")

inputs = tokenizer("你好", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=50)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

如果能正常输出,说明环境完全 OK,可以开始微调之旅了。

10. 常见问题

问题 1:CUDA out of memory

降低 batch size,或使用梯度累积、QLoRA 等技术(后续章节详细介绍)。

问题 2:bitsandbytes 安装失败 / 找不到 GPU

# 重新安装匹配的版本
pip uninstall bitsandbytes
pip install bitsandbytes --upgrade
python -m bitsandbytes  # 检查

问题 3:模型下载慢/失败

设置 HF_ENDPOINT 国内镜像,或使用 modelscope 从魔搭社区下载:

pip install modelscope
from modelscope import snapshot_download
model_dir = snapshot_download("qwen/Qwen2.5-0.5B-Instruct")

问题 4:Flash Attention 编译失败

通常是 CUDA 版本不匹配。可以先跳过,对小规模训练影响不大。

总结

  • 微调对显存要求高,消费级显卡推荐 24GB 显存的 3090/4090
  • 推荐 conda 管理环境,避免 CUDA 冲突
  • 核心库:transformers + peft + trl + bitsandbytes
  • 国内用户配置 HF_ENDPOINT 镜像或使用 modelscope 下载模型
  • check_env.py 一次性验证整套环境

评论