avista-base-plus / configuration_avhubert.py
yubo0306's picture
Upload AVHubertForConditionalGeneration
ceb46c5 verified
from transformers import HubertConfig, PretrainedConfig
class AVHubertConfig(PretrainedConfig):
model_type: str = "avhubert"
def __init__(
self,
label_rate: int = 100,
encoder_layers: int = 12,
encoder_embed_dim: int = 768,
encoder_ffn_embed_dim: int = 3072,
encoder_attention_heads: int = 12,
activation_fn: str = "gelu",
dropout: float = 0.1,
attention_dropout: float = 0.1,
activation_dropout: float = 0.0,
encoder_layerdrop: float = 0.0,
dropout_input: float = 0.0,
conv_dim: tuple[int, ...] = (512, 512, 512, 512, 512, 512, 512),
conv_stride: tuple[int, ...] = (5, 2, 2, 2, 2, 2, 2),
conv_kernel: tuple[int, ...] = (10, 3, 3, 3, 3, 2, 2),
conv_bias: bool = False,
conv_pos: int = 128,
conv_pos_groups: int = 16,
resnet_relu_type: str = "prelu",
audio_feat_dim: int = 104,
modality_fuse: str = "concat",
decoder_embed_dim: int = 768,
decoder_ffn_embed_dim: int = 3072,
decoder_layers: int = 6,
decoder_layerdrop: float = 0.0,
decoder_attention_heads: int = 4,
decoder_learned_pos: bool = False,
decoder_normalize_before: bool = False,
no_token_positional_embeddings: bool = False,
decoder_dropout: float = 0.1,
decoder_attention_dropout: float = 0.1,
decoder_activation_dropout: float = 0.0,
max_target_positions: int = 2048,
share_decoder_input_output_embed: bool = False,
no_scale_embedding: bool = True,
sample_rate: int = 25,
num_labels: int = 100,
initializer_range: float = 0.02,
do_stable_layer_norm: bool = False,
vocab_size: int | None = None,
freeze_feature_encoder: bool = False,
freeze_base_model: bool = False,
ctc_loss_reduction: str = "mean",
ctc_zero_infinity: bool = False,
ctc_loss_weight: float = 0.3,
special_ids: list[int] | None = None,
**kwargs,
):
super().__init__(**kwargs)
self.label_rate = label_rate
self.encoder_layers = encoder_layers
self.encoder_embed_dim = encoder_embed_dim
self.encoder_ffn_embed_dim = encoder_ffn_embed_dim
self.encoder_attention_heads = encoder_attention_heads
self.activation_fn = activation_fn
self.dropout = dropout
self.attention_dropout = attention_dropout
self.activation_dropout = activation_dropout
self.encoder_layerdrop = encoder_layerdrop
self.dropout_input = dropout_input
self.conv_dim = conv_dim
self.conv_kernel = conv_kernel
self.conv_stride = conv_stride
self.conv_bias = conv_bias
self.conv_pos = conv_pos
self.conv_pos_groups = conv_pos_groups
self.resnet_relu_type = resnet_relu_type
self.audio_feat_dim = audio_feat_dim
self.modality_fuse = modality_fuse
self.decoder_embed_dim = decoder_embed_dim
self.decoder_ffn_embed_dim = decoder_ffn_embed_dim
self.decoder_layers = decoder_layers
self.decoder_layerdrop = decoder_layerdrop
self.decoder_attention_heads = decoder_attention_heads
self.decoder_learned_pos = decoder_learned_pos
self.decoder_normalize_before = decoder_normalize_before
self.no_token_positional_embeddings = no_token_positional_embeddings
self.decoder_dropout = decoder_dropout
self.decoder_attention_dropout = decoder_attention_dropout
self.decoder_activation_dropout = decoder_activation_dropout
self.max_target_positions = max_target_positions
self.share_decoder_input_output_embed = share_decoder_input_output_embed
self.no_scale_embedding = no_scale_embedding
self.sample_rate = sample_rate
self.num_labels = num_labels
self.initializer_range = initializer_range
self.do_stable_layer_norm = do_stable_layer_norm
self.vocab_size = vocab_size
self.freeze_feature_encoder = freeze_feature_encoder
self.freeze_base_model = freeze_base_model
self.ctc_loss_reduction = ctc_loss_reduction
self.ctc_zero_infinity = ctc_zero_infinity
self.ctc_loss_weight = ctc_loss_weight
self.special_ids = special_ids
@property
def encoder_config(self) -> HubertConfig:
return HubertConfig(
hidden_size=self.encoder_embed_dim,
num_hidden_layers=self.encoder_layers,
num_attention_heads=self.encoder_attention_heads,
intermediate_size=self.encoder_ffn_embed_dim,
hidden_act=self.activation_fn,
hidden_dropout=self.dropout,
activation_dropout=self.activation_dropout,
attention_dropout=self.attention_dropout,
layerdrop=self.encoder_layerdrop,
conv_dim=self.conv_dim,
conv_kernel=self.conv_kernel,
conv_stride=self.conv_stride,
conv_bias=self.conv_bias,
num_conv_pos_embeddings=self.conv_pos,
num_conv_pos_embedding_groups=self.conv_pos_groups,
feat_extract_activation="gelu",
do_stable_layer_norm=self.do_stable_layer_norm,
max_position_embeddings=self.max_target_positions,
learned_pos=self.decoder_learned_pos,
share_input_output_embed=self.share_decoder_input_output_embed,
)
@property
def decoder_config(self) -> HubertConfig:
return HubertConfig(
hidden_size=self.decoder_embed_dim,
num_hidden_layers=self.decoder_layers,
num_attention_heads=self.decoder_attention_heads,
intermediate_size=self.decoder_ffn_embed_dim,
hidden_act=self.activation_fn,
hidden_dropout=self.decoder_dropout,
activation_dropout=self.decoder_activation_dropout,
attention_dropout=self.decoder_attention_dropout,
layerdrop=self.decoder_layerdrop,
conv_dim=self.conv_dim,
conv_kernel=self.conv_kernel,
conv_stride=self.conv_stride,
conv_bias=self.conv_bias,
num_conv_pos_embeddings=self.conv_pos,
num_conv_pos_embedding_groups=self.conv_pos_groups,
feat_extract_activation="gelu",
do_stable_layer_norm=self.do_stable_layer_norm,
max_position_embeddings=self.max_target_positions,
learned_pos=self.decoder_learned_pos,
share_input_output_embed=self.share_decoder_input_output_embed,
)