实验室

环境 · 训练 · 压测

老师的节奏是实验驱动的。先把这三站走通,六课公式才有落点。你现在的卡:A100-40G,用 Qwen3-1.7B / 4B。

先选你的卡,再装环境

课程推荐 AutoDL A100-40G。T4 和 4090 能跟上,但要换更小的模型。

第一次 SFT 约 45 分钟。学期大约 100 元。

Archify · architecture

后训练实验栈

你只通过 Jupyter 碰那张 A100,训练发生在 GPU 上。

AutoDL 实例 · PyTorch 2.3 + CUDA 12.1开实例打开挂 GPUtrainer.train()只训适配器4-bit 权重加载 Qwen3读指令数据你浏览器里上课AutoDL租 GPU 实例JupyterLab写 notebookA100-40GCUDA 计算TRLSFT / DPO / GRPOPEFTLoRA 适配器bitsandbytesNF4 4-bitHF_HOME模型缓存数据集盘alpaca / GSM8K
  • 你 → 开实例
  • AutoDL → 打开
  • AutoDL → 挂 GPU
  • JupyterLab → trainer.train()
  • TRL → 只训适配器
  • A100-40G → 4-bit 权重
  • TRL → 加载 Qwen3
  • TRL → 读指令数据

标准配置

  • AutoDL A100-40G,镜像 PyTorch 2.3.0 + Python 3.10 + CUDA 12.1
  • 学期费用大约 100 元;训完立刻关机

三个库各管一段

  • TRL:SFTTrainer / DPOTrainer / GRPOTrainer
  • PEFT:冻结原权重,只训 LoRA
  • bitsandbytes:NF4 把 1.7B 塞进消费级显存

磁盘纪律

  • HF_HOME 指到 /root/autodl-fs/huggingface
  • 必需模型大约 26GB,全部下载大约 48GB
  1. 01

    租卡,不要买卡

    课程推荐 AutoDL A100-40G(约 3.45 元/时)。镜像选 PyTorch 2.3.0 + Python 3.10 + CUDA 12.1。系统盘 30GB 即可,数据盘至少 50GB。

  2. 02

    一次性装依赖

    Qwen3 硬性要求 transformers ≥ 4.51.0。TRL 负责 SFT/DPO/GRPO,PEFT 负责 LoRA,bitsandbytes 负责 4-bit。

  3. 03

    模型放到数据盘

    HF_HOME 指到 /root/autodl-fs/huggingface。第 1–4 课必需 Qwen3-1.7B 和 1.7B-Base,大约 7GB。

  4. 04

    跑验证脚本再关机测试

    七项全过才算绿灯:PyTorch+CUDA、transformers、TRL、PEFT、bitsandbytes、datasets、GPU 名字。训完立刻关机。

一次性安装

pip install "transformers>=4.51.0" \
    trl peft accelerate bitsandbytes \
    datasets tokenizers \
    rouge-score nltk scikit-learn \
    matplotlib seaborn gradio \
    pandas numpy tqdm

# 第 4、5 课再装
pip install vllm
pip install llamafactory

模型预下载(放数据盘)

export HF_HOME=/root/autodl-fs/huggingface
mkdir -p $HF_HOME
pip install huggingface_hub[cli]

huggingface-cli download Qwen/Qwen3-1.7B --local-dir $HF_HOME/Qwen3-1.7B
huggingface-cli download Qwen/Qwen3-1.7B-Base --local-dir $HF_HOME/Qwen3-1.7B-Base

绿灯检查

import torch, transformers, trl, peft, bitsandbytes
assert torch.cuda.is_available(), "没有 GPU"
assert transformers.__version__ >= "4.51.0"
print("GPU:", torch.cuda.get_device_name(0))
print("显存 GB:", round(torch.cuda.get_device_properties(0).total_memory / 1e9, 1))
print("transformers", transformers.__version__, "trl", trl.__version__)