From 98971536217239ec760c48bde7bc71f412459543 Mon Sep 17 00:00:00 2001 From: lili Date: Fri, 7 Jun 2024 10:10:43 +0800 Subject: [PATCH] add whipser code 1 --- _posts/2024-05-31-hf-whipser-code.md | 1596 ++++++++++++++++++++++++++ img/hfwhisper/1.png | Bin 0 -> 187703 bytes 2 files changed, 1596 insertions(+) create mode 100644 _posts/2024-05-31-hf-whipser-code.md create mode 100644 img/hfwhisper/1.png diff --git a/_posts/2024-05-31-hf-whipser-code.md b/_posts/2024-05-31-hf-whipser-code.md new file mode 100644 index 0000000..5800205 --- /dev/null +++ b/_posts/2024-05-31-hf-whipser-code.md @@ -0,0 +1,1596 @@ +--- +layout: post +title: "Huggingface Whisper代码阅读(一)" +author: "lili" +mathjax: true +sticky: false +excerpt_separator: +tags: + - Huggingface + - Whisper + - code +--- + +本文分析阅读Huggingface Whisper的代码。 + + + +**目录** +* TOC +{:toc} + + +## 测试代码 + +``` +from transformers import pipeline +import torch + +#model_id = "openai/whisper-large-v3" # update with your model id +model_id = "openai/whisper-small" + +device = "cpu" +pipe = pipeline( + "automatic-speech-recognition", model=model_id, device=device +) + + +def transcribe_speech(filepath): + output = pipe( + filepath, + max_new_tokens=256, + generate_kwargs={ + "task": "transcribe" + }, + chunk_length_s=30, + batch_size=8, + ) + return output["text"] + +text = transcribe_speech("1.wav") + +print(text) +``` + +## 模型结构 + +根据论文,模型结构如下图: + +![](/img/hfwhisper/1.png) + +whipser是encoder-decoder架构。encoder除了输入之前的cnn之外,基本是标准的Transformer Encoder。decoder也是标准的Transformer,只不过token的设计比较复杂而已。关于Whisper的原理,请参考[Robust Speech Recognition via Large-Scale Weak Supervision论文解读](/2024/02/15/whisper/)。 + +## 模型加载 + + +### pipeline函数 + +pipeline函数的文档参考[这里](https://huggingface.co/docs/transformers/main_classes/pipelines#transformers.pipeline)。 + +这个函数的原型是: + +``` +def pipeline( + task: str = None, + model: Optional[Union[str, "PreTrainedModel", "TFPreTrainedModel"]] = None, + config: Optional[Union[str, PretrainedConfig]] = None, + tokenizer: Optional[Union[str, PreTrainedTokenizer, "PreTrainedTokenizerFast"]] = None, + feature_extractor: Optional[Union[str, PreTrainedFeatureExtractor]] = None, + image_processor: Optional[Union[str, BaseImageProcessor]] = None, + framework: Optional[str] = None, + revision: Optional[str] = None, + use_fast: bool = True, + token: Optional[Union[str, bool]] = None, + device: Optional[Union[int, str, "torch.device"]] = None, + device_map=None, + torch_dtype=None, + trust_remote_code: Optional[bool] = None, + model_kwargs: Dict[str, Any] = None, + pipeline_class: Optional[Any] = None, + **kwargs, +) -> Pipeline: +``` + +参数说明如下: + +* task (str) — The task defining which pipeline will be returned. Currently accepted tasks are: + * "audio-classification": will return a AudioClassificationPipeline. + * "automatic-speech-recognition": will return a AutomaticSpeechRecognitionPipeline. + * "conversational": will return a ConversationalPipeline. + * "depth-estimation": will return a DepthEstimationPipeline. + * "document-question-answering": will return a DocumentQuestionAnsweringPipeline. + * "feature-extraction": will return a FeatureExtractionPipeline. + * "fill-mask": will return a FillMaskPipeline:. + * "image-classification": will return a ImageClassificationPipeline. + * "image-feature-extraction": will return an ImageFeatureExtractionPipeline. + * "image-segmentation": will return a ImageSegmentationPipeline. + * "image-to-image": will return a ImageToImagePipeline. + * "image-to-text": will return a ImageToTextPipeline. + * "mask-generation": will return a MaskGenerationPipeline. + * "object-detection": will return a ObjectDetectionPipeline. + * "question-answering": will return a QuestionAnsweringPipeline. + * "summarization": will return a SummarizationPipeline. + * "table-question-answering": will return a TableQuestionAnsweringPipeline. + * "text2text-generation": will return a Text2TextGenerationPipeline. + * "text-classification" (alias "sentiment-analysis" available): will return a TextClassificationPipeline. + * "text-generation": will return a TextGenerationPipeline:. + * "text-to-audio" (alias "text-to-speech" available): will return a TextToAudioPipeline:. + * "token-classification" (alias "ner" available): will return a TokenClassificationPipeline. + * "translation": will return a TranslationPipeline. + * "translation_xx_to_yy": will return a TranslationPipeline. + * "video-classification": will return a VideoClassificationPipeline. + * "visual-question-answering": will return a VisualQuestionAnsweringPipeline. + * "zero-shot-classification": will return a ZeroShotClassificationPipeline. + * "zero-shot-image-classification": will return a ZeroShotImageClassificationPipeline. + * "zero-shot-audio-classification": will return a ZeroShotAudioClassificationPipeline. + * "zero-shot-object-detection": will return a ZeroShotObjectDetectionPipeline. + +* model (str or PreTrainedModel or TFPreTrainedModel, optional) — The model that will be used by the pipeline to make predictions. This can be a model identifier or an actual instance of a pretrained model inheriting from PreTrainedModel (for PyTorch) or TFPreTrainedModel (for TensorFlow). +If not provided, the default for the task will be loaded. + +* config (str or PretrainedConfig, optional) — The configuration that will be used by the pipeline to instantiate the model. This can be a model identifier or an actual pretrained model configuration inheriting from PretrainedConfig. +If not provided, the default configuration file for the requested model will be used. That means that if model is given, its default configuration will be used. However, if model is not supplied, this task’s default model’s config is used instead. + +* tokenizer (str or PreTrainedTokenizer, optional) — The tokenizer that will be used by the pipeline to encode data for the model. This can be a model identifier or an actual pretrained tokenizer inheriting from PreTrainedTokenizer. +If not provided, the default tokenizer for the given model will be loaded (if it is a string). If model is not specified or not a string, then the default tokenizer for config is loaded (if it is a string). However, if config is also not given or not a string, then the default tokenizer for the given task will be loaded. + +* feature_extractor (str or PreTrainedFeatureExtractor, optional) — The feature extractor that will be used by the pipeline to encode data for the model. This can be a model identifier or an actual pretrained feature extractor inheriting from PreTrainedFeatureExtractor. +Feature extractors are used for non-NLP models, such as Speech or Vision models as well as multi-modal models. Multi-modal models will also require a tokenizer to be passed. +If not provided, the default feature extractor for the given model will be loaded (if it is a string). If model is not specified or not a string, then the default feature extractor for config is loaded (if it is a string). However, if config is also not given or not a string, then the default feature extractor for the given task will be loaded. + +* framework (str, optional) — The framework to use, either "pt" for PyTorch or "tf" for TensorFlow. The specified framework must be installed. +If no framework is specified, will default to the one currently installed. If no framework is specified and both frameworks are installed, will default to the framework of the model, or to PyTorch if no model is provided. + +* revision (str, optional, defaults to "main") — When passing a task name or a string model identifier: The specific model version to use. It can be a branch name, a tag name, or a commit id, since we use a git-based system for storing models and other artifacts on huggingface.co, so revision can be any identifier allowed by git. +* use_fast (bool, optional, defaults to True) — Whether or not to use a Fast tokenizer if possible (a PreTrainedTokenizerFast). +* use_auth_token (str or bool, optional) — The token to use as HTTP bearer authorization for remote files. If True, will use the token generated when running huggingface-cli login (stored in ~/.huggingface). +* device (int or str or torch.device) — Defines the device (e.g., "cpu", "cuda:1", "mps", or a GPU ordinal rank like 1) on which this pipeline will be allocated. +* device_map (str or Dict[str, Union[int, str, torch.device], optional) — Sent directly as model_kwargs (just a simpler shortcut). When accelerate library is present, set device_map="auto" to compute the most optimized device_map automatically (see here for more information). +Do not use device_map AND device at the same time as they will conflict + +* torch_dtype (str or torch.dtype, optional) — Sent directly as model_kwargs (just a simpler shortcut) to use the available precision for this model (torch.float16, torch.bfloat16, … or "auto"). +* trust_remote_code (bool, optional, defaults to False) — Whether or not to allow for custom code defined on the Hub in their own modeling, configuration, tokenization or even pipeline files. This option should only be set to True for repositories you trust and in which you have read the code, as it will execute code present on the Hub on your local machine. +* model_kwargs (Dict[str, Any], optional) — Additional dictionary of keyword arguments passed along to the model’s from_pretrained(..., **model_kwargs) function. +* kwargs (Dict[str, Any], optional) — Additional keyword arguments passed along to the specific pipeline init (see the documentation for the corresponding pipeline class for possible values). + +参数很多,我们这里传入的是task="automatic-speech-recognition",model="openai/whisper-small"以及device="cpu"。 + +这个函数的核心代码是: + +``` + resolved_config_file = cached_file( + pretrained_model_name_or_path, + CONFIG_NAME, + _raise_exceptions_for_gated_repo=False, + _raise_exceptions_for_missing_entries=False, + _raise_exceptions_for_connection_errors=False, + **hub_kwargs, + ) + + + + config = AutoConfig.from_pretrained( + model, _from_pipeline=task, code_revision=code_revision, **hub_kwargs, **model_kwargs + ) + + + normalized_task, targeted_task, task_options = check_task(task) + + framework, model = infer_framework_load_model( + model, + model_classes=model_classes, + config=config, + framework=framework, + task=task, + **hub_kwargs, + **model_kwargs, + ) + + .... + tokenizer = AutoTokenizer.from_pretrained( + tokenizer_identifier, use_fast=use_fast, _from_pipeline=task, **hub_kwargs, **tokenizer_kwargs + ) + + ... + feature_extractor = AutoFeatureExtractor.from_pretrained( + feature_extractor, _from_pipeline=task, **hub_kwargs, **model_kwargs + ) + + .... + return pipeline_class(model=model, framework=framework, task=task, **kwargs) +``` + +#### cached_file函数 + +resolved_config_file是模型的配置信息,第一次运行会下载,之后会使用cache。我这里的cache位置是'.........../.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/config.json'。这个文件保持了模型的结果,完整的内容是: + +``` +{ + "_name_or_path": "openai/whisper-small", + "activation_dropout": 0.0, + "activation_function": "gelu", + "architectures": [ + "WhisperForConditionalGeneration" + ], + "attention_dropout": 0.0, + "begin_suppress_tokens": [ + 220, + 50257 + ], + "bos_token_id": 50257, + "d_model": 768, + "decoder_attention_heads": 12, + "decoder_ffn_dim": 3072, + "decoder_layerdrop": 0.0, + "decoder_layers": 12, + "decoder_start_token_id": 50258, + "dropout": 0.0, + "encoder_attention_heads": 12, + "encoder_ffn_dim": 3072, + "encoder_layerdrop": 0.0, + "encoder_layers": 12, + "eos_token_id": 50257, + "forced_decoder_ids": [ + [ + 1, + 50259 + ], + [ + 2, + 50359 + ], + [ + 3, + 50363 + ] + ], + "init_std": 0.02, + "is_encoder_decoder": true, + "max_length": 448, + "max_source_positions": 1500, + "max_target_positions": 448, + "model_type": "whisper", + "num_hidden_layers": 12, + "num_mel_bins": 80, + "pad_token_id": 50257, + "scale_embedding": false, + "suppress_tokens": [ + 1, + 2, + 7, + 8, + 9, + 10, + 14, + 25, + 26, + 27, + 28, + 29, + 31, + 58, + 59, + 60, + 61, + 62, + 63, + 90, + 91, + 92, + 93, + 359, + 503, + 522, + 542, + 873, + 893, + 902, + 918, + 922, + 931, + 1350, + 1853, + 1982, + 2460, + 2627, + 3246, + 3253, + 3268, + 3536, + 3846, + 3961, + 4183, + 4667, + 6585, + 6647, + 7273, + 9061, + 9383, + 10428, + 10929, + 11938, + 12033, + 12331, + 12562, + 13793, + 14157, + 14635, + 15265, + 15618, + 16553, + 16604, + 18362, + 18956, + 20075, + 21675, + 22520, + 26130, + 26161, + 26435, + 28279, + 29464, + 31650, + 32302, + 32470, + 36865, + 42863, + 47425, + 49870, + 50254, + 50258, + 50360, + 50361, + 50362 + ], + "torch_dtype": "float32", + "transformers_version": "4.27.0.dev0", + "use_cache": true, + "vocab_size": 51865 +} +``` + +#### AutoConfig.from_pretrained + +AutoConfig.from_pretrained函数通过这个文件的内容用AutoConfig加载特定模型(model_type=whisper)的配置。 + + +``` + elif "model_type" in config_dict: + try: + config_class = CONFIG_MAPPING[config_dict["model_type"]] + except KeyError: + raise ValueError( + f"The checkpoint you are trying to load has model type `{config_dict['model_type']}` " + "but Transformers does not recognize this architecture. This could be because of an " + "issue with the checkpoint, or because your version of Transformers is out of date." + ) + return config_class.from_dict(config_dict, **unused_kwargs) +``` + +这里config_class是transformers.models.whisper.configuration_whisper.WhisperConfig。 + +config_class.from_dict(config_dict, **unused_kwargs)的代码继承自父类AutoConfig,它做一些特殊处理,最终调用子类的构造函数: + +``` + def from_dict(cls, config_dict: Dict[str, Any], **kwargs) -> "PretrainedConfig": + ... + + config = cls(**config_dict) +``` + +在这里,config_dict为: + +``` +"{'_name_or_path': 'openai/whisper-small', 'activation_dropout': 0.0, 'activation_function': 'gelu', 'architectures': ['WhisperForConditionalGeneration'], 'attention_dropout': 0.0, 'begin_suppress_tokens': [220, 50257], 'bos_token_id': 50257, 'd_model': 768, 'decoder_attention_heads': 12, 'decoder_ffn_dim': 3072, 'decoder_layerdrop': 0.0, 'decoder_layers': 12, 'decoder_start_token_id': 50258, 'dropout': 0.0, 'encoder_attention_heads': 12, 'encoder_ffn_dim': 3072, 'encoder_layerdrop': 0.0, 'encoder_layers': 12, 'eos_token_id': 50257, 'forced_decoder_ids': [[1, 50259], [2, 50359], [3, 50363]], 'init_std': 0.02, 'is_encoder_decoder': True, 'max_length': 448, 'max_source_positions': 1500, 'max_target_positions': 448, 'model_type': 'whisper', 'num_hidden_layers': 12, 'num_mel_bins': 80, 'pad_token_id': 50257, 'scale_embedding': False, 'suppress_tokens': [1, 2, 7, 8, 9, 10, 14, 25, 26, 27, 28, 29, 31, 58, 59, 60, 61, 62, 63, 90, 91, 92, 93, 359, 503, 522, 542, 873, 893, 902, 918, 922, 931, 1350, 1853, 1982, 2460, 2627, 3246, 3253, 3268, 3536, 3846, 3961, 4183, 4667, 6585, 6647, 7273, 9061, 9383, 10428, 10929, 11938, 12033, 12331, 12562, 13793, 14157, 14635, 15265, 15618, 16553, 16604, 18362, 18956, 20075, 21675, 22520, 26130, 26161, 26435, 28279, 29464, 31650, 32302, 32470, 36865, 42863, 47425, 49870, 50254, 50258, 50360, 50361, 50362], 'torch_dtype': 'float32', 'transformers_version': '4.27.0.dev0', 'use_cache': True, 'vocab_size': 51865, '_commit_hash': '973afd24965f72e36ca33b3055d56a652f456b4d', 'attn_implementation': None}" +``` + +WhisperConfig的构造函数的参数如下(在线文档在[这里](https://huggingface.co/docs/transformers/model_doc/whisper)): + +* vocab_size (int, optional, defaults to 51865) — Vocabulary size of the Whisper model. Defines the number of different tokens that can be represented by the decoder_input_ids passed when calling WhisperModel +* num_mel_bins (int, optional, defaults to 80) — Number of mel features used per input features. Should correspond to the value used in the WhisperProcessor class. +* encoder_layers (int, optional, defaults to 4) — Number of encoder layers. +* decoder_layers (int, optional, defaults to 4) — Number of decoder layers. +* encoder_attention_heads (int, optional, defaults to 6) — Number of attention heads for each attention layer in the Transformer encoder. +* decoder_attention_heads (int, optional, defaults to 6) — Number of attention heads for each attention layer in the Transformer decoder. +* encoder_ffn_dim (int, optional, defaults to 1536) — Dimensionality of the “intermediate” (often named feed-forward) layer in encoder. +* decoder_ffn_dim (int, optional, defaults to 1536) — Dimensionality of the “intermediate” (often named feed-forward) layer in decoder. +* encoder_layerdrop (float, optional, defaults to 0.0) — The LayerDrop probability for the encoder. See the [LayerDrop paper](see https://arxiv.org/abs/1909.11556) for more details. +* decoder_layerdrop (float, optional, defaults to 0.0) — The LayerDrop probability for the decoder. See the [LayerDrop paper](see https://arxiv.org/abs/1909.11556) for more details. +* decoder_start_token_id (int, optional, defaults to 50257) — Corresponds to the ”<|startoftranscript|>” token, which is automatically used when no decoder_input_ids are provided to the generate function. It is used to guide the model`s generation process depending on the task. +* use_cache (bool, optional, defaults to True) — Whether or not the model should return the last key/values attentions (not used by all models). +* is_encoder_decoder (bool, optional, defaults to True) — Whether the model is used as an encoder/decoder or not. +* activation_function (str, optional, defaults to "gelu") — The non-linear activation function (function or string) in the encoder and pooler. If string, "gelu", "relu", "silu" and "gelu_new" are supported. +* d_model (int, optional, defaults to 384) — Dimensionality of the layers. +* dropout (float, optional, defaults to 0.1) — The dropout probability for all fully connected layers in the embeddings, encoder, and pooler. +* attention_dropout (float, optional, defaults to 0.0) — The dropout ratio for the attention probabilities. +* activation_dropout (float, optional, defaults to 0.0) — The dropout ratio for activations inside the fully connected layer. +* init_std (float, optional, defaults to 0.02) — The standard deviation of the truncated_normal_initializer for initializing all weight matrices. +* scale_embedding (bool, optional, defaults to False) — Scale embeddings by diving by sqrt(d_model). +* max_source_positions (int, optional, defaults to 1500) — The maximum sequence length of log-mel filter-bank features that this model might ever be used with. +* max_target_positions (int, optional, defaults to 448) — The maximum sequence length that this model might ever be used with. Typically set this to something large just in case (e.g., 512 or 1024 or 2048). +* pad_token_id (int, optional, defaults to 50256) — Padding token id. +* bos_token_id (int, optional, defaults to 50256) — Begin of stream token id. +* eos_token_id (int, optional, defaults to 50256) — End of stream token id. +* suppress_tokens (List[int], optional) — A list containing the non-speech tokens that will be used by the logit processor in the generate function. NON_SPEECH_TOKENS and NON_SPEECH_TOKENS_MULTI each correspond to the english-only and the multilingual model. +* begin_suppress_tokens (List[int], optional, defaults to [220,50256]) — A list containing tokens that will be supressed at the beginning of the sampling process. Initialized as the token for " " (blank_token_id) and the eos_token_id +* use_weighted_layer_sum (bool, optional, defaults to False) — Whether to use a weighted average of layer outputs with learned weights. Only relevant when using an instance of WhisperForAudioClassification. +* classifier_proj_size (int, optional, defaults to 256) — Dimensionality of the projection before token mean-pooling for classification. Only relevant when using an instance of WhisperForAudioClassification. +* apply_spec_augment (bool, optional, defaults to False) — Whether to apply SpecAugment data augmentation to the outputs of the feature encoder. For reference see SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition. +* mask_time_prob (float, optional, defaults to 0.05) — Percentage (between 0 and 1) of all feature vectors along the time axis which will be masked. The masking procecure generates mask_time_prob*len(time_axis)/mask_time_length independent masks over the axis. If reasoning from the propability of each feature vector to be chosen as the start of the vector span to be masked, mask_time_prob should be prob_vector_start*mask_time_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment == True. +* mask_time_length (int, optional, defaults to 10) — Length of vector span along the time axis. +* mask_time_min_masks (int, optional, defaults to 2), — The minimum number of masks of length mask_feature_length generated along the time axis, each time step, irrespectively of mask_feature_prob. Only relevant if ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” +* mask_feature_prob (float, optional, defaults to 0.0) — Percentage (between 0 and 1) of all feature vectors along the feature axis which will be masked. The masking procecure generates mask_feature_prob*len(feature_axis)/mask_time_length independent masks over the axis. If reasoning from the propability of each feature vector to be chosen as the start of the vector span to be masked, mask_feature_prob should be prob_vector_start*mask_feature_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True. +* mask_feature_length (int, optional, defaults to 10) — Length of vector span along the feature axis. +* mask_feature_min_masks (int, optional, defaults to 0), — The minimum number of masks of length mask_feature_length generated along the feature axis, each time step, irrespectively of mask_feature_prob. Only relevant if mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks. +* median_filter_width (int, optional, defaults to 7) — Width of the median filter used to smoothen to cross-attention outputs when computing token timestamps. Should be an odd number. + + +#### check_task函数 + +这个函数就是根据task='automatic-speech-recognition'查找对应的targeted_task,并且最终根据框架(pytorch)得到model_classes,我这里的model_classes是: + +``` +{'tf': (), 'pt': (, )} +``` + +接着调用infer_framework_load_model真正执行模型的加载。因为这个函数比较复杂,我们详细来展开它。 + + + +### infer_framework_load_model + +这个函数的主要代码是: + +``` + for model_class in class_tuple: + + try: + model = model_class.from_pretrained(model, **kwargs) + if hasattr(model, "eval"): + model = model.eval() + # Stop loading on the first successful load. + break + except (OSError, ValueError): + all_traceback[model_class.__name__] = traceback.format_exc() + continue +``` + +class_tuple来自传入参数model_classes以及配置config.architectures=WhisperForConditionalGeneration获得。最终class_tuple的值为: + +``` +(, , ) +``` + +然后分别尝试用这3个类的from_pretrained函数来加载模型。我这里实际的运行情况是AutoModelForCTC抛出异常,因为whisper不是ctc架构的模型,而第二个AutoModelForSpeechSeq2Seq能够成功加载模型。它的代码是: + +``` + model_class = _get_model_class(config, cls._model_mapping) + return model_class.from_pretrained( + pretrained_model_name_or_path, *model_args, config=config, **hub_kwargs, **kwargs + ) +``` + +通过config,查找到对应的model_class是'transformers.models.whisper.modeling_whisper.WhisperForConditionalGeneration',最终调用这个类的from_pretrained来加载模型。 + +### WhisperForConditionalGeneration.from_pretrained + +WhisperForConditionalGeneration继承了WhisperGenerationMixin和WhisperPreTrainedModel,WhisperPreTrainedModel最终继承了ModuleUtilsMixin,而from_pretrained最终来自ModuleUtilsMixin: + +``` + resolved_archive_file = cached_file(pretrained_model_name_or_path, filename, **cached_file_kwargs) + + ...... + + state_dict = load_state_dict(resolved_archive_file) + + init_contexts = [no_init_weights(_enable=_fast_init)] + + with ContextManagers(init_contexts): + # Let's make sure we don't run the init function of buffer modules + model = cls(config, *model_args, **model_kwargs) + + + ( + model, + missing_keys, + unexpected_keys, + mismatched_keys, + offload_index, + error_msgs, + ) = cls._load_pretrained_model( + model, + state_dict, + loaded_state_dict_keys, # XXX: rename? + resolved_archive_file, + pretrained_model_name_or_path, + ignore_mismatched_sizes=ignore_mismatched_sizes, + sharded_metadata=sharded_metadata, + _fast_init=_fast_init, + low_cpu_mem_usage=low_cpu_mem_usage, + device_map=device_map, + offload_folder=offload_folder, + offload_state_dict=offload_state_dict, + dtype=torch_dtype, + hf_quantizer=hf_quantizer, + keep_in_fp32_modules=keep_in_fp32_modules, + ) + + ..... + model.eval() + + ... + model.generation_config = GenerationConfig.from_pretrained( + pretrained_model_name_or_path, + cache_dir=cache_dir, + force_download=force_download, + resume_download=resume_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + _from_auto=from_auto_class, + _from_pipeline=from_pipeline, + **kwargs, + ) +``` + +resolved_archive_file的值为: + +``` +'...../.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/model.safetensors' +``` + +加载后的state_dict为: + +``` +{'model.decoder.embed_positions.weight': tensor([[ 0.0043, 0.0010, 0.0108, ..., -0.0046, -0.0061, 0.0013], + [ 0.0039, 0.0044, 0.0034, ..., -0.0047, -0.0080, 0.0058], + [ 0.0086, 0.0028, 0.0057, ..., -0.0031, -0.0086, 0.0086], + ..., + [ 0.0104, 0.0073, 0.0066, ..., 0.0104, 0.0018, 0.0017], + [ 0.0061, 0.0015, 0.0047, ..., 0.0060, 0.0033, 0.0067], + [ 0.0069, 0.0108, 0.0026, ..., 0.0034, -0.0023, 0.0089]]), 'model.decoder.embed_tokens.weight': tensor([[ 0.0055, -0.0057, 0.0133, ..., 0.0027, -0.0191, -0.0129], + [ 0.0065, -0.0289, 0.0112, ..., 0.0035, 0.0122, -0.0312], + [ 0.0014, 0.0012, 0.0141, ..., 0.0036, 0.0384, -0.0168], + ..., + [ 0.0081, 0.0034, 0.0134, ..., 0.0182, 0.0291, -0.0009], + [ 0.0068, 0.0056, 0.0108, ..., 0.0202, 0.0307, 0.0130], + [ 0.0050, 0.0032, -0.0041, ..., 0.0105, 0.0403, 0.0129]]), 'model.decoder.layer_norm.bias': tensor([-6.3904e-02, 2.0984e-01, 6.5283e-01, -8.9160e-01, 1.2817e-02, + -1.0321e-01, -5.3809e-01, 3.2471e-01, -1.2439e-01, 5.6213e-02, + -1.2805e-01, -2.6294e-01, -9.9060e-02, -5.9082e-01, -1.3025e-01, + 9.2590e-02, 6.3538e-02, 4.1479e-01, 1.5820e-01, -5.3564e-01, + + ........................... + + 7.7100e-01, 6.7139e-01, 7.1777e-01, 5.4541e-01, 7.2217e-01, + 7.7881e-01, 4.7974e-01, 5.1611e-01, 4.7266e-01, 3.2544e-01, + 4.5996e-01, 5.2832e-01, 6.5381e-01]), 'model.decoder.layers.0.fc1.bias': tensor([-0.7275, -0.1436, -0.5371, ..., -0.3271, -0.6587, -0.5327]), ...} +``` + +no_init_weights的作用是构造网络时不进行参数初始化,等到后面再读取模型参数。model = cls(config, *model_args, **model_kwargs)进入到transformers.models.whisper.modeling_whisper.WhisperForConditionalGeneration的构造函数。 + +### WhisperForConditionalGeneration + +``` +class WhisperForConditionalGeneration(WhisperGenerationMixin, WhisperPreTrainedModel): + base_model_prefix = "model" + _tied_weights_keys = ["proj_out.weight"] + + def __init__(self, config: WhisperConfig): + super().__init__(config) + self.model = WhisperModel(config) + self.proj_out = nn.Linear(config.d_model, config.vocab_size, bias=False) + + # Initialize weights and apply final processing + self.post_init() +···· +``` + +这个类的构造函数主要是构造WhisperModel实例model,接着构造输出proj_out(config.d_model=768, config.vocab_size=51865)。 + +### WhisperModel + +``` +class WhisperModel(WhisperPreTrainedModel): + def __init__(self, config: WhisperConfig): + super().__init__(config) + + self.encoder = WhisperEncoder(config) + self.decoder = WhisperDecoder(config) + # Initialize weights and apply final processing + self.post_init() +``` + + +### WhisperEncoder + +``` +class WhisperEncoder(WhisperPreTrainedModel): + """ + Transformer encoder consisting of *config.encoder_layers* self attention layers. Each layer is a + [`WhisperEncoderLayer`]. + + Args: + config: WhisperConfig + """ + + def __init__(self, config: WhisperConfig): + super().__init__(config) + self.dropout = config.dropout + self.layerdrop = config.encoder_layerdrop + + embed_dim = config.d_model + self.num_mel_bins = config.num_mel_bins + self.padding_idx = config.pad_token_id + self.max_source_positions = config.max_source_positions + self.embed_scale = math.sqrt(embed_dim) if config.scale_embedding else 1.0 + + self.conv1 = nn.Conv1d(self.num_mel_bins, embed_dim, kernel_size=3, padding=1) + self.conv2 = nn.Conv1d(embed_dim, embed_dim, kernel_size=3, stride=2, padding=1) + + self.embed_positions = nn.Embedding(self.max_source_positions, embed_dim) + self.embed_positions.requires_grad_(False) + + self.layers = nn.ModuleList([WhisperEncoderLayer(config) for _ in range(config.encoder_layers)]) + self.layer_norm = nn.LayerNorm(config.d_model) + + self.gradient_checkpointing = False + # Initialize weights and apply final processing + self.post_init() +``` + +WhisperEncoder包括两个卷积层(conv1和conv2),然后就是config.encoder_layers=12个WhisperEncoderLayer。另外就是一个layer_norm。 + +### WhisperEncoderLayer + +``` +class WhisperEncoderLayer(nn.Module): + def __init__(self, config: WhisperConfig): + super().__init__() + self.embed_dim = config.d_model + + self.self_attn = WHISPER_ATTENTION_CLASSES[config._attn_implementation]( + embed_dim=self.embed_dim, + num_heads=config.encoder_attention_heads, + dropout=config.attention_dropout, + config=config, + ) + self.self_attn_layer_norm = nn.LayerNorm(self.embed_dim) + self.dropout = config.dropout + self.activation_fn = ACT2FN[config.activation_function] + self.activation_dropout = config.activation_dropout + self.fc1 = nn.Linear(self.embed_dim, config.encoder_ffn_dim) + self.fc2 = nn.Linear(config.encoder_ffn_dim, self.embed_dim) + self.final_layer_norm = nn.LayerNorm(self.embed_dim) +``` + +transformers有很多Attention的实现,这里config._attn_implementation='spda',所以对应的是WhisperSdpaAttention类。后面我们会在forward时学习其实现。其它都是比较标准的Transformer构件,包括LayerNorm和全连接层。 + +### WhisperDecoder + +``` +class WhisperDecoder(WhisperPreTrainedModel): + """ + Transformer decoder consisting of *config.decoder_layers* layers. Each layer is a [`WhisperDecoderLayer`] + + Args: + config: WhisperConfig + """ + + main_input_name = "input_ids" + + def __init__(self, config: WhisperConfig): + super().__init__(config) + self.dropout = config.dropout + self.layerdrop = config.decoder_layerdrop + self.padding_idx = config.pad_token_id + self.max_target_positions = config.max_target_positions + self.max_source_positions = config.max_source_positions + self.embed_scale = math.sqrt(config.d_model) if config.scale_embedding else 1.0 + + self.embed_tokens = nn.Embedding(config.vocab_size, config.d_model, self.padding_idx) + self.embed_positions = WhisperPositionalEmbedding(self.max_target_positions, config.d_model) + + self.layers = nn.ModuleList([WhisperDecoderLayer(config) for _ in range(config.decoder_layers)]) + self._use_flash_attention_2 = config._attn_implementation == "flash_attention_2" + self._use_sdpa = config._attn_implementation == "sdpa" + + self.layer_norm = nn.LayerNorm(config.d_model) + + self.gradient_checkpointing = False + # Initialize weights and apply final processing + self.post_init() +``` + +WhisperDecoder和WhisperEncoder差不多,主要是多层WhisperDecoderLayer。 + +### WhisperDecoderLayer + +``` +class WhisperDecoderLayer(nn.Module): + def __init__(self, config: WhisperConfig): + super().__init__() + self.embed_dim = config.d_model + + self.self_attn = WHISPER_ATTENTION_CLASSES[config._attn_implementation]( + embed_dim=self.embed_dim, + num_heads=config.decoder_attention_heads, + dropout=config.attention_dropout, + is_decoder=True, + is_causal=True, + config=config, + ) + self.dropout = config.dropout + self.activation_fn = ACT2FN[config.activation_function] + self.activation_dropout = config.activation_dropout + + self.self_attn_layer_norm = nn.LayerNorm(self.embed_dim) + self.encoder_attn = WHISPER_ATTENTION_CLASSES[config._attn_implementation]( + self.embed_dim, + config.decoder_attention_heads, + dropout=config.attention_dropout, + is_decoder=True, + config=config, + ) + self.encoder_attn_layer_norm = nn.LayerNorm(self.embed_dim) + self.fc1 = nn.Linear(self.embed_dim, config.decoder_ffn_dim) + self.fc2 = nn.Linear(config.decoder_ffn_dim, self.embed_dim) + self.final_layer_norm = nn.LayerNorm(self.embed_dim) +``` + +Decoder有两种Attention,一种还是Self Attention,但是注意参数is_decoder=True和is_causal=True,这会导致它的mask有所不同。另外就是encoder_attn,它是decoder对encoder输出的attention。 + +### PreTrainedModel._load_pretrained_model + +``` + model.tie_weights() + + ... + if _fast_init: + if not ignore_mismatched_sizes: + not_initialized_submodules = set_initialized_submodules(model, _loaded_keys) + + + + ... + model.apply(model._initialize_weights) + + ... + error_msgs = _load_state_dict_into_model(model_to_load, state_dict, start_prefix) + +``` + + +#### PreTrainedModel.tie_weights + + +``` + def tie_weights(self): + """ + Tie the weights between the input embeddings and the output embeddings. + + If the `torchscript` flag is set in the configuration, can't handle parameter sharing so we are cloning the + weights instead. + """ + if getattr(self.config, "tie_word_embeddings", True): + output_embeddings = self.get_output_embeddings() + if output_embeddings is not None: + self._tie_or_clone_weights(output_embeddings, self.get_input_embeddings()) + + if getattr(self.config, "is_encoder_decoder", False) and getattr(self.config, "tie_encoder_decoder", False): + if hasattr(self, self.base_model_prefix): + self = getattr(self, self.base_model_prefix) + self._tie_encoder_decoder_weights(self.encoder, self.decoder, self.base_model_prefix) + + for module in self.modules(): + if hasattr(module, "_tie_weights"): + module._tie_weights() +``` + +因为条件getattr(self.config, "tie_word_embeddings", True)成立,所以会调用_tie_or_clone_weights,其中: + +* output_embeddings是decoder的proj_out,也就是decoder的输出embedding +* self.get_input_embeddings()是decoder.embed_tokens,也就是输入token的embedding。 + +``` + def _tie_or_clone_weights(self, output_embeddings, input_embeddings): + """Tie or clone module weights depending of whether we are using TorchScript or not""" + if self.config.torchscript: + output_embeddings.weight = nn.Parameter(input_embeddings.weight.clone()) + else: + output_embeddings.weight = input_embeddings.weight + + if getattr(output_embeddings, "bias", None) is not None: + output_embeddings.bias.data = nn.functional.pad( + output_embeddings.bias.data, + ( + 0, + output_embeddings.weight.shape[0] - output_embeddings.bias.shape[0], + ), + "constant", + 0, + ) + if hasattr(output_embeddings, "out_features") and hasattr(input_embeddings, "num_embeddings"): + output_embeddings.out_features = input_embeddings.num_embeddings +``` + +#### set_initialized_submodules + +``` +def set_initialized_submodules(model, state_dict_keys): + """ + Sets the `_is_hf_initialized` flag in all submodules of a given model when all its weights are in the loaded state + dict. + """ + not_initialized_submodules = {} + for module_name, module in model.named_modules(): + loaded_keys = {k.replace(f"{module_name}.", "") for k in state_dict_keys if k.startswith(f"{module_name}.")} + if loaded_keys.issuperset(module.state_dict()): + module._is_hf_initialized = True + else: + not_initialized_submodules[module_name] = module + return not_initialized_submodules +``` + +这个函数把遍历model的所有模块(named_modules),如果这些模块的所以参数都在state_dict_keys里了,那么说明这些模块的参数已经加载,因此设置module._is_hf_initialized = True。 + +我这里运行时not_initialized_submodules为: + +``` +{'': WhisperForConditionalGeneration( + (model): WhisperModel( + (encoder): WhisperEncoder( + (conv1): Conv1d(80, 768, kernel_size=(3,), stride=(1,), padding=(1,)) + (conv2): Conv1d(768, 768, kernel_size=(3,), stride=(2,), padding=(1,)) + (embed_positions): Embedding(1500, 768) + (layers): ModuleList( + (0-11): 12 x WhisperEncoderLayer( + (self_attn): WhisperSdpaAttention( + (k_proj): Linear(in_features=768, out_features=768, bias=False) + (v_proj): Linear(in_features=768, out_features=768, bias=True) + (q_proj): Linear(in_features=768, out_features=768, bias=True) + (out_proj): Linear(in_features=768, out_features=768, bias=True) + ) + (self_attn_layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True) + (activation_fn): GELUActivation() + (fc1): Linear(in_features=768, out_features=3072, bias=True) + (fc2): Linear(in_features=3072, out_features=768, bias=True) + (final_layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True) + ) + ) + (layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True) + ) + (decoder): WhisperDecoder( + (embed_tokens): Embedding(51865, 768, padding_idx=50257) + (embed_positions): WhisperPositionalEmbedding(448, 768) + (layers): ModuleList( + (0-11): 12 x WhisperDecoderLayer( + (self_attn): WhisperSdpaAttention( + (k_proj): Linear(in_features=768, out_features=768, bias=False) + (v_proj): Linear(in_features=768, out_features=768, bias=True) + (q_proj): Linear(in_features=768, out_features=768, bias=True) + (out_proj): Linear(in_features=768, out_features=768, bias=True) + ) + (activation_fn): GELUActivation() + (self_attn_layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True) + (encoder_attn): WhisperSdpaAttention( + (k_proj): Linear(in_features=768, out_features=768, bias=False) + (v_proj): Linear(in_features=768, out_features=768, bias=True) + (q_proj): Linear(in_features=768, out_features=768, bias=True) + (out_proj): Linear(in_features=768, out_features=768, bias=True) + ) + (encoder_attn_layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True) + (fc1): Linear(in_features=768, out_features=3072, bias=True) + (fc2): Linear(in_features=3072, out_features=768, bias=True) + (final_layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True) + ) + ) + (layer_norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True) + ) + ) + (proj_out): Linear(in_features=768, out_features=51865, bias=False) +), 'proj_out': Linear(in_features=768, out_features=51865, bias=False)} +``` + +而proj_out是tie到decoder的input embedding上的,因此也会设置_is_hf_initialized为True: + + +``` + if hasattr(model.config, "tie_word_embeddings") and model.config.tie_word_embeddings: + output_embeddings = model.get_output_embeddings() + if output_embeddings is not None: + # Still need to initialize if there is a bias term since biases are not tied. + if not hasattr(output_embeddings, "bias") or output_embeddings.bias is None: + output_embeddings._is_hf_initialized = True +``` + +is_hf_initialized为True,表明模型的参数已经完成初始化。 + +#### PreTrainedModel._initialize_weights + +``` + def _initialize_weights(self, module): + """ + Initialize the weights if they are not already initialized. + """ + if getattr(module, "_is_hf_initialized", False): + return + self._init_weights(module) + module._is_hf_initialized = True +``` + +如果某个module的_is_hf_initialized是True,那么就说明参数以及初始化过了,不需要在这里初始化。因此我们这里唯一需要初始化的就是WhisperForConditionalGeneration,它最终会调用下面WhisperPreTrainedModel的_init_weights。【而WhisperForConditionalGeneration只是包含了WhisperModel和proj_out,这些都已经初始化过了,后面的代码并不需要初始化什么参数。】 + +#### WhisperPreTrainedModel._init_weights + +``` + def _init_weights(self, module): + std = self.config.init_std + if isinstance(module, (nn.Linear, nn.Conv1d)): + module.weight.data.normal_(mean=0.0, std=std) + if module.bias is not None: + module.bias.data.zero_() + elif isinstance(module, nn.Embedding): + module.weight.data.normal_(mean=0.0, std=std) + if module.padding_idx is not None: + module.weight.data[module.padding_idx].zero_() + elif isinstance(module, WhisperEncoder): + with torch.no_grad(): + embed_positions = module.embed_positions.weight + embed_positions.copy_(sinusoids(*embed_positions.shape)) +``` + +我们这里传入的module是WhisperForConditionalGeneration,上面的条件都不满足,因此什么也没有做。 + +#### _load_state_dict_into_model函数 + +这个函数除了处理一下特殊的state_dict的key(把gamma和beta变成weight和bias),最终调用的是load函数。load函数也是在这个函数里面定义的。 + + +#### load函数 + +``` + def load(module: nn.Module, state_dict, prefix=""): + local_metadata = {} if metadata is None else metadata.get(prefix[:-1], {}) + args = (state_dict, prefix, local_metadata, True, [], [], error_msgs) + # Parameters of module and children will start with prefix. We can exit early if there are none in this + # state_dict + if len([key for key in state_dict if key.startswith(prefix)]) > 0: + if is_deepspeed_zero3_enabled(): + import deepspeed + + # In sharded models, each shard has only part of the full state_dict, so only gather + # parameters that are in the current state_dict. + named_parameters = dict(module.named_parameters(prefix=prefix[:-1], recurse=False)) + params_to_gather = [named_parameters[k] for k in state_dict.keys() if k in named_parameters] + if len(params_to_gather) > 0: + # because zero3 puts placeholders in model params, this context + # manager gathers (unpartitions) the params of the current layer, then loads from + # the state dict and then re-partitions them again + with deepspeed.zero.GatheredParameters(params_to_gather, modifier_rank=0): + if torch.distributed.get_rank() == 0: + module._load_from_state_dict(*args) + else: + module._load_from_state_dict(*args) + + for name, child in module._modules.items(): + if child is not None: + load(child, state_dict, prefix + name + ".") +``` + +这个函数最终调用的也是pytorch的_load_from_state_dict,只不过因为pytorch的_load_from_state_dict不会递归的加载子模块,因此load函数会递归的对子模块调用load。至此,模型的参数就加载完毕。 + +#### GenerationConfig.from_pretrained + +``` + @classmethod + def from_pretrained( + cls, + pretrained_model_name: Union[str, os.PathLike], + config_file_name: Optional[Union[str, os.PathLike]] = None, + cache_dir: Optional[Union[str, os.PathLike]] = None, + force_download: bool = False, + local_files_only: bool = False, + token: Optional[Union[str, bool]] = None, + revision: str = "main", + **kwargs, + ) -> "GenerationConfig": + + + resolved_config_file = cached_file( + pretrained_model_name, + configuration_file, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + resume_download=resume_download, + local_files_only=local_files_only, + token=token, + user_agent=user_agent, + revision=revision, + subfolder=subfolder, + _commit_hash=commit_hash, + ) + + +``` + + +resolved_config_file是'.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/generation_config.json' + +这个json加载后的内容是: + +``` +{'alignment_heads': [[...], [...], [...], [...], [...], [...], [...], [...], [...], ...], 'begin_suppress_tokens': [220, 50257], 'bos_token_id': 50257, 'decoder_start_token_id': 50258, 'eos_token_id': 50257, 'forced_decoder_ids': [[...], [...]], 'is_multilingual': True, 'lang_to_id': {'<|af|>': 50327, '<|am|>': 50334, '<|ar|>': 50272, '<|as|>': 50350, '<|az|>': 50304, '<|ba|>': 50355, '<|be|>': 50330, '<|bg|>': 50292, '<|bn|>': 50302, ...}, 'max_initial_timestamp_index': 50, 'max_length': 448, 'no_timestamps_token_id': 50363, 'pad_token_id': 50257, 'prev_sot_token_id': 50361, 'return_timestamps': False, ...} +``` + + +### Tokenizer的加载 + +代码在AutoTokenizer.from_pretrained: + +``` + tokenizer_config = get_tokenizer_config(pretrained_model_name_or_path, **kwargs) + + config_tokenizer_class = tokenizer_config.get("tokenizer_class") + + ... + return tokenizer_class.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs) +``` + +config_tokenizer_class的值是'WhisperTokenizer'。tokenizer_class是'transformers.models.whisper.tokenization_whisper_fast.WhisperTokenizerFast'。 + +#### get_tokenizer_config + +``` + resolved_config_file = cached_file( + pretrained_model_name_or_path, + TOKENIZER_CONFIG_FILE, + cache_dir=cache_dir, + force_download=force_download, + resume_download=resume_download, + proxies=proxies, + token=token, + revision=revision, + local_files_only=local_files_only, + subfolder=subfolder, + _raise_exceptions_for_gated_repo=False, + _raise_exceptions_for_missing_entries=False, + _raise_exceptions_for_connection_errors=False, + _commit_hash=commit_hash, + ) +``` + +resolved_config_file文件是'.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/tokenizer_config.json',它的内容是: + +``` +{'add_bos_token': False, 'add_prefix_space': False, 'added_tokens_decoder': {'50257': {...}, '50258': {...}, '50259': {...}, '50260': {...}, '50261': {...}, '50262': {...}, '50263': {...}, '50264': {...}, '50265': {...}, ...}, 'additional_special_tokens': ['<|endoftext|>', '<|startoftranscript|>', '<|en|>', '<|zh|>', '<|de|>', '<|es|>', '<|ru|>', '<|ko|>', '<|fr|>', ...], 'bos_token': '<|endoftext|>', 'clean_up_tokenization_spaces': True, 'eos_token': '<|endoftext|>', 'errors': 'replace', 'model_max_length': 1024, 'pad_token': '<|endoftext|>', 'processor_class': 'WhisperProcessor', 'return_attention_mask': False, 'tokenizer_class': 'WhisperTokenizer', 'unk_token': '<|endoftext|>'} +``` + + +#### PreTrainedTokenizerBase.from_pretrained + +WhisperTokenizerFast.from_pretrained最终会调用PreTrainedTokenizerBase.from_pretrained。 + +``` + additional_files_names = { + "added_tokens_file": ADDED_TOKENS_FILE, # kept only for legacy + "special_tokens_map_file": SPECIAL_TOKENS_MAP_FILE, # kept only for legacy + "tokenizer_config_file": TOKENIZER_CONFIG_FILE, + # tokenizer_file used to initialize a slow from a fast. Properly copy the `addedTokens` instead of adding in random orders + "tokenizer_file": FULL_TOKENIZER_FILE, + } + vocab_files = {**cls.vocab_files_names, **additional_files_names} + if "tokenizer_file" in vocab_files: + # Try to get the tokenizer config to see if there are versioned tokenizer files. + fast_tokenizer_file = FULL_TOKENIZER_FILE + resolved_config_file = cached_file( + pretrained_model_name_or_path, + TOKENIZER_CONFIG_FILE, + cache_dir=cache_dir, + force_download=force_download, + resume_download=resume_download, + proxies=proxies, + token=token, + revision=revision, + local_files_only=local_files_only, + subfolder=subfolder, + user_agent=user_agent, + _raise_exceptions_for_gated_repo=False, + _raise_exceptions_for_missing_entries=False, + _raise_exceptions_for_connection_errors=False, + _commit_hash=commit_hash, + ) + commit_hash = extract_commit_hash(resolved_config_file, commit_hash) + if resolved_config_file is not None: + with open(resolved_config_file, encoding="utf-8") as reader: + tokenizer_config = json.load(reader) + if "fast_tokenizer_files" in tokenizer_config: + fast_tokenizer_file = get_fast_tokenizer_file(tokenizer_config["fast_tokenizer_files"]) + vocab_files["tokenizer_file"] = fast_tokenizer_file + + ... + return cls._from_pretrained( + resolved_vocab_files, + pretrained_model_name_or_path, + init_configuration, + *init_inputs, + token=token, + cache_dir=cache_dir, + local_files_only=local_files_only, + _commit_hash=commit_hash, + _is_local=is_local, + trust_remote_code=trust_remote_code, + **kwargs, + ) +``` + +最终调用cls()的_from_pretrained方法,并且传入的参数resolved_vocab_files为: + +``` +{'vocab_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/vocab.json', 'tokenizer_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/tokenizer.json', 'merges_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/merges.txt', 'normalizer_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/normalizer.json', 'added_tokens_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/added_tokens.json', 'special_tokens_map_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/special_tokens_map.json', 'tokenizer_config_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/tokenizer_config.json'} +``` + + +#### PreTrainedTokenizerBase._from_pretrained + +首先是确定各种词典文件的名称和路径: + +``` + additional_files_names = { + "added_tokens_file": ADDED_TOKENS_FILE, # kept only for legacy + "special_tokens_map_file": SPECIAL_TOKENS_MAP_FILE, # kept only for legacy + "tokenizer_config_file": TOKENIZER_CONFIG_FILE, + # tokenizer_file used to initialize a slow from a fast. Properly copy the `addedTokens` instead of adding in random orders + "tokenizer_file": FULL_TOKENIZER_FILE, + } + vocab_files = {**cls.vocab_files_names, **additional_files_names} + if "tokenizer_file" in vocab_files: + # Try to get the tokenizer config to see if there are versioned tokenizer files. + fast_tokenizer_file = FULL_TOKENIZER_FILE + resolved_config_file = cached_file( + pretrained_model_name_or_path, + TOKENIZER_CONFIG_FILE, + cache_dir=cache_dir, + force_download=force_download, + resume_download=resume_download, + proxies=proxies, + token=token, + revision=revision, + local_files_only=local_files_only, + subfolder=subfolder, + user_agent=user_agent, + _raise_exceptions_for_gated_repo=False, + _raise_exceptions_for_missing_entries=False, + _raise_exceptions_for_connection_errors=False, + _commit_hash=commit_hash, + ) + commit_hash = extract_commit_hash(resolved_config_file, commit_hash) + if resolved_config_file is not None: + with open(resolved_config_file, encoding="utf-8") as reader: + tokenizer_config = json.load(reader) + if "fast_tokenizer_files" in tokenizer_config: + fast_tokenizer_file = get_fast_tokenizer_file(tokenizer_config["fast_tokenizer_files"]) + vocab_files["tokenizer_file"] = fast_tokenizer_file + + # Get files from url, cache, or disk depending on the case + resolved_vocab_files = {} + unresolved_files = [] + for file_id, file_path in vocab_files.items(): + if file_path is None: + resolved_vocab_files[file_id] = None + elif single_file_id == file_id: + if os.path.isfile(file_path): + resolved_vocab_files[file_id] = file_path + elif is_remote_url(file_path): + resolved_vocab_files[file_id] = download_url(file_path, proxies=proxies) + else: + resolved_vocab_files[file_id] = cached_file( + pretrained_model_name_or_path, + file_path, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + resume_download=resume_download, + local_files_only=local_files_only, + token=token, + user_agent=user_agent, + revision=revision, + subfolder=subfolder, + _raise_exceptions_for_gated_repo=False, + _raise_exceptions_for_missing_entries=False, + _raise_exceptions_for_connection_errors=False, + _commit_hash=commit_hash, + ) + commit_hash = extract_commit_hash(resolved_vocab_files[file_id], commit_hash) + +``` + + +vocab_files为: +``` +{'vocab_file': 'vocab.json', 'tokenizer_file': 'tokenizer.json', 'merges_file': 'merges.txt', 'normalizer_file': 'normalizer.json', 'added_tokens_file': 'added_tokens.json', 'special_tokens_map_file': 'special_tokens_map.json', 'tokenizer_config_file': 'tokenizer_config.json'} +``` + +resolved_vocab_files为: +``` +{'vocab_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/vocab.json', 'tokenizer_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/tokenizer.json', 'merges_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/merges.txt', 'normalizer_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/normalizer.json', 'added_tokens_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/added_tokens.json', 'special_tokens_map_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/special_tokens_map.json', 'tokenizer_config_file': '.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/tokenizer_config.json'} +``` + +然后调用: + +``` + return cls._from_pretrained( + resolved_vocab_files, + pretrained_model_name_or_path, + init_configuration, + *init_inputs, + token=token, + cache_dir=cache_dir, + local_files_only=local_files_only, + _commit_hash=commit_hash, + _is_local=is_local, + trust_remote_code=trust_remote_code, + **kwargs, + ) +``` + +这里的cls为。但是最后还是调用到PreTrainedTokenizerBase._from_pretrained。 + + +#### PreTrainedTokenizerBase._from_pretrained + +我们逐段来看看: + +``` + tokenizer_config_file = resolved_vocab_files.pop("tokenizer_config_file", None) + if tokenizer_config_file is not None: + with open(tokenizer_config_file, encoding="utf-8") as tokenizer_config_handle: + init_kwargs = json.load(tokenizer_config_handle) + # First attempt. We get tokenizer_class from tokenizer_config to check mismatch between tokenizers. + config_tokenizer_class = init_kwargs.get("tokenizer_class") + init_kwargs.pop("tokenizer_class", None) + if not has_tokenizer_file: + init_kwargs.pop("tokenizer_file", None) + saved_init_inputs = init_kwargs.pop("init_inputs", ()) + if not init_inputs: + init_inputs = saved_init_inputs +``` + +上面的代码根据tokenizer_config_file的配置,找到config_tokenizer_class为'WhisperTokenizer'。 + + +``` + if "added_tokens_decoder" in init_kwargs: + for idx, token in init_kwargs["added_tokens_decoder"].items(): + if isinstance(token, dict): + token = AddedToken(**token) + if isinstance(token, AddedToken): + added_tokens_decoder[int(idx)] = token + added_tokens_map[str(token)] = token + else: + raise ValueError( + f"Found a {token.__class__} in the saved `added_tokens_decoder`, should be a dictionary or an AddedToken instance" + ) +``` + +接着除了decoder增加的token(added_tokens_decoder)。比如一个例子是: + +``` +AddedToken("<|endoftext|>", rstrip=False, lstrip=False, single_word=False, normalized=False, special=True) +``` + +这个token的id是50527,token的内容是"\<\|endoftext\|\>"。 + + +最后调用cls的构造函数: + +``` + tokenizer = cls(*init_inputs, **init_kwargs) +``` + +#### WhisperTokenizerFast的构造函数 + + +``` +class WhisperTokenizerFast(PreTrainedTokenizerFast): + + vocab_files_names = VOCAB_FILES_NAMES + pretrained_vocab_files_map = PRETRAINED_VOCAB_FILES_MAP + max_model_input_sizes = PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES + model_input_names = ["input_ids", "attention_mask"] + slow_tokenizer_class = WhisperTokenizer + + def __init__( + self, + vocab_file=None, + merges_file=None, + normalizer_file=None, + tokenizer_file=None, + unk_token="<|endoftext|>", + bos_token="<|endoftext|>", + eos_token="<|endoftext|>", + add_prefix_space=False, + language=None, + task=None, + predict_timestamps=False, + **kwargs, + ): + bos_token = ( + AddedToken(bos_token, lstrip=False, rstrip=False, normalized=False, special=True) + if isinstance(bos_token, str) + else bos_token + ) + eos_token = ( + AddedToken(eos_token, lstrip=False, rstrip=False, normalized=False, special=True) + if isinstance(eos_token, str) + else eos_token + ) + unk_token = ( + AddedToken(unk_token, lstrip=False, rstrip=False, normalized=False, special=True) + if isinstance(unk_token, str) + else unk_token + ) + + super().__init__( + vocab_file, + merges_file, + tokenizer_file=tokenizer_file, + unk_token=unk_token, + bos_token=bos_token, + eos_token=eos_token, + add_prefix_space=add_prefix_space, + **kwargs, + ) + + self.add_bos_token = kwargs.pop("add_bos_token", False) + + pre_tok_state = json.loads(self.backend_tokenizer.pre_tokenizer.__getstate__()) + if pre_tok_state.get("add_prefix_space", add_prefix_space) != add_prefix_space: + pre_tok_class = getattr(pre_tokenizers, pre_tok_state.pop("type")) + pre_tok_state["add_prefix_space"] = add_prefix_space + self.backend_tokenizer.pre_tokenizer = pre_tok_class(**pre_tok_state) + + if normalizer_file is not None: + with open(normalizer_file, encoding="utf-8") as vocab_handle: + self.english_spelling_normalizer = json.load(vocab_handle) + else: + self.english_spelling_normalizer = None + + self.add_prefix_space = add_prefix_space + self.timestamp_pat = re.compile(r"<\|(\d+\.\d+)\|>") + + self.language = language + self.task = task + self.predict_timestamps = predict_timestamps +``` + +normalizer_file是归一化的文件(.cache/huggingface/hub/models--openai--whisper-small/snapshots/973afd24965f72e36ca33b3055d56a652f456b4d/normalizer.json),加载后self.english_spelling_normalizer为: + +``` +{'accessorise': 'accessorize', 'accessorised': 'accessorized', 'accessorises': 'accessorizes', 'accessorising': 'accessorizing', 'acclimatisation': 'acclimatization', 'acclimatise': 'acclimatize', 'acclimatised': 'acclimatized', 'acclimatises': 'acclimatizes', 'acclimatising': 'acclimatizing', 'accoutrements': 'accouterments', 'aeon': 'eon', 'aeons': 'eons', 'aerogramme': 'aerogram', 'aerogrammes': 'aerograms', ...} +``` + +### AutoFeatureExtractor.from_pretrained + +因为asr的输入是语音,所以pipeline会用AutoFeatureExtractor来加载FeatureExtractor。 + +``` + config_dict, _ = FeatureExtractionMixin.get_feature_extractor_dict(pretrained_model_name_or_path, **kwargs) + ... + if feature_extractor_class is not None: + feature_extractor_class = feature_extractor_class_from_name(feature_extractor_class) + + ... + return feature_extractor_class.from_dict(config_dict, **kwargs) +``` + +config_dict为: +``` +{'chunk_length': 30, 'feature_extractor_type': 'WhisperFeatureExtractor', 'feature_size': 80, 'hop_length': 160, 'mel_filters': [[...], [...], [...], [...], [...], [...], [...], [...], [...], ...], 'n_fft': 400, 'n_samples': 480000, 'nb_max_frames': 3000, 'padding_side': 'right', 'padding_value': 0.0, 'processor_class': 'WhisperProcessor', 'return_attention_mask': False, 'sampling_rate': 16000} +``` + +从这里我们可以知道whisper每次处理的chunk长度为30秒(chunk_length),具体的FeatureExtractor为WhisperFeatureExtractor,特征的维度为80(melfilter的个数),窗口长度为400个点(25ms),窗口每次滑动160个点(10ms)。这都是asr比较标准的输入处理方式。 + +feature_extractor_class为。 + + +#### FeatureExtractionMixin.from_dict + +``` + @classmethod + def from_dict(cls, feature_extractor_dict: Dict[str, Any], **kwargs) -> PreTrainedFeatureExtractor: + return_unused_kwargs = kwargs.pop("return_unused_kwargs", False) + + feature_extractor = cls(**feature_extractor_dict) + + # Update feature_extractor with kwargs if needed + to_remove = [] + for key, value in kwargs.items(): + if hasattr(feature_extractor, key): + setattr(feature_extractor, key, value) + to_remove.append(key) + for key in to_remove: + kwargs.pop(key, None) + + logger.info(f"Feature extractor {feature_extractor}") + if return_unused_kwargs: + return feature_extractor, kwargs + else: + return feature_extractor +``` + +最终还是调用cls(WhisperFeatureExtractor)的构造函数: + +#### WhisperFeatureExtractor构造函数 + +``` +class WhisperFeatureExtractor(SequenceFeatureExtractor): + + model_input_names = ["input_features"] + + def __init__( + self, + feature_size=80, + sampling_rate=16000, + hop_length=160, + chunk_length=30, + n_fft=400, + padding_value=0.0, + return_attention_mask=False, # pad inputs to max length with silence token (zero) and no attention mask + **kwargs, + ): + super().__init__( + feature_size=feature_size, + sampling_rate=sampling_rate, + padding_value=padding_value, + return_attention_mask=return_attention_mask, + **kwargs, + ) + self.n_fft = n_fft + self.hop_length = hop_length + self.chunk_length = chunk_length + self.n_samples = chunk_length * sampling_rate + self.nb_max_frames = self.n_samples // hop_length + self.sampling_rate = sampling_rate + self.mel_filters = mel_filter_bank( + num_frequency_bins=1 + n_fft // 2, + num_mel_filters=feature_size, + min_frequency=0.0, + max_frequency=8000.0, + sampling_rate=sampling_rate, + norm="slaney", + mel_scale="slaney", + ) +``` + +这个函数就是初始化一下参数,最后是构造mel_filter_bank。 + +#### mel_filter_bank + + +``` +def mel_filter_bank( + num_frequency_bins: int, + num_mel_filters: int, + min_frequency: float, + max_frequency: float, + sampling_rate: int, + norm: Optional[str] = None, + mel_scale: str = "htk", + triangularize_in_mel_space: bool = False, +) -> np.ndarray: + """ + Creates a frequency bin conversion matrix used to obtain a mel spectrogram. This is called a *mel filter bank*, and + various implementation exist, which differ in the number of filters, the shape of the filters, the way the filters + are spaced, the bandwidth of the filters, and the manner in which the spectrum is warped. The goal of these + features is to approximate the non-linear human perception of the variation in pitch with respect to the frequency. + + Different banks of mel filters were introduced in the literature. The following variations are supported: + + - MFCC FB-20: introduced in 1980 by Davis and Mermelstein, it assumes a sampling frequency of 10 kHz and a speech + bandwidth of `[0, 4600]` Hz. + - MFCC FB-24 HTK: from the Cambridge HMM Toolkit (HTK) (1995) uses a filter bank of 24 filters for a speech + bandwidth of `[0, 8000]` Hz. This assumes sampling rate ≥ 16 kHz. + - MFCC FB-40: from the Auditory Toolbox for MATLAB written by Slaney in 1998, assumes a sampling rate of 16 kHz and + speech bandwidth of `[133, 6854]` Hz. This version also includes area normalization. + - HFCC-E FB-29 (Human Factor Cepstral Coefficients) of Skowronski and Harris (2004), assumes a sampling rate of + 12.5 kHz and speech bandwidth of `[0, 6250]` Hz. + + This code is adapted from *torchaudio* and *librosa*. Note that the default parameters of torchaudio's + `melscale_fbanks` implement the `"htk"` filters while librosa uses the `"slaney"` implementation. + + Args: + num_frequency_bins (`int`): + Number of frequencies used to compute the spectrogram (should be the same as in `stft`). + num_mel_filters (`int`): + Number of mel filters to generate. + min_frequency (`float`): + Lowest frequency of interest in Hz. + max_frequency (`float`): + Highest frequency of interest in Hz. This should not exceed `sampling_rate / 2`. + sampling_rate (`int`): + Sample rate of the audio waveform. + norm (`str`, *optional*): + If `"slaney"`, divide the triangular mel weights by the width of the mel band (area normalization). + mel_scale (`str`, *optional*, defaults to `"htk"`): + The mel frequency scale to use, `"htk"`, `"kaldi"` or `"slaney"`. + triangularize_in_mel_space (`bool`, *optional*, defaults to `False`): + If this option is enabled, the triangular filter is applied in mel space rather than frequency space. This + should be set to `true` in order to get the same results as `torchaudio` when computing mel filters. + + Returns: + `np.ndarray` of shape (`num_frequency_bins`, `num_mel_filters`): Triangular filter bank matrix. This is a + projection matrix to go from a spectrogram to a mel spectrogram. + """ + if norm is not None and norm != "slaney": + raise ValueError('norm must be one of None or "slaney"') + + # center points of the triangular mel filters + mel_min = hertz_to_mel(min_frequency, mel_scale=mel_scale) + mel_max = hertz_to_mel(max_frequency, mel_scale=mel_scale) + mel_freqs = np.linspace(mel_min, mel_max, num_mel_filters + 2) + filter_freqs = mel_to_hertz(mel_freqs, mel_scale=mel_scale) + + if triangularize_in_mel_space: + # frequencies of FFT bins in Hz, but filters triangularized in mel space + fft_bin_width = sampling_rate / (num_frequency_bins * 2) + fft_freqs = hertz_to_mel(fft_bin_width * np.arange(num_frequency_bins), mel_scale=mel_scale) + filter_freqs = mel_freqs + else: + # frequencies of FFT bins in Hz + fft_freqs = np.linspace(0, sampling_rate // 2, num_frequency_bins) + + mel_filters = _create_triangular_filter_bank(fft_freqs, filter_freqs) + + if norm is not None and norm == "slaney": + # Slaney-style mel is scaled to be approx constant energy per channel + enorm = 2.0 / (filter_freqs[2 : num_mel_filters + 2] - filter_freqs[:num_mel_filters]) + mel_filters *= np.expand_dims(enorm, 0) + + if (mel_filters.max(axis=0) == 0.0).any(): + warnings.warn( + "At least one mel filter has all zero values. " + f"The value for `num_mel_filters` ({num_mel_filters}) may be set too high. " + f"Or, the value for `num_frequency_bins` ({num_frequency_bins}) may be set too low." + ) + + return mel_filters +``` + +关于mel_filter_bank不做深入介绍,感兴趣的读者可以查找相关资料。 + +### AutomaticSpeechRecognitionPipeline + +``` +class AutomaticSpeechRecognitionPipeline(ChunkPipeline): + + def __init__( + self, + model: "PreTrainedModel", + feature_extractor: Union["SequenceFeatureExtractor", str] = None, + tokenizer: Optional[PreTrainedTokenizer] = None, + decoder: Optional[Union["BeamSearchDecoderCTC", str]] = None, + device: Union[int, "torch.device"] = None, + torch_dtype: Optional[Union[str, "torch.dtype"]] = None, + **kwargs, + ): + # set the model type so we can check we have the right pre- and post-processing parameters + if model.config.model_type == "whisper": + self.type = "seq2seq_whisper" + elif model.__class__.__name__ in MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES.values(): + self.type = "seq2seq" + elif ( + feature_extractor._processor_class + and feature_extractor._processor_class.endswith("WithLM") + and decoder is not None + ): + self.decoder = decoder + self.type = "ctc_with_lm" + else: + self.type = "ctc" + + super().__init__(model, tokenizer, feature_extractor, device=device, torch_dtype=torch_dtype, **kwargs) + +``` diff --git a/img/hfwhisper/1.png b/img/hfwhisper/1.png new file mode 100644 index 0000000000000000000000000000000000000000..293dff7a4f793eb7a4c40d959612050d8d4e8463 GIT binary patch literal 187703 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

$PY)G3dsaE(j8B%VqGGbjsgjzS?co|; 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

t} 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 literal 0 HcmV?d00001