requirements.txt 说明文档requirements.txt 不是 notebook,也不是 Python 脚本。
它是一份依赖清单。
你可以把它理解成:
对初学者来说,它的意义不是“背包名”,而是理解:
torch 就能完成torch
transformers
datasets
peft
accelerate
trl
jupyterlab
sentencepiece
scipy
scikit-learn
tensorboard
bitsandbytes这份文件看起来很短,但它其实概括了这套最小 LoRA 实验依赖的整个工具栈。
在 requirements.txt 里:
pip install -r requirements.txt 时,pip 会按这份清单逐个安装也就是说,这个文件本质上是在说:
torch这是 PyTorch。
它是整个实验最底层、最核心的深度学习框架。
如果没有 torch,后面的很多东西都没法工作,因为:
torchtorch.cuda在这套实验里,你已经见过它的使用,例如:
torch.cuda.is_available()torch.no_grad().cuda()可以把它理解成:
transformers这是 Hugging Face 的 Transformers 包。
它负责:
TrainerTrainingArgumentsgenerate()你在 notebook 里已经见过很多它的接口:
AutoTokenizerAutoModelForCausalLMTrainerTrainingArguments如果说 torch 是底层发动机,那么 transformers 更像:
datasets这是 Hugging Face 的 Datasets 包。
它负责:
.map() 这类批处理操作在这套实验里,你已经见过:
Dataset.from_list(...)train_ds.map(...)可以把它理解成:
peft这是 PEFT 包,全称是:
它负责:
在这套实验里,最关键的两样就是:
LoraConfigget_peft_model还有推理时的:
PeftModel.from_pretrained(...)如果这门课第 11 章最核心的主题是“LoRA 微调”,那 peft 就是最核心的课程工具之一。
accelerate这是 Hugging Face 的 Accelerate 包。
它的主要作用是:
即使在最小实验里你没有显式写很多 accelerate 代码,它也常常是 Trainer 和 Hugging Face 训练栈背后的依赖。
所以你可以把它理解成:
初学阶段不用把它想得太复杂,只要知道:
trl这是 Hugging Face 的 TRL 包。
全称通常和:
相关。
在这套 tiny-gpt2 最小 LoRA 实验里,trl 并不是主角。
因为这里主要用的是:
Trainerpeft但课程后面的更进阶实验,尤其是:
SFTTrainer会和 trl 更相关。
所以它出现在依赖里,更多是为了:
你可以把它理解成:
jupyterlab这个包负责:
.ipynb notebook如果没有它,你很难像现在这样直接在浏览器里运行:
00_check_env.ipynb01_lora_demo.ipynb02_eval_and_infer.ipynb所以它不是模型工具,而是:
sentencepiece这是一个 tokenizer 相关工具包。
很多模型的 tokenizer 底层依赖它,尤其是:
在当前 tiny-gpt2 这个最小实验里,它未必每次都会被直接调用。
但课程后面如果切换到别的模型,它非常可能变成必要依赖。
你可以把它理解成:
scipy这是科学计算基础包。
它不是大模型专用包,但很多机器学习和训练相关工具会间接依赖它。
它通常负责:
对初学者来说,只需要知道:
scikit-learn也就是常说的:
sklearn它是经典机器学习工具库。
在当前这套最小 LoRA 实验里,它不是主角,但在真实工程里常常会被用来做:
所以它更像一个:
tensorboard这是训练日志可视化工具。
它的作用是:
在最小实验里你还没有真正用它打开图形界面,但很多正式训练都会配合它一起使用。
你可以把它理解成:
bitsandbytes这是和量化、低比特训练很相关的包。
它通常用于:
在当前 tiny-gpt2 最小实验里,它并不是必须被用上。
因为这套实验故意选了一个非常小的模型。
但在课程第 11 章真正走向大模型时,它会变得非常重要,因为:
所以它代表的是:
如果你只看当前 course_lora-tinygpt2 这套最小实验,那么最核心的是:
torchtransformersdatasetspeftacceleratejupyterlabtrlsentencepiecescipyscikit-learntensorboardbitsandbytes所以如果你看到某些包“这次实验里似乎没怎么直接用到”,不用紧张。
这很正常,因为课程依赖文件常常会:
你可能会注意到,这份 requirements.txt 里没有写:
torch==2.3.1
transformers==4.46.0这种固定版本号。
这意味着:
这样做的优点是:
缺点是:
对于课程最小实验来说,这样做通常是可以接受的。
但如果以后要做更严格的复现实验,可能就需要锁版本。
torch 就够了requirements.txt 的作用不是“炫包名”,而是把实验所需环境一次性交代清楚如果你只想抓住当前最小实验最重要的几个包,可以先记住这 4 个:
torchtransformersdatasetspeft因为这 4 个基本就对应了这套实验的 4 个核心层次:
把这条主线抓住,后面再看其他包就不会乱。