huggingface.transformers哲学
简介:
本部分介绍transformers包的开发哲学。由于我学艺不精,对本部分一些介绍并不理解其涵义,因此在此处只能仅作翻译,对其诠释不足。等以后学会了再来写。
- transformers对每个预训练模型,只需使用3个标准类:confirguation, models 和 tokenizer
- 3个类都可以用通用的from_pretrained()函数来用预训练模型进行初始化,该函数会自动下载(如果需要)、缓存、加载相关类实例和数据(如configuration的超参、tokenizer的vocabulary、模型权重等)。这个预训练模型(checkpoint)可以用来自Hugging Face Hub的,也可以是用户自定义的。
- 在上述3个类的基础上,transformers包还提供了2个API:pipeline(),在特定任务上迅速使用特定模型;Trainer /Keras.fit 来迅速训练或微调一个给定模型。
- 本包不是构建神经网络的模块化工具箱。如果要在本包基础上做开发,需要用其他Python/PyTorch/TensorFlow/Keras模块,继承本包的3个基础类,以复用模型加载、储存等功能。
- transformers包为每个预训练模型架构提供至少一个可复现原文结果的示例。
- transformers包也提供了模型内部信息,可获取全部hidden-states、attention weights等信息。
- 在微调时可以简单、快速地往vocabulary和embeddings里加新tokens。
- 很容易mask and prune transformer heads。
- 3个基本类
- Model classes:如BertModel,本包提供30多个预训练模型架构的模型类,为PyTorch models (torch.nn.Module) or Keras models (tf.keras.Model)实例。
- Configuration classes:如BertConfiguration,如果不经任何调整直接使用某一预训练模型,创造model时就会自动实例化configuration。
- Tokenizer classes:如BertTokenizer,储存每个模型的vocabulary,提供编码/解码字符串的方法,在字符串与传入模型的token embeddings indices之间进行转换。
- 三个基本类通用,从预训练实例初始化参数和将参数储存在本地的函数:
- from_pretrained()
- save_pretrained()