仓库结构
前言¶
transformers
已然成为自然语言处理领域不可或缺的一部分,因为它是一个简洁、标准、高效且强大的工具。
俗话说“工欲善其事,必先利其器”,为了手拿把掐 transformers
,理解其仓库结构及相关代码至关重要。
本文将介绍transformers
⧉仓库的重要部分。
总体¶
在根目录可以看到
- 重点就在于
src
目录下的transformers
下的代码,开发者在使用transformers
的时候就是在这里调用函数。 - 在transformers目录下,重要的部分就是
generation
、intergration
、kernels
、models
、pipelines
这些目录。generation
:存储用于文本生成的各种算法,例如beam search
、greedy search
等算法。intergration
:包含与其他库和框架的集成代码,例如内置一部分PEFT
算法、deepspeed
加速组件。kernels
:存储自定义实现的CUDA
算子。models
:存储着各种预训练模型的实现,是这个仓库的灵魂所在。pipelines
:存储着高阶接口,这些接口允许开发者方便地使用预训练模型完成各种任务。
- 对于某模型,其相关配置,处理器和模型实现都会被存放到同一文件夹下。同时不同模型文件夹又会统一放在
models
文件夹下。 - 在某一 NLP 领域模型文件夹下,通常会包括配置文件,模型实现,分词器,其余文件因模型而异。
- 计算机视觉的模型可能还会存在预处理器文件。
- 部分模型存在不同框架权重文件转化器。
- 可能有的模型用的是别的模型的分词器,自然也就不会在模型文件夹下存在分词器文件。
- 文件名称中存在
tf
、flax
等不同框架缩写的,表示该文件是在对应深度学习框架下实现的。 - \(\cdots\)
configuration_xxx.py
通常代表预训练模型的配置参数。model_xxx.py
通常代表预训练模型的实现。tokenization_xxx.py
通常代表与模型配套的分词器。