环境配置指南
AutoDL 环境搭建、Colab Pro 替代方案、依赖安装、模型预下载、一键启动脚本与验证步骤
推荐配置方案
本课程所有实验都基于参数高效微调(LoRA/QLoRA),对 GPU 资源要求相对友好。以下是推荐的计算资源方案:
| 方案 | GPU | 显存 | 适用课次 | 月费用预估 |
|---|---|---|---|---|
| AutoDL 标准配置(推荐) | A100-40G | 40 GB | 全部 | ~113 元/学期 |
| AutoDL 进阶配置 | A100-80G | 80 GB | 第4课 GRPO | ~27 元/第4课 |
| Colab Pro | T4 / A100 | 16-40 GB | 第1-3、5课 | ~75 元/月 |
| 本地 GPU | RTX 4090 | 24 GB | 降级版实验 | 自有设备 |
标准推荐:大部分同学使用 AutoDL A100-40G 即可完成全部实验。仅第4课的 GRPO 实验建议使用 A100-80G(或将模型降级为 Qwen3-0.6B 在 40G 上运行)。
方案一:AutoDL 环境搭建(推荐)
注册与创建实例
注册 AutoDL 账号
访问 https://www.autodl.com,注册并充值(首次建议充值 50 元)。
选择 GPU 机器
- 进入"容器实例" → "创建新实例"
- GPU 选择:NVIDIA A100-40G(约 3.45 元/小时)或 A100-80G(约 6.80 元/小时)
- 地区选择:选择可用机器较多的区域
选择镜像
- 基础镜像:
PyTorch 2.3.0+Python 3.10+CUDA 12.1 - 如果教师提供了自定义镜像,选择"自定义镜像"并输入镜像 ID
数据盘配置
- 系统盘:30 GB(默认足够)
- 数据盘:建议 50 GB 以上(存放模型和数据集)
- 如果使用共享数据盘,确认已挂载到
/root/autodl-fs/
启动实例
创建后等待实例启动(约 1-3 分钟),通过 JupyterLab 或 SSH 连接。
安装依赖
# ============================================
# 课程核心依赖(一次性安装)
# ============================================
# 重要:Qwen3 要求 transformers >= 4.51.0
pip install "transformers>=4.51.0" \
trl \
peft \
accelerate \
bitsandbytes \
datasets \
tokenizers
# 推理加速(第4、5课需要)
pip install vllm
# 多模态微调(第5课选做)
pip install llamafactory
# 评估工具
pip install rouge-score nltk scikit-learn
# 可视化与实用工具
pip install matplotlib seaborn wandb gradio
# 数据处理
pip install pandas numpy tqdm版本注意事项:
transformers >= 4.51.0是硬性要求——Qwen3 的模型架构在旧版本中不可用trl >= 0.15.0推荐使用最新版(包含 GRPO 训练器的改进)bitsandbytes >= 0.43.0以支持最新的量化特性- 如果遇到 CUDA 版本不兼容,尝试
pip install bitsandbytes --prefer-binary
模型预下载
为避免实验时因网络问题导致模型下载失败,建议提前下载所有需要的模型。
# ============================================
# 模型预下载脚本
# ============================================
# 设置模型缓存目录(建议放在数据盘)
export HF_HOME=/root/autodl-fs/huggingface
mkdir -p $HF_HOME
# 安装 huggingface_hub CLI
pip install huggingface_hub[cli]
# --- 主力模型(第1-4课必需)---
# Qwen3-1.7B(Instruct 版)
huggingface-cli download Qwen/Qwen3-1.7B --local-dir $HF_HOME/Qwen3-1.7B
# Qwen3-1.7B-Base(基座版,第4课 GRPO 需要)
huggingface-cli download Qwen/Qwen3-1.7B-Base --local-dir $HF_HOME/Qwen3-1.7B-Base
# --- 低配备选(T4 / RTX 4090 用户)---
# Qwen3-0.6B
huggingface-cli download Qwen/Qwen3-0.6B --local-dir $HF_HOME/Qwen3-0.6B
# Qwen3-0.6B-Base
huggingface-cli download Qwen/Qwen3-0.6B-Base --local-dir $HF_HOME/Qwen3-0.6B-Base
# --- 第5课量化实验 ---
# Qwen3-8B
huggingface-cli download Qwen/Qwen3-8B --local-dir $HF_HOME/Qwen3-8B
# --- 第5课多模态选做 ---
# Qwen3-VL-2B-Instruct
huggingface-cli download Qwen/Qwen3-VL-2B-Instruct --local-dir $HF_HOME/Qwen3-VL-2B-Instruct
# --- 第4-5课蒸馏对比 ---
# DeepSeek-R1-Distill-Qwen-1.5B(注意:基于 Qwen2.5,非 Qwen3)
huggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \
--local-dir $HF_HOME/DeepSeek-R1-Distill-Qwen-1.5B模型存储空间需求:
| 模型 | 大小 | 课次 | 必需性 |
|---|---|---|---|
| Qwen3-0.6B / 0.6B-Base | ~1.2 GB x2 | 低配备选 | 可选 |
| Qwen3-1.7B / 1.7B-Base | ~3.4 GB x2 | 第1-4课 | 必需 |
| Qwen3-8B | ~16 GB | 第5课 | 必需 |
| Qwen3-VL-2B-Instruct | ~4 GB | 第5课选做 | 可选 |
| DeepSeek-R1-Distill-Qwen-1.5B | ~3 GB | 第4-5课 | 推荐 |
| 合计(全部下载) | ~48 GB | — | — |
| 合计(仅必需) | ~26 GB | — | — |
数据集预下载
# ============================================
# 数据集预下载
# ============================================
export DATA_DIR=/root/autodl-fs/datasets
# 第1课 - UltraChat
python -c "
from datasets import load_dataset
ds = load_dataset('HuggingFaceH4/ultrachat_200k', split='train_sft[:10000]')
ds.save_to_disk('$DATA_DIR/ultrachat_10k')
print(f'UltraChat 子集: {len(ds)} 条')
"
# 第3课 - UltraFeedback
python -c "
from datasets import load_dataset
ds = load_dataset('HuggingFaceH4/ultrafeedback_binarized', split='train_prefs[:5000]')
ds.save_to_disk('$DATA_DIR/ultrafeedback_5k')
print(f'UltraFeedback 子集: {len(ds)} 条')
"
# 第4课 - GSM8K
python -c "
from datasets import load_dataset
ds = load_dataset('openai/gsm8k', 'main')
ds.save_to_disk('$DATA_DIR/gsm8k')
print(f'GSM8K 训练集: {len(ds[\"train\"])} 条, 测试集: {len(ds[\"test\"])} 条')
"方案二:Google Colab Pro
如果无法使用 AutoDL,Google Colab Pro(约 75 元/月)是可行的替代方案。
订阅 Colab Pro
访问 https://colab.research.google.com,点击"升级到 Pro"。
设置运行时
- 运行时 → 更改运行时类型 → GPU → T4 或 A100(Pro 可用)
- 高 RAM 选项:开启(推荐)
安装依赖
在 Colab notebook 的第一个 cell 中运行:
!pip install "transformers>=4.51.0" trl peft accelerate bitsandbytes datasets -q挂载 Google Drive
将模型存放在 Google Drive 中避免重复下载:
from google.colab import drive
drive.mount('/content/drive')
import os
os.environ['HF_HOME'] = '/content/drive/MyDrive/huggingface'Colab 的局限性:
- T4 仅 16GB 显存,第4课 GRPO 实验需使用 Qwen3-0.6B
- 会话有时间限制(Pro 约 12 小时),长训练可能被中断
- 网络连接有时不稳定,影响模型下载
- 第5课的 8B 模型 FP16 加载无法在 T4 上完成
一键环境配置脚本
以下脚本可在 AutoDL 实例上一键完成环境配置:
#!/bin/bash
# setup.sh - 一键环境配置脚本
# 使用方法: bash setup.sh
set -e
echo "============================================"
echo " LLM 后训练课程环境配置"
echo "============================================"
# 1. 检测 GPU
echo ""
echo "[1/5] 检测 GPU..."
if command -v nvidia-smi &> /dev/null; then
GPU_NAME=$(nvidia-smi --query-gpu=name --format=csv,noheader | head -1)
GPU_MEM=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader | head -1)
echo " GPU: $GPU_NAME ($GPU_MEM)"
else
echo " 警告: 未检测到 GPU!"
echo " 部分实验将无法运行。"
fi
# 2. 安装 Python 依赖
echo ""
echo "[2/5] 安装 Python 依赖..."
pip install -q "transformers>=4.51.0" \
trl peft accelerate bitsandbytes \
datasets tokenizers \
rouge-score nltk scikit-learn \
matplotlib seaborn gradio \
pandas numpy tqdm
# 3. 验证关键库版本
echo ""
echo "[3/5] 验证库版本..."
python -c "
import transformers, trl, peft, bitsandbytes, torch
print(f' transformers: {transformers.__version__}')
print(f' trl: {trl.__version__}')
print(f' peft: {peft.__version__}')
print(f' bitsandbytes: {bitsandbytes.__version__}')
print(f' torch: {torch.__version__}')
print(f' CUDA available: {torch.cuda.is_available()}')
if torch.cuda.is_available():
print(f' GPU: {torch.cuda.get_device_name(0)}')
print(f' 显存: {torch.cuda.get_device_properties(0).total_mem / 1024**3:.1f} GB')
# 检查 transformers 版本
from packaging import version
assert version.parse(transformers.__version__) >= version.parse('4.51.0'), \
f'transformers 版本过低: {transformers.__version__}, 需要 >= 4.51.0'
print(' transformers 版本检查: 通过')
"
# 4. 设置模型缓存目录
echo ""
echo "[4/5] 配置模型缓存目录..."
if [ -d "/root/autodl-fs" ]; then
export HF_HOME=/root/autodl-fs/huggingface
echo "export HF_HOME=/root/autodl-fs/huggingface" >> ~/.bashrc
echo " 模型缓存: $HF_HOME (数据盘)"
else
export HF_HOME=~/.cache/huggingface
echo " 模型缓存: $HF_HOME (默认)"
fi
mkdir -p $HF_HOME
# 5. 快速验证:加载 tokenizer
echo ""
echo "[5/5] 快速验证..."
python -c "
try:
from transformers import AutoTokenizer
# 尝试加载 tokenizer(如果模型已下载)
import os
hf_home = os.environ.get('HF_HOME', '~/.cache/huggingface')
local_path = os.path.join(hf_home, 'Qwen3-1.7B')
if os.path.exists(local_path):
tok = AutoTokenizer.from_pretrained(local_path)
print(' Qwen3-1.7B tokenizer 加载: 成功')
else:
print(' Qwen3-1.7B 模型尚未下载(请运行模型下载脚本)')
print(' 环境验证: 通过')
except Exception as e:
print(f' 验证失败: {e}')
"
echo ""
echo "============================================"
echo " 环境配置完成!"
echo "============================================"
echo ""
echo "下一步:"
echo " 1. 运行模型下载脚本(如果尚未下载)"
echo " 2. 在 JupyterLab 中打开课程 notebook"
echo " 3. 实验结束后记得关机!"环境验证清单
配置完成后,运行以下 Python 脚本验证环境:
# verify_env.py - 环境验证脚本
import sys
def check(name, test_fn):
try:
result = test_fn()
print(f" [PASS] {name}: {result}")
return True
except Exception as e:
print(f" [FAIL] {name}: {e}")
return False
print("=" * 50)
print("环境验证")
print("=" * 50)
passed = 0
total = 0
# 1. PyTorch + CUDA
total += 1
if check("PyTorch + CUDA", lambda: (
__import__('torch'),
f"torch {__import__('torch').__version__}, "
f"CUDA {'可用' if __import__('torch').cuda.is_available() else '不可用'}"
)[-1]):
passed += 1
# 2. transformers 版本
total += 1
if check("transformers >= 4.51.0", lambda: (
__import__('transformers'),
f"v{__import__('transformers').__version__}"
)[-1]):
passed += 1
# 3. TRL
total += 1
if check("TRL", lambda: f"v{__import__('trl').__version__}"):
passed += 1
# 4. PEFT
total += 1
if check("PEFT", lambda: f"v{__import__('peft').__version__}"):
passed += 1
# 5. bitsandbytes
total += 1
if check("bitsandbytes", lambda: f"v{__import__('bitsandbytes').__version__}"):
passed += 1
# 6. datasets
total += 1
if check("datasets", lambda: f"v{__import__('datasets').__version__}"):
passed += 1
# 7. GPU 信息
total += 1
import torch
if torch.cuda.is_available():
if check("GPU", lambda: (
f"{torch.cuda.get_device_name(0)}, "
f"{torch.cuda.get_device_properties(0).total_mem / 1024**3:.1f} GB"
)):
passed += 1
else:
print(" [WARN] GPU: 不可用(CPU 模式)")
print(f"\n结果: {passed}/{total} 项通过")
if passed == total:
print("环境配置完成,可以开始实验!")
else:
print("请修复失败项后重试。")常见问题
Q: transformers 安装了但版本低于 4.51.0?
A: 运行 pip install "transformers>=4.51.0" --upgrade 强制升级。如果仍有问题,尝试 pip install transformers --force-reinstall。
Q: bitsandbytes 安装失败?
A: 这通常是 CUDA 版本不匹配。尝试:
pip install bitsandbytes --prefer-binary
# 或指定版本
pip install bitsandbytes==0.43.0Q: 模型下载速度很慢?
A: 使用 Hugging Face 镜像源加速:
export HF_ENDPOINT=https://hf-mirror.com
# 然后再运行下载命令Q: AutoDL 实例关机后数据丢失?
A: AutoDL 关机后系统盘数据保留,但建议将模型和重要文件存放在数据盘(/root/autodl-fs/)。数据盘关机不计费且数据永久保留。