requirements.txt 说明文档

requirements.txt 不是 notebook,也不是 Python 脚本。
它是一份依赖清单

你可以把它理解成:

对初学者来说,它的意义不是“背包名”,而是理解:


一、文件原文

torch
transformers
datasets
peft
accelerate
trl
jupyterlab
sentencepiece
scipy
scikit-learn
tensorboard
bitsandbytes

这份文件看起来很短,但它其实概括了这套最小 LoRA 实验依赖的整个工具栈。


二、这一行一行到底是什么意思

requirements.txt 里:

也就是说,这个文件本质上是在说:


三、逐行解释每个包

1. torch

这是 PyTorch

它是整个实验最底层、最核心的深度学习框架。

如果没有 torch,后面的很多东西都没法工作,因为:

在这套实验里,你已经见过它的使用,例如:

可以把它理解成:


2. transformers

这是 Hugging Face 的 Transformers 包。

它负责:

你在 notebook 里已经见过很多它的接口:

如果说 torch 是底层发动机,那么 transformers 更像:


3. datasets

这是 Hugging Face 的 Datasets 包。

它负责:

在这套实验里,你已经见过:

可以把它理解成:


4. peft

这是 PEFT 包,全称是:

它负责:

在这套实验里,最关键的两样就是:

还有推理时的:

如果这门课第 11 章最核心的主题是“LoRA 微调”,那 peft 就是最核心的课程工具之一。


5. accelerate

这是 Hugging Face 的 Accelerate 包。

它的主要作用是:

即使在最小实验里你没有显式写很多 accelerate 代码,它也常常是 Trainer 和 Hugging Face 训练栈背后的依赖。

所以你可以把它理解成:

初学阶段不用把它想得太复杂,只要知道:


6. trl

这是 Hugging Face 的 TRL 包。

全称通常和:

相关。

在这套 tiny-gpt2 最小 LoRA 实验里,trl 并不是主角。
因为这里主要用的是:

但课程后面的更进阶实验,尤其是:

会和 trl 更相关。

所以它出现在依赖里,更多是为了:

你可以把它理解成:


7. jupyterlab

这个包负责:

如果没有它,你很难像现在这样直接在浏览器里运行:

所以它不是模型工具,而是:


8. sentencepiece

这是一个 tokenizer 相关工具包。

很多模型的 tokenizer 底层依赖它,尤其是:

在当前 tiny-gpt2 这个最小实验里,它未必每次都会被直接调用。
但课程后面如果切换到别的模型,它非常可能变成必要依赖。

你可以把它理解成:


9. scipy

这是科学计算基础包。

它不是大模型专用包,但很多机器学习和训练相关工具会间接依赖它。

它通常负责:

对初学者来说,只需要知道:


10. scikit-learn

也就是常说的:

它是经典机器学习工具库。

在当前这套最小 LoRA 实验里,它不是主角,但在真实工程里常常会被用来做:

所以它更像一个:


11. tensorboard

这是训练日志可视化工具。

它的作用是:

在最小实验里你还没有真正用它打开图形界面,但很多正式训练都会配合它一起使用。

你可以把它理解成:


12. bitsandbytes

这是和量化、低比特训练很相关的包。

它通常用于:

在当前 tiny-gpt2 最小实验里,它并不是必须被用上。
因为这套实验故意选了一个非常小的模型。

但在课程第 11 章真正走向大模型时,它会变得非常重要,因为:

所以它代表的是:


四、哪些包是这套最小实验的核心,哪些是扩展

如果你只看当前 course_lora-tinygpt2 这套最小实验,那么最核心的是:

核心必需

课程扩展或后续更常用

所以如果你看到某些包“这次实验里似乎没怎么直接用到”,不用紧张。
这很正常,因为课程依赖文件常常会:


五、为什么不把版本号也写进去

你可能会注意到,这份 requirements.txt 里没有写:

torch==2.3.1
transformers==4.46.0

这种固定版本号。

这意味着:

这样做的优点是:

缺点是:

对于课程最小实验来说,这样做通常是可以接受的。
但如果以后要做更严格的复现实验,可能就需要锁版本。


六、这一份文件最想让初学者理解什么

  1. 大模型实验不是只装一个 torch 就够了
  2. 模型、数据、LoRA、训练器、界面、量化,各有各的工具包
  3. requirements.txt 的作用不是“炫包名”,而是把实验所需环境一次性交代清楚
  4. 有些包是当前最小实验直接要用的,有些包是为后续课程升级做准备的

七、你真正需要记住的最少版本

如果你只想抓住当前最小实验最重要的几个包,可以先记住这 4 个:

因为这 4 个基本就对应了这套实验的 4 个核心层次:

把这条主线抓住,后面再看其他包就不会乱。