speechbrain.lobes.models.huggingface_transformers.huggingface 模块

这个模块是用于huggingface transformers模型的接口 它允许通过AutoConfig和AutoModel加载配置和模型。

需要安装来自HuggingFace的Transformer: https://huggingface.co/transformers/installation.html

Authors
  • Titouan Parcollet 2021, 2022, 2023

  • Mirco Ravanelli 2021

  • Boumadane Abdelmoumene 2021

  • 周菊杰 2021

  • 阿尔乔姆·普洛日尼科夫 2021, 2022

  • 阿卜杜勒·赫巴 2021

  • 阿库·柔赫 2022

  • 阿尔谢尼·戈林 2022

  • 阿里·萨法亚 2022

  • Benoit Wang 2022

  • 阿德尔·穆门 2022, 2023

  • 安德烈亚斯·诺茨 2022, 2023

  • 卢卡·德拉·利贝拉 2022

  • 海托尔·吉马良斯 2022

  • Ha Nguyen 2023

摘要

类:

HFTransformersInterface

该模块提供了一个接口,用于在SpeechBrain中集成任何HuggingFace的transformer模型。

函数:

make_padding_masks

此方法生成填充掩码。

参考

class speechbrain.lobes.models.huggingface_transformers.huggingface.HFTransformersInterface(source, save_path='', for_pretraining=False, with_lm_head=False, with_casual_lm=False, seq2seqlm=False, quantization_config=None, freeze=False, cache_dir='pretrained_models', device=None, **kwargs)[source]

基础:Module

该模块提供了一个接口,用于在SpeechBrain中集成任何HuggingFace变压器模型。

我们使用AutoClasses从中心加载任何模型及其必要的组件。 例如,我们构建了Wav2Vec2类,它继承了HFTransformersInterface,用于处理HuggingFace的wav2vec模型。 虽然Wav2Vec2可以享受一些已经构建的功能,如模型加载、预训练权重加载、所有权重冻结、 feature_extractor加载等。 用户需要重写关键的forward()函数以适应他们的特定需求。 根据所讨论的HuggingFace transformer模型,还可以通过重写_modify_state_dict()方法来修改state_dict, 或通过修改override_config()方法来调整他们的配置等。 参见: https://huggingface.co/docs/transformers/model_doc/auto https://huggingface.co/docs/transformers/autoclass_tutorial

Parameters:
  • source (str) – HuggingFace 中心名称:例如 “facebook/wav2vec2-large-lv60”

  • save_path (str) – 下载模型的保存目录。

  • for_pretraining (bool (默认值: False)) – 如果为True,则构建用于预训练的模型

  • with_lm_head (bool (默认值: False)) – 如果为True,则使用lm_head构建模型

  • with_casual_lm (bool (默认值: False)) – 如果为True,构建因果语言模型

  • seq2seqlm (bool (默认值: False)) – 如果为True,则构建一个带有lm_head的序列到序列模型

  • quantization_config (dict (默认值: None)) – 量化配置,对于处理LLM非常有用

  • freeze (bool (默认值: True)) – 如果为True,模型将被冻结。如果为False,模型将与管道的其余部分一起训练。

  • cache_dir (strPath (默认值: None)) – HuggingFace缓存的位置,用于存储预训练模型,并创建符号链接。

  • device (any, optional) – 将模型迁移到的设备。

  • **kwargs – 传递给from_pretrained函数的额外关键字参数。

Example

>>> model_hub = "facebook/wav2vec2-base-960h"
>>> save_path = "tmp"
>>> model = HFTransformersInterface(model_hub, save_path=save_path)
forward(**kwargs)[source]

用户应根据自己的任务修改此函数。

forward_encoder(**kwargs)[source]

用户应根据自己的任务修改此函数。

forward_decoder(**kwargs)[source]

用户应根据自己的任务修改此函数。

decode(**kwargs)[source]

可能对像mbart这样的模型有用,这些模型可以利用SB的beamsearch进行推理 用户应根据自己的任务修改此函数。

encode(**kwargs)[source]

用于推理的自定义编码 用户应根据自己的任务修改此函数。

freeze_model(model)[source]

冻结模型的参数。 这应该根据用户的需求进行重写,例如,适配器的使用。

Parameters:

model (来自 AutoModel.from_config) – 有效的 HuggingFace transformers 模型对象。

override_config(config)[source]

用户应根据自己的任务修改此函数。

Parameters:

config (HuggingFace 配置对象) – 原始配置。

Returns:

config – 被覆盖的配置。

Return type:

HuggingFace 配置对象

load_feature_extractor(source, cache_dir, **kwarg)[source]

从中心加载模型的特征提取器。

Parameters:
  • source (str) – HuggingFace 中心名称:例如 “facebook/wav2vec2-large-lv60”

  • cache_dir (str) – 下载的预训练模型配置应缓存的路径(目录)。

  • **kwarg – 传递给 AutoFeatureExtractor.from_pretrained() 方法的关键字参数。

load_tokenizer(source, **kwarg)[source]

从中心加载模型的标记器。

Parameters:
  • source (str) – HuggingFace 中心名称:例如 “facebook/wav2vec2-large-lv60”

  • **kwarg – 传递给 AutoFeatureExtractor.from_pretrained() 方法的关键字参数。

speechbrain.lobes.models.huggingface_transformers.huggingface.make_padding_masks(src, wav_len=None, pad_idx=0)[source]

此方法生成填充掩码。

Parameters:
  • src (tensor) – 编码器的输入序列(必需)。

  • wav_len (tensor) – 以SpeechBrain格式给出的wav的相对长度。

  • pad_idx (int) – <pad> 标记的索引(默认=0)。

Returns:

src_key_padding_mask – 填充掩码。

Return type:

张量