From c6ba32d3e19194638e5f2d15532c0520b7998abf Mon Sep 17 00:00:00 2001 From: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Date: Mon, 29 Jan 2024 15:46:28 -0800 Subject: [PATCH 01/10] [tutorial] fixed missing RIR scripts file. (#8257) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> --- tutorials/asr/Online_Noise_Augmentation.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/asr/Online_Noise_Augmentation.ipynb b/tutorials/asr/Online_Noise_Augmentation.ipynb index fe3125683091..7d682177b641 100644 --- a/tutorials/asr/Online_Noise_Augmentation.ipynb +++ b/tutorials/asr/Online_Noise_Augmentation.ipynb @@ -752,8 +752,9 @@ "source": [ "# This is where the rir data will be downloaded.\n", "# Change this if you don't want the data to be extracted in the current directory.\n", + "!wget https://raw.githubusercontent.com/NVIDIA/NeMo/$BRANCH/scripts/dataset_processing/get_openslr_rir_data.py\n", "rir_data_path = '.'\n", - "!python ../../scripts/dataset_processing/get_openslr_rir_data.py --data_root {rir_data_path}\n", + "!python get_openslr_rir_data.py --data_root {rir_data_path}\n", "rir_manifest_path = os.path.join(rir_data_path, 'processed', 'rir.json')\n", "!head -n 3 {rir_manifest_path}" ] From 005206a2693e488fd87f810ec6ac0a090aac9a00 Mon Sep 17 00:00:00 2001 From: Mariana <47233618+mgrafu@users.noreply.github.com> Date: Tue, 30 Jan 2024 14:01:45 -0500 Subject: [PATCH 02/10] add values to en tts dict (#7879) Signed-off-by: Mariana Graterol Fuenmayor --- scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt b/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt index c1ba23d3de6c..5d3c8f52570e 100644 --- a/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt +++ b/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt @@ -2105,6 +2105,7 @@ AHSAHKA ɑˈsɑkə AHUJA ɑˈhujə AHUMADA ɑjuˈmɑdə AHWAHNEE əˈwɑni +AI ˈeɪˈaɪ AICHELE ˈaɪkəl AICHER ˈaɪkɚ AICHI ɑˈitʃi @@ -55996,6 +55997,8 @@ HOLOGRAM ˈhɔloʊˌɡɹæm HOLOGRAMS ˈhɔloʊˌɡɹæmz HOLOGRAPHIC ˌhɔloʊˈɡɹæfɪk HOLOHAN ˈhɔləhæn +HOLOHUB ˈhɑloʊhəb +HOLOSCAN ˈhɑloʊskæn HOLQUIN ˈhoʊlkwɪn HOLROYD ˈhoʊlˌɹɔɪd HOLSAPPLE ˈhoʊlsəpəl @@ -58186,6 +58189,7 @@ IGUANA ˌɪˈɡwɑnə IGUANAS ˌɪˈɡwɑnəz IGUCHI iˈɡuˌtʃi IGUSHI ɪˈɡuˌʃi +IGX aɪdʒiˈɛks IHASZ ˈaɪhæs IHDE ˈɪd IHLE ˈaɪhəl @@ -62114,6 +62118,7 @@ JETHRO ˈdʒɛθɹoʊ JETLINER ˈdʒɛtˌlaɪnɚ JETLINER'S ˈdʒɛtˌlaɪnɚz JETLINERS ˈdʒɛtˌlaɪnɚz +JETPACK ˈdʒɛtˈpæk JETRO ˈdʒɛtɹoʊ JETS ˈdʒɛts JETS' ˈdʒɛts @@ -124295,7 +124300,7 @@ UBBEN ˈʌbən UBER ˈubɚ UBIQUITOUS juˈbɪkwɪtəs UBIQUITY juˈbɪkwɪti -UBUNTU ˌuˈbuˌtu +UBUNTU uˈbʊntu UCCEL ˈutʃəl UCCEL'S ˈutʃəlz UCCI ˈutʃi @@ -134637,6 +134642,7 @@ GCP ˈdʒiˈsiˈpi GE dʒiˈi GEFORCE ˈdʒiˈfɔɹs GI ˈdʒiˈeɪ +GIGABIT ˈɡɪɡəbɪt GIGAHERTZ ˈɡɪɡəˌhɛɹts GMAIL ˈdʒiˈmeɪl GPU ˈdʒiˈpiˈju From 5305b0d74d172d2a423d34b93cfce8d67a6ea604 Mon Sep 17 00:00:00 2001 From: yaoyu-33 <54727607+yaoyu-33@users.noreply.github.com> Date: Wed, 31 Jan 2024 12:04:14 -0800 Subject: [PATCH 03/10] Add Bert HF checkpoint converter (#8088) * Add Bert HF checkpoint converter Signed-off-by: yaoyu-33 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Reformat Signed-off-by: yaoyu-33 * Add BERT ONNX export * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Add NeMo BERT to HF BERT script * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Clean code Signed-off-by: yaoyu-33 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update argument names Signed-off-by: yaoyu-33 * Update build_transformer_config in Bert Signed-off-by: yaoyu-33 --------- Signed-off-by: yaoyu-33 Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Bobby Chen --- .../conf/megatron_bert_config.yaml | 8 +- .../language_modeling/megatron/bert_model.py | 10 + .../language_modeling/megatron_bert_model.py | 63 ++++ .../modules/common/megatron/transformer.py | 27 +- .../convert_bert_hf_to_nemo.py | 289 ++++++++++++++++++ .../convert_bert_nemo_to_hf.py | 269 ++++++++++++++++ .../export_nemo_bert_to_onnx.py | 83 +++++ 7 files changed, 745 insertions(+), 4 deletions(-) create mode 100644 scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py create mode 100644 scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py create mode 100644 scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py diff --git a/examples/nlp/language_modeling/conf/megatron_bert_config.yaml b/examples/nlp/language_modeling/conf/megatron_bert_config.yaml index d388fe35b963..b3e3912fffd4 100644 --- a/examples/nlp/language_modeling/conf/megatron_bert_config.yaml +++ b/examples/nlp/language_modeling/conf/megatron_bert_config.yaml @@ -2,7 +2,7 @@ name: megatron_bert restore_from_path: null # used when starting from a .nemo file trainer: - devices: 2 + devices: 1 num_nodes: 1 accelerator: gpu precision: 16 @@ -56,15 +56,19 @@ model: hidden_size: 768 ffn_hidden_size: 3072 # Transformer FFN hidden size. Usually 4 * hidden_size. num_attention_heads: 12 + skip_head: False + transformer_block_type: post_ln init_method_std: 0.02 # Standard deviation of the zero mean normal distribution used for weight initialization.') hidden_dropout: 0.1 # Dropout probability for hidden state transformer. kv_channels: null # Projection weights dimension in multi-head attention. Set to hidden_size // num_attention_heads if null apply_query_key_layer_scaling: True # scale Q * K^T by 1 / layer-number. + normalization: layernorm layernorm_epsilon: 1e-5 make_vocab_size_divisible_by: 128 # Pad the vocab size to be divisible by this value for computation efficiency. pre_process: True # add embedding post_process: True # add pooler bert_binary_head: True # BERT binary head + megatron_legacy: False tokenizer: library: 'megatron' @@ -128,7 +132,7 @@ model: # - /raid/data/pile/my-gpt3_00_text_document # - .5 # - /raid/data/pile/my-gpt3_01_text_document - data_prefix: ??? + data_prefix: [1.0, /path/to/data] index_mapping_dir: null # path to save index mapping .npy files, by default will save in the same location as data_prefix data_impl: mmap splits_string: 900,50,50 diff --git a/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py index 22cfd7fb8efa..7e928a4e893b 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py @@ -65,6 +65,9 @@ def bert_extended_attention_mask(attention_mask): # [b, 1, s, s] extended_attention_mask = attention_mask_bss.unsqueeze(1) + # HF Masking is equivalent to the one below + # extended_attention_mask = (attention_mask.unsqueeze(1) * torch.ones_like(attention_mask).unsqueeze(2)).unsqueeze(1) + # Convert attention mask to binary: extended_attention_mask = extended_attention_mask < 0.5 @@ -182,12 +185,15 @@ def __init__( activations_checkpoint_num_layers=1, activations_checkpoint_layers_per_pipeline=None, layernorm_epsilon=1e-5, + normalization='layernorm', + transformer_block_type='pre_ln', masked_softmax_fusion=False, bias_gelu_fusion=True, bias_dropout_add_fusion=True, openai_gelu=False, onnx_safe=False, add_binary_head=True, + skip_head=False, megatron_legacy=False, sequence_parallel=False, position_embedding_type='learned_absolute', @@ -229,6 +235,8 @@ def __init__( activations_checkpoint_num_layers=activations_checkpoint_num_layers, activations_checkpoint_layers_per_pipeline=activations_checkpoint_layers_per_pipeline, layernorm_epsilon=layernorm_epsilon, + normalization=normalization, + transformer_block_type=transformer_block_type, masked_softmax_fusion=masked_softmax_fusion, bias_activation_fusion=bias_gelu_fusion, bias_dropout_add_fusion=bias_dropout_add_fusion, @@ -242,6 +250,8 @@ def __init__( init_method=init_method_normal(init_method_std), vocab_size=vocab_size, hidden_size=hidden_size ) + if skip_head: + self.post_process = False if self.post_process: self.lm_head = BertLMHead( config, diff --git a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py index e4ae0f87d353..bef13367eb10 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py @@ -184,10 +184,13 @@ def model_provider_func(self, pre_process, post_process): ), layernorm_epsilon=cfg.get('layernorm_epsilon', 1e-5), masked_softmax_fusion=cfg.get('masked_softmax_fusion', True), + normalization=cfg.get('normalization', 'layernorm'), + transformer_block_type=cfg.get('transformer_block_type', 'pre_ln'), bias_gelu_fusion=cfg.get('bias_gelu_fusion', True), bias_dropout_add_fusion=cfg.get("bias_dropout_add_fusion", True), onnx_safe=cfg.get('onnx_safe', False), add_binary_head=cfg.bert_binary_head, + skip_head=cfg.get('skip_head', False), megatron_legacy=cfg.get('megatron_legacy', False), position_embedding_type=self.cfg.get("position_embedding_type", "learned_absolute"), ) @@ -1034,5 +1037,65 @@ def build_transformer_config(self) -> TransformerConfig: """ activation = self.cfg.get('activation', 'gelu') assert activation == 'gelu', "Only gelu activation is support for BERT at the moment." + + normalization = self.cfg.get('normalization', 'layernorm') + + layernorm_zero_centered_gamma = self.cfg.get('normalization', 'layernorm') == 'layernorm1p' + if normalization == 'layernorm': + normalization = 'LayerNorm' + elif normalization == 'rmsnorm': + normalization = 'RMSNorm' + elif normalization == 'layernorm1p': + normalization = 'LayerNorm' + layernorm_zero_centered_gamma = True + else: + logging.warning( + f"The normalization type: {normalization} might not be supported in megatron core." + f"Supported types are LayerNorm and RMSNorm." + ) + + # any configs that are not in the nemo model config will be added here + model_specific_configs = { + 'layernorm_zero_centered_gamma': layernorm_zero_centered_gamma, + 'normalization': normalization, + } + transformer_config = super().build_transformer_config() + + for key, value in model_specific_configs.items(): + setattr(transformer_config, key, value) + + # pass mcore customization configs directly to mcore + mcore_customization_config_dict = self.cfg.get('mcore_customization_config', {}) + for key, value in mcore_customization_config_dict.items(): + setattr(transformer_config, key, value) + return transformer_config + + +class MegatronBertTextEmbeddingModel(MegatronBertModel): + """ + Megatron Bert Text Embedding. + Model returns [batch, hidden] shape + """ + + def average_pool(self, last_hidden_states, attention_mask): + last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0) + return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None] + + def forward( + self, + input_ids, + attention_mask, + token_type_ids, + lm_labels=None, + checkpoint_activations_all_layers=None, + model=None, + ): + outputs = super().forward( + input_ids, attention_mask, token_type_ids, lm_labels, checkpoint_activations_all_layers, model + ) + embeddings = self.average_pool(outputs[0], attention_mask) + embeddings = F.normalize(embeddings, p=2, dim=1) + + return embeddings diff --git a/nemo/collections/nlp/modules/common/megatron/transformer.py b/nemo/collections/nlp/modules/common/megatron/transformer.py index ca8c0ecafefd..9e9c7b526782 100644 --- a/nemo/collections/nlp/modules/common/megatron/transformer.py +++ b/nemo/collections/nlp/modules/common/megatron/transformer.py @@ -625,7 +625,6 @@ def forward( ) output = bias_dropout_add_func(mlp_output, mlp_bias, residual, self.hidden_dropout) - # print(f"Layer: {self.layer_number} MLP + Dropout + Residual checksum {output.sum()}") if self.transformer_block_type == 'post_ln': output = self.post_attention_layernorm(output) @@ -1158,6 +1157,27 @@ def build_layer(layer_number): offset = parallel_state.get_pipeline_model_parallel_rank() * self.num_layers self.layers = torch.nn.ModuleList([build_layer(i + 1 + offset) for i in range(self.num_layers)]) + if self.pre_process and self.transformer_block_type == 'post_ln': + # Final layer norm before output. + if normalization == 'layernorm': + self.initial_layernorm = get_layer_norm( + hidden_size, layernorm_epsilon, persist_layer_norm, sequence_parallel=config.sequence_parallel + ) + + elif normalization == 'layernorm1p': + self.initial_layernorm = LayerNorm1P( + hidden_size, layernorm_epsilon, sequence_parallel_enabled=config.sequence_parallel + ) + elif normalization == 'low_precision_layernorm': + self.initial_layernorm = LPLayerNorm(hidden_size, layernorm_epsilon) + else: + self.initial_layernorm = MixedFusedRMSNorm(hidden_size, layernorm_epsilon) + # for architectures such as MPT, there is no bias term even on the layernorms + # this code allows us to remove the bias terms from the layernorm module + # so that we can support MPT. However, certain apex-based LNs don't support + # removing bias, so we also have to check for that + if not bias and normalization not in ['layernorm', 'layernorm1p']: + remove_bias_from_layernorm(self.initial_layernorm) if self.post_process and self.transformer_block_type != 'post_ln': # Final layer norm before output. @@ -1435,7 +1455,10 @@ def forward( 'get_key_value does not work with ' 'activation checkpointing' ) - if not self.pre_process: + if self.pre_process: + if self.transformer_block_type == 'post_ln': + hidden_states = self.initial_layernorm(hidden_states) + else: # See set_input_tensor() hidden_states = self.input_tensor diff --git a/scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py b/scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py new file mode 100644 index 000000000000..cc9483b68c8a --- /dev/null +++ b/scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py @@ -0,0 +1,289 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Example to run this conversion script: +``` + python convert_bert_hf_to_nemo.py \ + --input_name_or_path "thenlper/gte-large" \ + --output_path /path/to/output/nemo/file.nemo \ + --precision 32 +``` +""" + +import os +from argparse import ArgumentParser + +import torch +import torch.nn.functional as F +from omegaconf import OmegaConf +from transformers import AutoModel, AutoTokenizer + +from nemo.collections.nlp.models.language_modeling.megatron_bert_model import MegatronBertModel +from nemo.collections.nlp.parts.megatron_trainer_builder import MegatronTrainerBuilder +from nemo.utils import logging + + +def average_pool(last_hidden_states: torch.Tensor, attention_mask: torch.Tensor) -> torch.Tensor: + last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0) + return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None] + + +def create_rename_keys(num_hidden_layers): + rename_keys = [] + for i in range(num_hidden_layers): + # encoder layers: attention mechanism, 2 feedforward neural networks, and 2 layernorms + rename_keys.extend( + [ + ( + f"encoder.layer.{i}.attention.self.query.weight", + f"model.language_model.encoder.layers.{i}.self_attention.query.weight", + ), + ( + f"encoder.layer.{i}.attention.self.query.bias", + f"model.language_model.encoder.layers.{i}.self_attention.query.bias", + ), + ( + f"encoder.layer.{i}.attention.self.key.weight", + f"model.language_model.encoder.layers.{i}.self_attention.key.weight", + ), + ( + f"encoder.layer.{i}.attention.self.key.bias", + f"model.language_model.encoder.layers.{i}.self_attention.key.bias", + ), + ( + f"encoder.layer.{i}.attention.self.value.weight", + f"model.language_model.encoder.layers.{i}.self_attention.value.weight", + ), + ( + f"encoder.layer.{i}.attention.self.value.bias", + f"model.language_model.encoder.layers.{i}.self_attention.value.bias", + ), + ( + f"encoder.layer.{i}.attention.output.dense.weight", + f"model.language_model.encoder.layers.{i}.self_attention.dense.weight", + ), + ( + f"encoder.layer.{i}.attention.output.dense.bias", + f"model.language_model.encoder.layers.{i}.self_attention.dense.bias", + ), + ( + f"encoder.layer.{i}.attention.output.LayerNorm.weight", + f"model.language_model.encoder.layers.{i}.input_layernorm.weight", + ), + ( + f"encoder.layer.{i}.attention.output.LayerNorm.bias", + f"model.language_model.encoder.layers.{i}.input_layernorm.bias", + ), + ( + f"encoder.layer.{i}.intermediate.dense.weight", + f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.weight", + ), + ( + f"encoder.layer.{i}.intermediate.dense.bias", + f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.bias", + ), + ( + f"encoder.layer.{i}.output.dense.weight", + f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.weight", + ), + ( + f"encoder.layer.{i}.output.dense.bias", + f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.bias", + ), + ( + f"encoder.layer.{i}.output.LayerNorm.weight", + f"model.language_model.encoder.layers.{i}.post_attention_layernorm.weight", + ), + ( + f"encoder.layer.{i}.output.LayerNorm.bias", + f"model.language_model.encoder.layers.{i}.post_attention_layernorm.bias", + ), + ] + ) + + # Non-layer dependent keys + rename_keys.extend( + [ + ("embeddings.word_embeddings.weight", "model.language_model.embedding.word_embeddings.weight"), + ("embeddings.position_embeddings.weight", "model.language_model.embedding.position_embeddings.weight"), + ("embeddings.token_type_embeddings.weight", "model.language_model.embedding.tokentype_embeddings.weight"), + ("embeddings.LayerNorm.weight", "model.language_model.encoder.initial_layernorm.weight"), + ("embeddings.LayerNorm.bias", "model.language_model.encoder.initial_layernorm.bias"), + ("pooler.dense.weight", "model.language_model.pooler.dense.weight"), + ("pooler.dense.bias", "model.language_model.pooler.dense.bias"), + ] + ) + + return rename_keys + + +def rename_model_keys(model_state_dict, rename_keys): + """ + Rename keys in the model's state dictionary based on the provided mappings. + + Parameters: + model_state_dict (dict): The state dictionary of the model. + rename_keys (list): A list of tuples with the mapping (old_key, new_key). + + Returns: + dict: A new state dictionary with updated key names. + """ + + # Create a new state dictionary with updated key names + new_state_dict = {} + + # Track keys from the original state dict to ensure all are processed + remaining_keys = set(model_state_dict.keys()) + + # Iterate over the rename mappings + for old_key, new_key in rename_keys: + if old_key in model_state_dict: + # Rename the key and remove it from the tracking set + new_state_dict[new_key] = model_state_dict[old_key] + remaining_keys.remove(old_key) + else: + print(f"Warning: Key '{old_key}' not found in the model state dictionary.") + + # Check if any keys were not converted from old to new + for old_key in remaining_keys: + print(f"Warning: Key '{old_key}' was not converted.") + + return new_state_dict + + +def adjust_tensor_shapes(model, nemo_state_dict): + """ + Adapt tensor shapes in the state dictionary to ensure compatibility with a different model structure. + + Parameters: + nemo_state_dict (dict): The state dictionary of the model. + + Returns: + dict: The updated state dictionary with modified tensor shapes for compatibility. + """ + + # Note: For 'key' and 'value' weights and biases, NeMo uses a consolidated tensor 'query_key_value'. + for key_ in list(nemo_state_dict.keys()): + if "self_attention.query" in key_: + key_q = key_ + key_k = key_.replace('self_attention.query', 'self_attention.key') + key_v = key_.replace('self_attention.query', 'self_attention.value') + key_new = key_.replace('self_attention.query', 'self_attention.query_key_value') + value_new = torch.concat((nemo_state_dict[key_q], nemo_state_dict[key_k], nemo_state_dict[key_v]), dim=0) + nemo_state_dict[key_new] = value_new + del nemo_state_dict[key_q], nemo_state_dict[key_k], nemo_state_dict[key_v] + + # Padding to new vocab size + original_embedding = nemo_state_dict['model.language_model.embedding.word_embeddings.weight'] + vocab_size = original_embedding.size(0) + if model.padded_vocab_size > vocab_size: + zeros_to_add = torch.zeros( + model.padded_vocab_size - vocab_size, + original_embedding.size(1), + dtype=original_embedding.dtype, + device=original_embedding.device, + ) + # Concatenate the two tensors along rows + padded_embedding = torch.cat([original_embedding, zeros_to_add], dim=0) + nemo_state_dict['model.language_model.embedding.word_embeddings.weight'] = padded_embedding + + return nemo_state_dict + + +def adjust_nemo_config(model_config, ref_config): + model_config.tokenizer["type"] = "intfloat/e5-large-unsupervised" # ref_config["_input_name_or_path"] + model_config["num_layers"] = ref_config["num_hidden_layers"] + model_config["hidden_size"] = ref_config["hidden_size"] + model_config["ffn_hidden_size"] = ref_config["intermediate_size"] + model_config["num_attention_heads"] = ref_config["num_attention_heads"] + model_config["layernorm_epsilon"] = ref_config["layer_norm_eps"] + model_config["normalization"] = "layernorm" + model_config["transformer_block_type"] = "post_ln" + model_config["apply_query_key_layer_scaling"] = False + model_config["skip_head"] = True + model_config["megatron_legacy"] = True + return model_config + + +def get_args(): + parser = ArgumentParser() + parser.add_argument("--input_name_or_path", type=str, default="thenlper/gte-large") + parser.add_argument( + "--hparams_file", + type=str, + default=f"{os.path.dirname(__file__)}/../../examples/nlp/language_modeling/conf/megatron_bert_config.yaml", + required=False, + help="Path config for restoring. It's created during training and may need to be modified during restore if restore environment is different than training. Ex: /raid/nemo_experiments/megatron_gpt/hparams.yaml", + ) + parser.add_argument("--output_path", type=str, default=None, required=True, help="Path to output .nemo file.") + parser.add_argument( + "--precision", type=str, default="32", choices=["bf16", "32"], help="Precision for checkpoint weights saved" + ) + + args = parser.parse_args() + return args + + +def convert(args): + logging.info(f"Loading checkpoint from HF: `{args.input_name_or_path}`") + hf_tokenizer = AutoTokenizer.from_pretrained(args.input_name_or_path) + hf_model = AutoModel.from_pretrained(args.input_name_or_path) + + nemo_config = OmegaConf.load(args.hparams_file) + nemo_config.model = adjust_nemo_config(nemo_config.model, hf_model.config.to_dict()) + + nemo_config.trainer["precision"] = args.precision + trainer = MegatronTrainerBuilder(nemo_config).create_trainer() + model = MegatronBertModel(nemo_config.model, trainer) + + old_state_dict = hf_model.state_dict() + rename_keys = create_rename_keys(nemo_config.model.num_layers) + new_state_dict = rename_model_keys(model_state_dict=old_state_dict, rename_keys=rename_keys) + nemo_state_dict = adjust_tensor_shapes(model, new_state_dict) + model.load_state_dict(nemo_state_dict, strict=True) + + logging.info(f'=' * 50) + # Verifications + input_texts = [ + 'query: how much protein should a female eat', + 'query: summit define', + "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.", + "passage: Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments.", + ] + + # Tokenize the input texts + batch_dict = hf_tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt') + batch_dict_cuda = {k: v.cuda() for k, v in batch_dict.items()} + hf_model = hf_model.cuda().eval() + model = model.eval() + with torch.no_grad(): + hf_outputs = hf_model(**batch_dict_cuda) + embeddings_hf = average_pool(hf_outputs.last_hidden_state, batch_dict_cuda['attention_mask']) + embeddings_hf = F.normalize(embeddings_hf, p=2, dim=1) + + outputs = model(**batch_dict_cuda) + embeddings = average_pool(outputs[0], batch_dict_cuda['attention_mask']) + embeddings = F.normalize(embeddings, p=2, dim=1) + # Print difference between two embeddings + print("Difference between reference embedding and converted embedding results:") + print(embeddings - embeddings_hf) + + model.save_to(args.output_path) + logging.info(f'NeMo model saved to: {args.output_path}') + + +if __name__ == '__main__': + args = get_args() + convert(args) diff --git a/scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py b/scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py new file mode 100644 index 000000000000..e970ea29fca2 --- /dev/null +++ b/scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py @@ -0,0 +1,269 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Example to run this conversion script: +``` + python convert_bert_hf_to_nemo.py \ + --input_name_or_path /path/to/input/nemo/file.nemo \ + --output_path /path/to/output/huggingface/file \ + --precision 32 +``` +""" + +from argparse import ArgumentParser + +import torch +import torch.nn.functional as F +from pytorch_lightning import Trainer +from transformers import AutoTokenizer, BertConfig, BertModel + +from nemo.collections.nlp.models.language_modeling.megatron_bert_model import MegatronBertModel +from nemo.collections.nlp.parts.nlp_overrides import NLPDDPStrategy +from nemo.utils import logging + + +def average_pool(last_hidden_states: torch.Tensor, attention_mask: torch.Tensor) -> torch.Tensor: + last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0) + return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None] + + +def create_rename_keys(num_hidden_layers): + rename_keys = [] + for i in range(num_hidden_layers): + # encoder layers: attention mechanism, 2 feedforward neural networks, and 2 layernorms + rename_keys.extend( + [ + ( + f"encoder.layer.{i}.attention.self.query.weight", + f"model.language_model.encoder.layers.{i}.self_attention.query.weight", + ), + ( + f"encoder.layer.{i}.attention.self.query.bias", + f"model.language_model.encoder.layers.{i}.self_attention.query.bias", + ), + ( + f"encoder.layer.{i}.attention.self.key.weight", + f"model.language_model.encoder.layers.{i}.self_attention.key.weight", + ), + ( + f"encoder.layer.{i}.attention.self.key.bias", + f"model.language_model.encoder.layers.{i}.self_attention.key.bias", + ), + ( + f"encoder.layer.{i}.attention.self.value.weight", + f"model.language_model.encoder.layers.{i}.self_attention.value.weight", + ), + ( + f"encoder.layer.{i}.attention.self.value.bias", + f"model.language_model.encoder.layers.{i}.self_attention.value.bias", + ), + ( + f"encoder.layer.{i}.attention.output.dense.weight", + f"model.language_model.encoder.layers.{i}.self_attention.dense.weight", + ), + ( + f"encoder.layer.{i}.attention.output.dense.bias", + f"model.language_model.encoder.layers.{i}.self_attention.dense.bias", + ), + ( + f"encoder.layer.{i}.attention.output.LayerNorm.weight", + f"model.language_model.encoder.layers.{i}.input_layernorm.weight", + ), + ( + f"encoder.layer.{i}.attention.output.LayerNorm.bias", + f"model.language_model.encoder.layers.{i}.input_layernorm.bias", + ), + ( + f"encoder.layer.{i}.intermediate.dense.weight", + f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.weight", + ), + ( + f"encoder.layer.{i}.intermediate.dense.bias", + f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.bias", + ), + ( + f"encoder.layer.{i}.output.dense.weight", + f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.weight", + ), + ( + f"encoder.layer.{i}.output.dense.bias", + f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.bias", + ), + ( + f"encoder.layer.{i}.output.LayerNorm.weight", + f"model.language_model.encoder.layers.{i}.post_attention_layernorm.weight", + ), + ( + f"encoder.layer.{i}.output.LayerNorm.bias", + f"model.language_model.encoder.layers.{i}.post_attention_layernorm.bias", + ), + ] + ) + + # Non-layer dependent keys + rename_keys.extend( + [ + ("embeddings.word_embeddings.weight", "model.language_model.embedding.word_embeddings.weight"), + ("embeddings.position_embeddings.weight", "model.language_model.embedding.position_embeddings.weight"), + ("embeddings.token_type_embeddings.weight", "model.language_model.embedding.tokentype_embeddings.weight"), + ("embeddings.LayerNorm.weight", "model.language_model.encoder.initial_layernorm.weight"), + ("embeddings.LayerNorm.bias", "model.language_model.encoder.initial_layernorm.bias"), + ("pooler.dense.weight", "model.language_model.pooler.dense.weight"), + ("pooler.dense.bias", "model.language_model.pooler.dense.bias"), + ] + ) + + return rename_keys + + +def rename_model_keys(model_state_dict, rename_keys): + """ + Rename keys in the model's state dictionary based on the provided mappings. + + Parameters: + model_state_dict (dict): The state dictionary of the model. + rename_keys (list): A list of tuples with the mapping (new_key, old_key). + + Returns: + dict: A new state dictionary with updated key names. + """ + + # Create a new state dictionary with updated key names + new_state_dict = {} + + # Track keys from the original state dict to ensure all are processed + remaining_keys = set(model_state_dict.keys()) + + # Iterate over the rename mappings + for new_key, old_key in rename_keys: + if old_key in model_state_dict: + # Rename the key and remove it from the tracking set + new_state_dict[new_key] = model_state_dict[old_key] + remaining_keys.remove(old_key) + else: + print(f"Warning: Key '{old_key}' not found in the model state dictionary.") + + # Check if any keys were not converted from old to new + for old_key in remaining_keys: + print(f"Warning: Key '{old_key}' was not converted.") + + return new_state_dict + + +def adjust_tensor_shapes(model_state_dict): + """ + Adapt tensor shapes in the state dictionary to ensure compatibility with a different model structure. + + Parameters: + nemo_state_dict (dict): The state dictionary of the model. + + Returns: + dict: The updated state dictionary with modified tensor shapes for compatibility. + """ + + # Note: For 'key' and 'value' weights and biases, NeMo uses a consolidated tensor 'query_key_value'. + for key_ in list(model_state_dict.keys()): + if "self_attention.query_key_value" in key_: + key_q = key_.replace('self_attention.query_key_value', 'self_attention.query') + key_k = key_.replace('self_attention.query_key_value', 'self_attention.key') + key_v = key_.replace('self_attention.query_key_value', 'self_attention.value') + local_dim = model_state_dict[key_].shape[0] // 3 + q, k, v = model_state_dict[key_].split(local_dim) + model_state_dict[key_q] = q + model_state_dict[key_k] = k + model_state_dict[key_v] = v + del model_state_dict[key_] + + return model_state_dict + + +def convert_config(ref_config, hf_state_dict): + vocab_size = hf_state_dict['embeddings.word_embeddings.weight'].shape[0] + new_config = { + "vocab_size": vocab_size, + "num_hidden_layers": ref_config["num_layers"], + "hidden_size": ref_config["hidden_size"], + "intermediate_size": ref_config["ffn_hidden_size"], + "num_attention_heads": ref_config["num_attention_heads"], + "layer_norm_eps": ref_config["layernorm_epsilon"], + "max_position_embeddings": ref_config["max_position_embeddings"], + } + hf_config = BertConfig(**new_config) + return hf_config + + +def get_args(): + parser = ArgumentParser() + parser.add_argument( + "--input_name_or_path", type=str, required=True, help="Path to .nemo file", + ) + parser.add_argument( + "--output_path", type=str, required=True, help="Output HF model path", + ) + + args = parser.parse_args() + return args + + +def convert(args): + logging.info(f"Loading checkpoint from: `{args.input_name_or_path}`") + dummy_trainer = Trainer(devices=1, accelerator='cpu', strategy=NLPDDPStrategy()) + nemo_model = MegatronBertModel.restore_from(args.input_name_or_path, trainer=dummy_trainer) + nemo_config = nemo_model.cfg + + old_state_dict = nemo_model.state_dict() + rename_keys = create_rename_keys(nemo_config.num_layers) + new_state_dict = adjust_tensor_shapes(old_state_dict) + hf_state_dict = rename_model_keys(model_state_dict=new_state_dict, rename_keys=rename_keys) + + hf_config = convert_config(nemo_config, hf_state_dict) + hf_model = BertModel(hf_config) + + hf_model.load_state_dict(hf_state_dict, strict=True) + + logging.info(f'=' * 50) + # Verifications + input_texts = [ + 'query: how much protein should a female eat', + 'query: summit define', + "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.", + "passage: Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments.", + ] + + # Tokenize the input texts + hf_tokenizer = AutoTokenizer.from_pretrained(nemo_config.tokenizer["type"]) + batch_dict = hf_tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt') + batch_dict_cuda = {k: v.cuda() for k, v in batch_dict.items()} + hf_model = hf_model.cuda().eval() + nemo_model = nemo_model.eval() + with torch.no_grad(): + hf_outputs = hf_model(**batch_dict_cuda) + embeddings_hf = average_pool(hf_outputs.last_hidden_state, batch_dict_cuda['attention_mask']) + embeddings_hf = F.normalize(embeddings_hf, p=2, dim=1) + + outputs = nemo_model(**batch_dict_cuda) + embeddings = average_pool(outputs[0], batch_dict_cuda['attention_mask']) + embeddings = F.normalize(embeddings, p=2, dim=1) + # Print difference between two embeddings + print("Difference between reference embedding and converted embedding results:") + print(embeddings - embeddings_hf) + + hf_model.save_pretrained(args.output_path) + logging.info(f'Full HF model model saved to: {args.output_path}') + + +if __name__ == '__main__': + args = get_args() + convert(args) diff --git a/scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py b/scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py new file mode 100644 index 000000000000..c6b3f351cc07 --- /dev/null +++ b/scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py @@ -0,0 +1,83 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import os +from argparse import ArgumentParser + +import torch +from omegaconf import OmegaConf + +from nemo.collections.nlp.models.language_modeling.megatron_bert_model import MegatronBertTextEmbeddingModel +from nemo.collections.nlp.parts.megatron_trainer_builder import MegatronTrainerBuilder +from nemo.utils import logging + + +def get_args(): + parser = ArgumentParser() + parser.add_argument("--nemo_path", type=str, required=True) + parser.add_argument( + "--hparams_file", + type=str, + default=f"{os.path.dirname(__file__)}/../../examples/nlp/language_modeling/conf/megatron_bert_config.yaml", + required=False, + help="Path config for restoring. It's created during training and may need to be modified during restore if restore environment is different than training. Ex: /raid/nemo_experiments/megatron_gpt/hparams.yaml", + ) + parser.add_argument( + "--onnx_path", type=str, default="bert.onnx", required=False, help="Path to output .nemo file." + ) + parser.add_argument( + "--precision", type=str, default="32", choices=["bf16", "32"], help="Precision for checkpoint weights saved" + ) + + args = parser.parse_args() + return args + + +def export(args): + nemo_config = OmegaConf.load(args.hparams_file) + nemo_config.trainer["precision"] = args.precision + + trainer = MegatronTrainerBuilder(nemo_config).create_trainer() + model = MegatronBertTextEmbeddingModel.restore_from(args.nemo_path, trainer=trainer) + + hf_tokenizer = model.tokenizer.tokenizer + + logging.info(f'=' * 50) + # Verifications + input_texts = [ + 'query: how much protein should a female eat', + 'query: summit define', + "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.", + "passage: Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments.", + ] + + # Tokenize the input texts + batch_dict = hf_tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt') + batch_dict_cuda = {k: v.cuda() for k, v in batch_dict.items()} + model = model.eval() + + input_names = ["input_ids", "attention_mask", "token_type_ids"] + output_names = ["outputs"] + export_input = tuple([batch_dict_cuda[name] for name in input_names]) + + torch.onnx.export( + model, export_input, args.onnx_path, verbose=False, input_names=input_names, output_names=output_names, + ) + logging.info(f'NeMo model saved to: {args.onnx_path}') + + +if __name__ == '__main__': + args = get_args() + export(args) From 48738a6d1cb1862f23103a0b25e17fdda9b07e2f Mon Sep 17 00:00:00 2001 From: Huiying Li Date: Wed, 31 Jan 2024 17:27:51 -0800 Subject: [PATCH 04/10] initial placeholder Signed-off-by: Huiying Li --- .../nlp/nemo_megatron/mcore_customization.rst | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/source/nlp/nemo_megatron/mcore_customization.rst diff --git a/docs/source/nlp/nemo_megatron/mcore_customization.rst b/docs/source/nlp/nemo_megatron/mcore_customization.rst new file mode 100644 index 000000000000..ebec950fd11b --- /dev/null +++ b/docs/source/nlp/nemo_megatron/mcore_customization.rst @@ -0,0 +1,28 @@ +Megatron Core Customization +--------------------------- + +Megatron offers a range of functionalities, one of the most notable being the ability for users to train GPT models on an epic scale. Users can use megatron.core.models.gpt.GPTModel (mcore GPTModel) to initialize the model, and then pretrain/load weights into the model. Mcore GPTModel adopts the typical GPT structure, beginning with embedding layer, positional encoding, followed by a series of transformer layers and finally output layer. + +In the rapidly advancing world of LLM, it is increasingly important to experiment with various configurations of the transformer block within each transformer layer. Some of these configurations involve the use of different module classes. While it is possible to achieve this with “if else” statements in mcore, doing so makes mcore less readable and less maintainable in the long term. Mcore spec intends to solve this challenge by allowing users to specify a customization of the transformer block in each layer, without modifying code in mcore. +We will dive more into the details of mcore spec in the first section of this blog. Then, we will demonstrate the usefulness of mcore spec using Falcon as an example. + +What is Mcore Spec +^^^^^^^^^^^^^^^^^^ + +Submodules +"""""""""" + +ModuleSpec +"""""""""" + +Build Module +"""""""""""" + +Customization Examples +^^^^^^^^^^^^^^^^^^^^^^ + +Customize model initialization +"""""""""""""""""""""""""""""" + +Customize model forward +""""""""""""""""""""""" From 73f8a78c31c76b28007b98cbe459b86e6ede3bfe Mon Sep 17 00:00:00 2001 From: Huiying Li Date: Wed, 31 Jan 2024 17:39:10 -0800 Subject: [PATCH 05/10] add to intro/index.rst Signed-off-by: Huiying Li --- docs/source/nlp/nemo_megatron/intro.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/nlp/nemo_megatron/intro.rst b/docs/source/nlp/nemo_megatron/intro.rst index 577291424c80..80b30a267b18 100644 --- a/docs/source/nlp/nemo_megatron/intro.rst +++ b/docs/source/nlp/nemo_megatron/intro.rst @@ -28,6 +28,7 @@ team at NVIDIA. NeMo Megatron supports several types of models: peft/landing_page flash_attention positional_embeddings + mcore_customization References From 8e5bf1361bce7130ff9cb7e88281867cfbadb735 Mon Sep 17 00:00:00 2001 From: Huiying Li Date: Wed, 31 Jan 2024 23:04:31 -0800 Subject: [PATCH 06/10] initial content update Signed-off-by: Huiying Li --- .../nemo_megatron/customization_forward.png | Bin 0 -> 134363 bytes .../nemo_megatron/customization_module.png | Bin 0 -> 216847 bytes .../nlp/nemo_megatron/mcore_customization.rst | 242 +++++++++++++++++- 3 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 docs/source/nlp/nemo_megatron/customization_forward.png create mode 100644 docs/source/nlp/nemo_megatron/customization_module.png diff --git a/docs/source/nlp/nemo_megatron/customization_forward.png b/docs/source/nlp/nemo_megatron/customization_forward.png new file mode 100644 index 0000000000000000000000000000000000000000..d824eba68ba18d9f02015a5365c293a1f075b818 GIT binary patch literal 134363 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ΧLGisweJZzfUH0`-Tug9O`A~W? zBb3yZkMSAn>fcs>mkWNZVt1ASs{f^taxH!oy0gz5?Xz>=!UO3#${$%yG2V>q-shAz z&g%-*lsG{0PQA~=_Y@$1&f0zf61VeuEz=h_eM6mfDHsz5Q*K=1wU|9=e%Q-aJnr1+ zNNp$_!9}<11)7hK(^Y1~DN0gA+T&k@=zxNj-*n0Iv~cNTHx2fhB$jM!>uPpVF7jw0 zlDrDeWB53~Vr(hR$DK!&h=aGjXHfbxX8CiWWYH#de4jK4vBsgfRc7i~+avAao1l&` zW>Ltz({S+;wC} zKzj`gsMjM&Ujgxw-BRM&bN))qFsD%e)1{o~di|1Fc-PX)!S(nT+m^0T1Qm+LhPsZ^ z{xq^>_5Bl-G{O7%FVlOQ2n}Q8w@XkII6%jwbtB`8j&H5*DVH(GcgKi@XC zr;CG>qEs!@%+_j*KlF=P4O`vWOrogrmx;l*4b|^TF003L?+3?Hq+OMh4Lj*;4QfYh z3ag)Rf|E+_d&iKCy4znv*Mvq;*B3Urs&5Mp6~ z$`9}h)sz4$4mzY1c-Egcf`2j_w%nthex~5;X?n1wmxB4Y0=x@gwtoB+kXpjd8^W$s zl>wL2UvG?%l~{huBcnEdI&j&M+v~LRjzS7&_VoT_R8Z8r)6qaVU)%>1)e5#NwJ+^b zo?&OUJUI)IRh^bSlPf149|w&26~3&xHNLV-U1y<#tcpc6YdgL<#wTnnsN@5AT}CCX z46e-Yy#beV!0CDHC4%W$UFj>~8?PLmbK8TnUv?B_5{ZAWWx9fp_=h@mxwd9?1zsu+ zEtGJ4L3kgeLwnVL_-M5xWcm)xfVpA9Y{BWqsE0zh@G)l72mXYJ>6rfB;V;?W?O%Sh z5=a!V6XPmowqA7av@mb>ISYx&JeR7q3^ekz(~(}MPqE%?7p`6?ox37$QtxP|WY5zn zjpNC-vt`P&Zd;$St`YSvg-J@|$&U?uDiPPu%bsMPDr`N~Ul81jY#lW)t?VK%6%y}n zy7_#h8jFzyHQ}bYvQwZk#}mKxXn>O~3_EQu=C0F^jIAodh9#^M#_X?lV1C7cK{*W^ zNLITLrBnMan)u(BiXJP19q<%@2=NSkKsmh|&#`*vADxhIsZEiM!41>(bxtoyICd_ zlY!X=QXckC{(l#)LuP)t^2kaeFvmGmmcVf^e(MiDX|^O_ih|||SW|X+066~Tp3RT2 zl4)m$nNQEM7LPgJ8`5j4{~^h5xOmbpR%HGw(|UAZ?(@gbjq27{KE7mT`oT|~4uTx} z*i{yTkMBYCm>3emmA@W&i1WQ>lDIx5Ht)#1d#^!E*Wq>!v+>INf!me3Z#T9kw-s$Z z7m_eV?MxiKZHNP$g2oEb94?K=bax=h_WK8$4Qo!0Ep&$w1(&v)ZCl^xCHI-1Zkp=P$Ih%bsehY5opf;Gq9 zHP!8;Y(9DX=1fn7%p(v-mx_CAyuisi^=5Td1#1I0mj4^q6J#^q-@(dX5lnB1YeTWB z1P3eek=!3uZ)3&>V?eV%KmO4R3Yki|4TxJA+0WH2K`|abQZ-)Qxns8z%)b0cJ;2>b zroYDf%4MoHg~9Xi0==r)+<=BrjgZ>#&mlcfqxLYc#gXRYs%=|Srv)<#-DzV}Ss1`T zKm$iDhIok=J!8qcrmvwkj??h-8NClyRtL6S1FL{-PJH#-~r?5~Ehn@l`7*aW$ z!2GXd&Mb8W9Dw0^k<35$Wv@E_$$f9amj7+D@nXJ9C#KhnFT_X0OJ1N55Yr>Nq|R44 zOraN$K=Wrvfz%ObSL-(?HFW!O9#;L~D&0ke+WTu*0TQolBMEBGb?g+vH!u3pb7>`mGIONuNM_kzciBm%!Y0&ac22 zyZ}Ez^q2jXaSyFfn(shckWQtX7S-8Dn)8?pDBpJZbh5_MWvgrMV0YMD;W@wPy9mk- z19bW;NEBFh2?^gFe#H%!_7$ZafnJegT!6ZA2_5N3j69=pxlaTj*KK$zUU>*MIxH3B zb1PXZ1q>mK4wB6^61XJfEa8YtU^br<3a9kp;uPu(v?u%Ah^Rv4;8pwu49x_8*`b;7 z)77>1t?%Wjy1#CbOW+nRYQcW4JYX6v|pXz--#>^0ewLR{EyhMda)xLz1H0D)_J(zYw$j(_;w$vmn8 z^LsxYt|Mj^VIyxxtgBrd!A`YGtmB)O_{!uWdZ~k}368|vBlya%&80l{f%hbL-&F+X zQyZ*hb0gNEj-FVZ6(!hfZ3GXW(@R{IqAGr{ib3xUy*bIZ)leWnTesletKbJU|Bt=5 zjH>cm_l9NBB_+}=NOyND-6c}eC?QCGm--Sx~H|9ijZ*?XV! z?s3i-?|46)G5oM(t$W@xuAaZ^x&m6oTk8X5O-ok#0XB;L>clQC0v)O; z@y)$~X>6jRPJG38PBmBUDZOP4d&c&~-%n_`w z<&cTObDPozt?|(>^x^*Frh`frl330X;(y|^GCu&>4T3xa9D`J=UN2at7zOq^RGj+k zU`8E>^mCK{@y$-TovSf3Yb9O3WdT1923X7i3TZ=Q`y;a$WyAQ{km#T6gwO$_%V(2( zbm$7&UxC2o@0#L3d7P>NDFf_*+v~a)gPb5^`W2u$>G+3FxYGVk{U+C5wVDXsC0Ueg z%(3JM@UXWJ(_;u_%i6H7kZ7k-AN=>vmJa4y#3tH5)yBC;g$<>#7{d-+BV+v89r6F{ z4&{G;cQ|qA5s|cwbm@3dK;?thaKFSNcIg%gR9EWIS5kPt$5m&Afq%VHF*XEh^!&e* zITd?P+D=@kxVxKc6m!~AtKAPXWPgC?{EWK$Wj5(;f4m=IU1ZGdky8JUCf(oCdaM>F zhY16zN~+kZb~IW--dIwEp*{h)tPlPtBZK%i9jJr^I1K?Xi)n7iV?ORqYzekOfL6u9 z4C|}~Xh317Lll?|VAA}IH&C*jHu%mYkeM>b3do)iy54zP0FLUK+!p~*3sD&qV8G1# z0=A7vL<9F24lYmFunC`8kiw*TK-&BTKoOVwzU7d_E{9ZkgBk9U0|YF#V+Bg?{~7~` zn*jmvB6_>7S4jR;79hE=0{}E@APC6CDj^L5Tmz8F|G1UpXc9 zrA;VsEShEW%O#-;AR%DF9R-D2!5#&@j0P*@{~5P~ z3TxkIkn{r^i%l5R2UaKbQYaTxXywoV$!-<^A$WzlyMZ1@*m(Y0$7CMhM(@Be;X2q; z094=CEy~=-5O2z}UV2~?E^vLa1zyBd?tOT8xG9`gGz?R9w0~N^3lg;cq38=s`aP0$ z2DPDAeT3YyAlr%(1MXxaoB%H-H(~Dw8Xg}E(O(suqa;q)ERc?arVL&Hnc0?y4Sxr& z3sQ%4AS>@5&({*$p{#9waFH3q@)v0q0-PGk=l!_ldJk@BPW- zl9m@g^aTYsfN6uX&RlIGf`UOphc5+#O9E`pPFFz<3hPKAG)V*0oGdpz@f;|zwbwI9 z10{haNQfUIJ6fK5`U|z9aeS{=G3H&jXA-OLLl=bK@kXAQw*F#Tuf*$ z(yhEmz)o{LdIuf^=_7E16yFlRV0eStbo|kNYd3~rhfph*#1>O*!f!%=MF(yVHtj!? zQeYGdZ0sxlWTKvdhv4U2V1+w5z#ySwPd*bu^7n59x*r8f`A<0f|9B#9H=c=NI~Uxp zlU^C(A<(j<@(Xh8%lYA@jGC>;fCPph2AN%)x(fg0PJ_8)Y^>n{FOeHIc)L{qb@mTDKn&$^wn5edD+iSN>i|M{7^a`@`kOG@ zE1b~Px4P~BVwm~tl5)-O8)awMA{UC=qWoR`K^CYctzN8K!Q3mV>d>DmlGSo^p7g9U zLXNFvzw*7Q_yA=(G8joD|GWnEKchEs<2L{|2M9CyvGM6R759rCW9zk&7Q06!A8YW@ z0&frM&BrI_NKBbv8mFi%$qgYEiU|^y%BiR*^yVL9G_wqy3w4{Qn}|=eyd}=9uYUIG zk2E+@tfzqb`=DTA+G*s{Y|Dw&VLC^Za45xEgen+#{Alj3QA5Zl3 zos)iMkk&a$=Xi53QkB~+3qIk!Ay^OWv?bP9DNgiz421D?QkbcsZU zt}d8VTbp@e8!))#5FvZv4nRADAYd3lB%uBAH+Rx}zf3)@V=D$EQ}GwcL?Lu`Rww0K z_vYdpuo%^m9+6GN$6%>Z+p$Z_RKrZIc1*b456xOiWE6~d3*Qz}crVnx6R~vFNRD63 z?;NN!R1oxDJnJSfoZxg_CT($cwVjcfnL2qtdr^Nirg=QfS$I+LOrqNKb?d-GPw+|y zt(t#UOMgkE|3D$FcW<=+@PBBFIb0`mSnFq>qx$DOw~aqZzF$z>OZN)gSKE*Iz8?Fz zY-m}Gb#N!IZwU05Sp%i0MYHTib7*;93=X^}O4l|XVZNc=o~ly`W6*#5LUZL4=RLmP zMVh6K?qPV3E()VW4bF$Q7(QLS_1t~)MKibUQDGvzjw5N^#>9Si1I}z|q4|~ekiy*I zw&duhmd?yOeDp#xAZA5D-_LASsel!Ma}x5h)v?{Wv9UY(LMP{xU1kdLM1 z$o(dd=OBdEe>VP!zZ$*^jHx5CIjdfpoYG4eTA&~z!Qh!Z0YxW09N?GI7MgS zZ_s|JDrTbPxtQ%#mC~~(&GPQ@QH+9?iTTPgnCOzmgwdM7W{jYEZI}rXk7$VRMcRWh zpZ`G$gNiBnSt?)+QMYqmVF7MwaVz#ZpY*D(3^w6A3X$C8g4w93gc=9pWtR63AEcmL zvZ*G*%*~gZw{KXqik5tZa^7PGsfm}gy0Mvx%CYXclL@Kppk&1l$mp=?E0vH`MWH!T zbjLE2VA-Wh%i#vvMSz|IlIR#(lxp-ZfNC(I3D18G#5@ircB~?Bs7=sZdQ(8n0of3! zfT6fJ3iyp=HmU^B6baJeb?2|!`F($d$qiaDleaq3t|Ch1k5eb5Z2Td`lkDR z$G7b<2NU9>s^I)_P^))0Lx87ny{6jE3}#>vHTIJYA&A!}AJjMlp#WeOVbf}a0O{O{ z0R!EOWP}^1dX;V`WYOaie$4Q?HG$8R{Ag`JgIc#pjb&pzE5Ii6;k(rA{xF@GZp*&7 z#QUZC*p;Gb4KEkhPz8NX`BMbkgUChQq(h_WGWq7ZB`M-qB=#1&&?jZt{a+sKYtZ!}xp`E~}nTv3gvda%@jmM(0L& zi{5V*EjefK*378dY|+S-lUe7?#vGrUbG^yc=u#Qnqv=}z=AZTIrsam-?$RxW*PED8 zEf*n2K8cYY&(NgOb=9z-XKJTeX%DZ%^{QvGwY9?sV>nyS6pYX zC{C!XNfYsuo#L~{dahV&Ka%!D?-(GILDKO0&oKFqN z@j1n|HMD)XKhAJoJZ@Qe9slBqA`z$MF3IqkgefTAyqZZpUj5>S`k2XPMyWgxliIs4 zGu~k$-sdqE%E{|bsBpIywfKQ@xl1qMVn3%;EmlIq!(lV|xck_JcVo5`+19XDz@CUmccx}$qVX>sv@~qwy0g5m|916c zior>Kr(*5-L;+$X5w|SehnQHsk5}bpxe6fb?KQ9$rT#rD1{9mU{Ei-_W5jMBB?=nx z=w9)4w4O?16Cxjzrf*P;y;ob1$~)U#w=!yclI7ga`|5X(fR@sM$zt@X_s+>e*#s;= z=We;;F8PlwBMY^@>3#}FrrOsw)43cxI|DsCpChpeUG3&xlGQhx93g3K)eZP@T&+j< zi|wHh8_N6*3&2ozkFa;rS4pEw3Ek~|oh$sr+;`=<{)^PbPS4S!%2Zf@jQS>0iB><~ z+dPW^;*pF;kHT=InmHdau)BTzv5uE#z{DzPz|3L6a^cTu{{3EIegRktVSrIK39)HN zdb|~o3n54{OH;s*P8IM#fRr*96!nrIgG^oBL_e}+#Dn{{F`QUmDU7#D2>vf`uHm~= zcx$l|&wDpC&bpWBmy(FGBzxxy5$qEBbG}6}2>~N5S~r)TEsjvE?CiT%-vt^Sd(bhl zd`s!mRmRd7+Dj$R6CTsSR~{mJn>djw3_j|)a&kW@w2X~ukvTNK)N$$Sb zb!YEGbR#KS$Fq17;o5!4F!I^M)Z=uX3cNy!4&#){eK9-Kz&55x^DS|$-Gigv59yMF zD(0(>yGc)1XHI5w9;%QJ|BRfvbWGs3q;4|OY<{J}z<#+LQEPdAu#)DpEV0bSq;VoK z^K_J4#6wz3UI+8JqK&rkrTdZ!(_4`@j07*qZJIA8$=7FptK>w*;)k!ld+q z^>TkC^c_`-6=Wn+;3x^EFi9A%VVwH*hX0q2#NSmI6YhBPb0$m@t~aMQvGMuHuAc9t zZUwUTB_;<09mt%`vcAyLe^S?R6Q^)FU#(j4`q1#p$y$nV9ldqs1DwGZy44w5R03iH z6r3jIMFuBdIn5{f6$DDzB*>lJm?yf)5Vv z!1^W|Z%QK`v!ceMx$fgeeZcNk3NG8cw1Y3|U6zSQi!_bsI8RM(YL@gFWP1oJ6MkM- z#y$Co>_3>NVDwSMyr%fd8a-Ei_T-=&bPHnWwc*S27CQNEXjE&T@}d+OkFY7| zDAO@kG()%IS>5F6&aCf9wUW-0W~;#BUc{C@*OWSwQFP!X^#E=6U$|?3-{m4~haX|$ zi?5gNolT?L_uYDb<=yrnh>O@V#=CrnB$~Es2iRj2l7^^JWdok2_P-C@;cT?6UOa6G z{rK|*BTv`<>;5;7PoGG(=sn@}C33#3k3J+9+g)j|FztHF(qxg_YHWD9?IVgZ>Akms zzPvEz<##$L^(cqazb|(;2pb@Dn0UfgnCX^!EIAPbH~n=U0E;i@#fwH5-SfA_>Lk|) zNI$|Ud=r(D^_QK`7R?zG^J2D^zmgD~^`uy#V)*V`{T!lLOKIFWO|kdNcQ5I;`JrtZ z!>aQ!NST;A7V81~O7ZESvvKXd$LTJW*3}xiUeXMbOAceTaB#Q&d>XwT$SUtNlm7P@ zo={1=uJGAKscn_*s&-2e%XGz_$qaCVn6@%za!Jm?bhei%2)R<94(E>Gt{Z4t>4h=bW5* zjPoUGgsQ+*v75|9`z29$p2lyl{gNM8969(-enl*PNA{7dPV% zOA2=%vP)Kw4mpKv`PnZsl2x~u%0d-zf~x*YS6vkigX@_%6g8kU=7D8WjBmfoyLAGK zk4a3P2~(qD@a1wn>>tP!2)CLkJTf8k=_z^uy4}!D;f76Vmfo4S-zb}`;55^&v7MB~ zEaZ;q-g76tl0Ay{;ngtq(kj8Zs=4N4xIZhI|E#*-tMixrGMsNwTFVT@T3Ai1YE9lW z@pmKA#>!t!5og)8ZdzYg+LN-=VnI2*#KrBX7_5QDsTG#km3~9YCT^fL8L!n|>YWVY z66PFuKM>k61+A-muwLuDP0>+wOEaq2sx^=K?Q5BPibvSfF&BpC+MwWTD4X)pT^lzL zmz>I%;T0=z)wt$wc-V$8BRQl86rfU?(gB%!wjhw$PbvabfuA1{aNv5<---e!xmdo{ zu86f!ApAB6QrJR8*Fl@vy4%@-HScOaB?bBkWRdB+1l=QM=2$8H$Ru*OTyy#YZuY}B z?>#-Zt4AkTiIG#ab{ZKk0&^S%oK~|ZT6#YC@G2NTZSsnhZ@kE0zP5c>quzMBclkE7 z>$i8aDfRs+|+X*I|rY%#O^ZD-`c&U8`Nx2i5S zc&@T;Pc#SD6wgV5Ok0IoyV-rJ9xRtLlAYhdGvO<&jp1da{#}V zc+xZB1^?)#JGnYjSDoW`c?#t(&2?Z4UM_4QGHRq3Yaf=LKX)n1{lyU7aIMe4PF!oP z*ek@1KG|RV{Zsx9Un)Mg2P($0wrXQ{fR1N=olo*P&C&1aM~ssdmX8XLMxD-b?-9yp ztdw1u2ESFy`4F2^3#v9*ezEq10VS5Ta)M<3SB+Z~J~WgFhtQ1M(n=v9zw$3<(tj7F zJlnwtan|#C?(E=xdGFbM8>>G-Bqdog^-eobYuNTu+;wzFi#zk?@q~-WQ;U6-IgRVK zGlQ?eCu9=QvdTlrFPAsqxIlvR>X+3APlbKehTTr}PcPZ0=J1vLE6iu^+h{gbEs zsJ;N%UrmXOJ_hDb323+@8FUYR_NS_>pZI5lWS15aR*G9!7!Hcuhd9#h`7?Bj!*g3Y z`|r&)-K-sk4yzvmHz$|xLkrG*(pig*;mkCgw50jwNf%oM(0Tk;4QAR~$um;;#c91YzV;0Y;I|aIVhAC@5g8C0i?h)?zs`}COVzRD4 zL2%#e=3&tR5H!qU4WKti1kRuKH_20uc^_dfi~QTpBh0YTn{ z7GY&JO=qiXVEn?cHj!Azo_g@Q(L-iKpvrRm@ND{ys93A_9@S{047SlE`Aql6UFJj}@I7h^wSOg@Bw%*{E4Q20`K=N*vN49kN7p!fb7`k_f z)c6aZL3s0EzUsn& zD*8=25K!WjXb87=;h^B*R1RtpI>s^)>KAP!gdd^%`a6I5-40q4pIz{HN+vW5udPQ_ z3i?B4KWe=urS}5 zt8lc&^@#xXWU0mg%iOTopkvtXx2{bE+M@-q3NcfZ(e*}LhoB7n4 z=fjPNX0N(w|3pr!n3?@D(*5e% zIp$a71BtH7)kv{|$8WLB%xlu7m0vD3ZFpe9q(-^l<-h+!s(5OWYTxexQq46Un`S@= zvUp&b3BJ%>i1CESrj?#pZ0jse z-D}SiNIyj{_S%-`7c1MEEspRL`cuj;a@_Woc zcDSx_K5u)*tFHB2C!-X;zIzfFLCc?K0>^Hx_>mDjNRDiyvk&tti}dsS3h*)A8yd47Dsv?!4Z>$M{H7 zG{=!9?D4@S?na$=#Tq?NZ5Ecg{RKcNRgTKh1^=+Q$wNGRMF3|qA@)!r1Jy*^g1aH% z1+D_~W_Hk`2@%ksxRx5-Eifg5{-M#Y72um+8aKU+q^oSYNp$b#W-wsF08Z~Ok8!fq z9R5$fQi1flv2TVmT$1fHIb7q-Xgy5;ARxr4qZJ@}Wik*<`uyuG_E5<&Mal^K5( zc{Ay*eJ1})!x+OQLq! zAkTALMs49e4zAGr>_%lh#d_bN>n>Ri9ZypC3SC*)!YIcq$g!W)Bli)=^G?TG52Cw# zkr|{1S#i{5C7=<5?WHOS#B|bB5YwsczvjP{oRfb^&h0Jq=~NV0z~1@A&n8?U^vFk8 z6ob`FV=#+1{eh=1&)$Kn3$!%O?ttbQ#LsupaqTX4uiHhBPT|gbXu0TJw#F+@B5(#hmX9<#CPXv(4R=@8uS8oJY}OFwoL|)$wcLaG{IBW72L96GU{z?VUD{ zOTd**YT9zTu-{CBKuvX*7%hp<*yx9&* z9%;vA4>khKByP|+c2L3RiF`_utM-hr0^Y0*qYR@F)w7t^@di^iZ@r8-W(yu*X!RZ)&5^r^p!6l4{rzk)8 zG7(UZg;qb*CWPNNU9%e%RPoZg`ELxu)$=WIX3n7eDq&g425I7Z6fZE2y@e&O70K-QePL|7)mDlN zD6m>eCxD!V{5CFyXz{lK1AE_%PpX?Iy`kK^_Zc4H<#m(q&S2~BfVI3tF+|K35b4tV zB%vf9%NslA*bV>P-IHy0gK?b4^;~#kV$g~G^jiTMU+o=W?WNzqo|$HND|2Vfder-GG`zMJw7C` zEtKZr(;Esg6R+;%Bc<+S9z64&4}*ssBwu-T#h_4w#J?A6@blaIBWO%6FUw!N%S6NY z0h2KXv{(;ixMP+SoBY#N5Uky8Weo?~Twuuhn;nE0Q4h3nvo} zN)+lyzW;yu7~txY7IZ6t6c~j4BXbO*-4ql*8V1EaIg$s_fp_f!jG;-QLTgYV5tB9s z6+!`i?kH9xhZ>BC--Dh^hf>O#P_w)tdSXv&E%07l`_=qOozh(aNXnebBnn+W6aX!% zEZ`7j|Jzl8|2N2!?_`;N0#G=hln@V?+=yzWVd6{?)^O=)aCWPqN}S(*{CD#vaU9TA z2Xgf3z*Ii&W&nI0fFwW#0E4+r5QFZjUUA=EpC5uoD(Sc79D{70fMTsusOEoN+CPt3 zJz#Ug4>~z|+4Sru%3U>RH~?vk1dAC_&7`_z1W>QU65QE^NP;?nnRnD=@WAyjWd;g( zFI1A9Fd7Nm`SS~v5TIbZPqntceQw05iCY`zm)<6xzuaSL#47ho5EGGgJU}tn^*D!%c;s|CR^$9(X z4&1X=scN%;C#tiH^_1%(?`fOpa;b!%K@U?y_y-1o5l}bc4%{Xl_R9-Ur)IOCNs0z! zHQ(bC1b-h82WJA`$X+OE{00tPMhn2yR3p1TAXcEYf3TKNg_efR174;k6&eIhu2mhn z$ta?j-9`#w$!6w>?ZHHXwLiUH1K1965ipIT;;NW8w?IyKz?Y+mV5*ss6frYt6sWh@U^$k_dmyzauMrI|SMh0X6)Hef`@4fl-GLp` zP;UHG!zMgV3jg>B0YKHMh#^`I0q4Mx4loLT;A&e@dw)@Uj z`}!CRk_?rHN_6ka2S47DGrkD(K3t6zs{BIR|NadlHv`p(-%F$*)%77hT@(!OvrK0| zP-|dcLdbs@vj9M0`-F9qxbZmC()9x*>7XXZh(WMV{1Ep0(|+V22$hXTx2Ear3>0`< z+ETIcOM&Gk=ix-6!Dy&oRTZ&L2rhWvIt+4yL(+r@9^bOH^Y56yt;9WX zCJwhM0MlwaBRuXAkwpZrW&>n#-2G4%9!5Ej0sGPssBaijV;kcN0tv|+@3bOuLAyM< zdjQG@^c9%o2WTg6L5e1G5f?(^`T|dCd)!#`U}O4aEqj+YFCj28FeV@?if7;N_Jk<0 z;o|Ur|Cr-d>-K2epjIi^l7tUz#TN7)#3YB&)C&(116Kc2rD=19^Y0*_E3Q&mv+*>T zEDA&@&v2~-v+J36D{L*p1+bxpGp)~!D9J>;olPeCnM+)Sw?*! zpg4>~hZs`4^&F5~aT<;E?aZ!G#;v~wI(h*~bbt%?ND&E)t#&K9KpDlqBv+pKG?!s* z&%6$6O5KXb(thG*AL8p<8RmxwPD+=Z0RC+2bTR~Byu=U9JA$5Q(#|#~`4kiZ33CWgemxHXocn&b58#;MBhev%cg3R8>lir{R}Y`CGn*B+0@P?bT~ee_ zTL2EpLjtK=0f~*BdgodhJxvk=jCTj&1%xVeVHoA5^etj9kB#BYh2Rg^WU%XBfl)UJX1U?R#r9w8h|IwqgPKYe?AkB|25 zac44!&9Fz@p&0i**a@%XVw+AOad)e2P=N}+wbQlyI}?lS^UJ-NWf8>8z=!s4Ak;5P zA9Q&aemG#p4jQfuPpI`SehJAMiu?ja+`$>jLT9Kz*miq{$j}*zf1n|ImL5wORTJz1 z%@#!SEQ%YUwyYtY(=sIesPkV?EMT{X1sF3P?2bMkUkI>=fJlK_P81~S2>gbxSyg&yvFtmUWNS}g+{v%ScJV$`MsrR^HHn`e(I)0?~r4H~;a?*uWL~;(IkwrNA zi7wPjH0mL-VFPyDZrFdaHrK;X?#(8>5JUcuNWpsFNcxv#_#^%RY|}R{P?_R2GQ?^6VCv=OPdMnY%kM(Z zR^N4(&P0ZCZ~z3+0%x)#0H+7~-7N#L!d<4+*x6wdK?lYU*&`ZU?_LJ@N!(7EvUudJ z{KLOt0oFPnz?73fE()Czcam#3G7YZ^d(f@-MoGyH#m3NWWLO6BCAn<1h(t6i}W? z5{<%dD+;PGaSy(jWdXuK_zNNVA7L;634^smD!1FU&;ntgpNk&=gWJT0p51)^=z$0L zvMcZDDqb)VD`v zG9>-Uz1EHW*#Uy7+aF4i!~@S}3i|Ah+h7 z-W%RMV+5z$6aN42A^-2e{_ny54>{H=VadnwhFhe*p-n6NhJ*kmpZ0ypmayJn){mn6 zk}yX~aVT+w@Fi#6?z7h)4kMm@WaNY-`tC(R3a}KcEJN=9C0WGT zV5h*1(*wpTbiCLM0LAwByFmJERs+-eLdt3ptDz4M6|M3|<#T&v3<@cLJu1KB?|Czw z3ovOJATcFAGc+YV!WtJIbcAk)wcKwD_Cu!mljU(MZ#W>?`O=Yt8~Pu143M4ap~FHi z?A@bIBM)QNeD@`HddeM24frOPoXs! zBf=V~mo5{VN>vvh*!~uzY5#@}P43&7#aQ#MaYt$5S155Kg4$v8n~C7T@KYVv%el|u zlphg9&)uVn>tbU?BP|ZB&=H;@aB82m9o-Ny>LB7k(?V+lEy%+d*>YuLHXAY()7VX~4?Kx?`6GY)3(uoTMH#x+@XAXRqC6tDoD zoa{Tl8F?}ZEpN~Mh$y{<2#SM)M39fe$?zy^{`T?H8ytg7tlQTn-2q84qfmAnWI>>K zR%X7&f{a=;=-ZHpJHKSird5F%3@ju{j^Y#wX;2&m3cUm}>(V3Dwzh7dqtha0fGs}7 zb^soX{^N=c_KnwID0Z9Di8=~k9a<8YLN06g9eW~Yk6F^DkB=H|w~`UgFz^dCJZSj_ z9tLrKe|IVxhnq=ykW<3Fu!XLO0cOAiC1BABwJ7R=0yE!@fqDIHssRKBJXZ;_ph1KE z)Qz)Qp1#4&mXktN&l}8>szQT^O%RvA)*Wx}W|~0TWDSKxDZmdC80h1ap@XDtEvx$V zAKQ=B2D8Izz*!wqI&8I;m0B3daY?>gxvB}p2Nq(G5-*7>2=grcdS(TNtH;sRI^)ut zl4ahQPJe#zLP_AtpvXMF00~c%M45<2Kv5^)LpzBr3K(lQF#`!$%+-){AtV-Z7oiyR zLTi_wC>LkOCcOU`CJByH6(l?Z?@lQYv=3j9TD}8lf}ID9EKcbK23z2g!US)A4yD1l z_+XQv=!Syj#8#U41B;FMJ;EFCs`N1MCq~7OXcD*gF<=Jpw=?(;!G^!5`chIt9wgic zGqVtELfIi%Bk;>7;1sMf@=8JZ9YJM!d~&$rR+M)H^0x*hcyFsPm}NN$c&x$v-V)qj zS+UyRKuN|oiX^X*;2uGnCbkVc3NDvtSdft}*a^B}r~f~39DvmU*WW)-7U6)20ajvX zrx*%Kb=)Q-gGdJW5=R{U6B>eSLaXXieDEf%1XUF1Jk6lppaLJZWWmPS5q)(N|0|~z zzY=t+_1&wmPc7qHn z;58a3^CJ($G}4EC^m&|^q+uJx1tR>2OqVe8?)*NN^&Uu z9mI`RI%B?3vMYXhs|*N@8gMQSToro}NM%69_^Jioq#B4C2$6s|ST#HzFos+0z_hpG z)FO}(4#8L%6#7*9L9N)FwkX61q(DeX-Bd{#ul0|IiU5<1W0Q~zP@Oi|)+eZ$K-Bt; zf)mzdp$S2T3~E?=eH{laD7CCn4h6yeQNWkdcUXEDK`0F-^->GGNz+7<3M?A?J(x@D zoBuuj|2=*{wf{Ztw?~Be-gv(2Gia7xWi@aKjNXXkqj#<}JA88Krj3HdK?tgOv>VT_ z-9))2H4VkMfiy4sUxaMP0#my&nZU_N|_`ynEdgjOS9{++LSD9`!naW zNiv&J=TyyyDt+7|8P@CNlj0^7fa%uK!~jDQ2~{AYU_7)SGerVANxpRhW;$xGZ{7KU zc8DE))hC`QutU&^oIBT7i7(n7esnO@N_B}0S{H`4a4`^(76j9xq5K8 zY?WW^mpZJCFxU*1wH&JNtn}s^mp=VC>2>)FHP&`0hFrvF%O+2LeP|@x=2Vdz(Zs*o z^7=HuBZBPFrt5YtNv$1XM80IjvymEQ77w;ZchRLIu_GXjjbMHV2Rnv7y%UzTy{C*r z*mCI+B3i)nWHIg}rK;*6zE5o_BnXD5TIm`;UEPRY@kZ5?OwcEEmUU2r(Xf6^zsgY? zy?Ruw4+-$?p$hdsOF?62e~!gqy^)t|?A8fd^6{BOSLZ<@TlTUM*;K=pkB^>=S)Y)vS8pcqsW<8vqBgMYppk(24@D9yu=NrTq=~YfW#sZw2zx!=J7{66 z9?X|FCmt-w%H@?Q^g2oNwb~uA=C<0XDsQuRIg%&i)SY&)UA~b~?gr-8@q>sO3GNdR zHVHDbnOERKh?|2Kjp==>8{Z?F$%Zc)b}&$ni|IL9m*^B7*QEwkbM;(y3YO35A%%S<%@0rem#T`H`i~+!*%M zoA&y$>CX~I&O36?Yiy%OnRE`}&#l+6)8;{-D4vZ=AHXl8MbDAoD!`G3#Ins~1-1^5 zRV)di(6Wm%MTg(_+L`d>#RgYiT`II7lh5}q;LLxep^(Zz05 zcX4mYW!M_Ay^7}ZRMONNzDQYZCD*AN7*@aZ9+p*~6#^QI&B&q#7=v`)hnTQuKu=*a z8Pz{R_s^OJ5$<}?j_pow1TbWs3()z>0co6Z$Y4S>( zz(oj3JRIah34x4-Vy|^_76jQt?76c|a+aqRY0AlU@-1mCa`9y|84p4i)w<14>A#Yo z7MMj9cOdIrH1ru=M!!vMq;5Kr{csw?>5jSNs@Hf zpN7EtCQ58=t$^up{>yD8nB|_h4{o&5ZKrI=+Xr9TyQ;2h@ea2pxOD1VEAyb*=ndCN zGKei*+jQqy@o(f*++lO7)B>P=GqGl%- z^-vT#Ny&nL#5UC2POvs#p-{@P`aLmdw(sL>P_RiU@WA}=Ea)9)NUxCcpxBM5LsPQg z*XM^nlltxR>t?ie|5eH0am zWl>L9?0Bmbg%XieYd<_|+GRDiK=bNoMahH3$4fq*8qs@S0teK8rvk0w-Y>5D8lh#W z#ddRNYILP*EL^t-zq&m6^lI&woX*sk{Y+;3Vn;^R_h^lR6Li(ttqCa~?FE+P(yOz) zqO`HaE~n9j%@$;=wcP>@*1JMjWVyaOSC8r{&2xk&D%JYLsAy)U%yYPE2uX+^irt6h_XX~Vnnl~9^zeh3P9oY>|A30s> z7-7;Yf_Bl1ADEDplhfze46_g7%LaOWenJF{7M-AJKhwiqw(y0j^&u@MOk5Gy=qY1tcL$`&S z*EIr`d#r^&4?PPM&$&a_dVY$EI-f3h4zqr;Ug@6-s2QtrQQH_UfYFAm8kv>5eLI)n zD~Lpew^3hqtSj)DBC2xuD!T4`AICR^aN%694whvS**21C__A9qGnhG!*U0;^RK3<+ zLZi>HrJgeq&748$_@^i?u?(pxohM}rxOo1hZuT|VEjM*L9v9(g?$$ro&PSZaIX5_7 zB^GxNV$Lu;&ovwI>~K7{n}4?6B*N5^@#tNe>QPyX>vtAkf*+yg!$~-+K4aHTnxD?@ z37%b4`*E-&4fa@)2PXTyCV<=||9|Nw1sfNX5fA3hcxDrn+Rr}TGj#vTwz!RaSADr= zd#$rX-)C->B`nBw>oG$#UCvOX@YHzUU)p$1keR8l%2oxC7+S(l-sK~Ae{4(1p zpX?}-x-^)DWy#kG$8f)VO3Y*4q%tTDGj)5%I8r#(_}(Oj_58lG%`pys(JxPjl$P%2 zt2Mc}ft7DwjIlyWyC2|9{*}_s*EVL>Yw<6viuKJ!iwVwjKNt!!XvnUGM~%Q+?Nghe zQ(7OY-lPHr73VLiHfl@M>%>8JBjRDwp~z7pKZ9A)ZfDSgimlj%!1VoH#86W zuKxC|x|nxgWC@8GidP@qVUxZ?)vD&J1i|HXX`3j z-$O0;m0b2%4A#|*eYRrUKsDK5>~mM|U-0oJpT2}U(+0wgzjQ0Nc9&dzNICltcG>lc-PlFb9FVt z>V~s0n(+vbTNmT(_I8)kJWe5l)gqD6U9#mv#9V`q1N&EZ4()u47ki+r*0nXTQPV2$ zfL-SB>?el>aHUIt1uTp(3YyO88WcGZw2U7##zyuT)e#>ion9k!?tQX^>{g$ay*?%~ zAk;|@;hZV`zvxq)U1|8BA{Abe39}oy{Z}1>A2A_lo#zjIm>Ws)G^ALJ9gLZ z`60T*Vz4+FL_butlf6^0`gyN%qps2{<7f5rx|%T$0p)qy*HT9l<(^oRKJ$JGbo8{i zWy%XorW+$w4jm2!48BhOh!Pcz?(`ZTxl2o$b(xtBcP;|C?Sd(;4~}*RX&7}s-JkJ2 zZLKy>IAO#y{N6q#zNdAy^sc}u;9UJCSS2l2SgU!Lh`8+D_vmewddGv@xlv)#rDHuY z?D&IbHy~HjzV7Uy#Z%YKMGiuVxIvXgq5#f6Ri z5t!x!>)}4T0Gq?LT#{wztKcKWUO7f^=$w)%sxP(|upyat_d^MauIML$y%@0VfB@aAV5?beNE4t&pDFfonJAG;Np>KD$Ht=3q>-_Wf znrP7?Oxcrym1p^l0PZPjN^SW)wKDiBarj}5(Q5T^6i0IO2O|vE6qbc%7-|e)Ng3(w zZbbS=ara`_zx;?<-L7Ii%bb?%o)ImZB^^^EZG#NGVSw@IYV#+PlxknrH_NJ{=aRrDq4{T@M4a3I3)W$h)`_l&EDA-jthm+(9nCVmO9rmZ)3ul%|CS5N-tLTD!M|7O!+S4>6)x5N6ZrlJNM-c%B_*fDcbnbJ+d9&Ga(UsAzfY3R7QpkAs?%x~!kYUn9e$M= z(#&7bqTfq@wzHhmRyXIIa6paBP! zxEMr2;fL@uT>HfyF(6k!?d;w!seJSp63V8&U}Lt^*-!5ZD_`$7qAk0qcu}4(5v5T` zuQa=`>?{g8OwMVo7om3O)7G(xir4SOr;6yrF8Wb~Q0UDW)NHgj%;=%JeC{)FFaimx zhP3<7wi1S(gKa}c6`g9E!&fwRaQC4UJL{S=(_;HgG%tuTb)infp4&Sm@2sy9Us%yN z&fh}T6!jo=Zu~Mdhr_!FCk=5C0_661Se-B)s*}!*VqGK1Mn9n#821_VUL5zH7hYzW z8e2X31V)&JKbz#0X`wKHJ}KU!fxu# z{d4DgOu4IEC9VyPg)~w`{Q{IS;P<0=%kIDSZ4i+t2(R@N-ucbfeZE&B5d1Al#8x{Ztqj8Ms#>YOO^OA`b`%YH=1@fnaXg%e2YVFm-PBBn- z!m-*@IlB(nTNJ`MNAi~PL~Zx|hb~oTK&rNJ`C;!hNG?!|qn4nVKems)FRf-mp zS3O)lv&z-_9(J(s``;8dedFf5m=KZ5M#h_~G+L#8LdP|bSklC>x7m#R>E$$s`uDE{ ztI19~JI}1Y?st0!3SJ8D6WKKZu;%$H!oPOBFlt}{6uPUYRn#d>ujC5ZD?D`ywVJ(J z?~w|42RZ6QDcs3vwVM7!prl`=Ym;@}Wo|9c_U?fiug}ebRCl&6V&*-P7yo8+EBl zS#Qh+UzA^X0B*xyaK3%m9TBB$0Ob`RiTE<3yh952H`4h5BXuqOJ09Ay>{Kk?G*-1d41&=T+z%Kw;q5S-3*Fksvan9b%S zx!xvSH}{1tjj?nY=%dw@iBCOds7+e54T@8|cv9G?FRpcy|<2wYHb^Z0qI60q!9&? z8bm=FML-GZZjg{h8W}F$yS>6GrSff<d{ddlJ z|C`^eweEG@SJ!~VCzNypL_tyMV!=pwhCywlVlgx7~rcD@% z(&A|>ueIK3goT9NIFyq)shkO-;$CsweF4pSnbnVH%~eh=Qez#kF@<-Mws`QXpH(A& z6%W&VX)CKJ>Hwd~PwnR5X&0A)uTg1yjQ!N&N!UA+t$q23EU5RXASJON!p(rvJ!u^rTSA+_>C4VaD~Rx7#Kp>T*M6zyz%DE+MK%R-bkm>mEyZPW)*xAqu*`3`h?_s zC*6Vxq3d29h6e{e_gtRWMg%UoP+wiy&6Q9|%K3JU7UWXCD-liL*lPoB#O?GI4%NyP zsV%YVwjM8Ej|QQ4=#m89!&l|)`nt7W+l%ueCib#^W_Vne zNO->Tt@&{B;vB@6zA*c0WNG_~{O;-1PA&%E!#|VYn4jnYqr@lfi})=OZi%?+v_)?K z!gn4hWk>TUsK3H9DqZ*(**E`06)DYWwL;#Vl8Y2 zB}COV2o;?BQMvgS~snsqSTG3mVslJ(97Z1tI3;rV)*=J_6u;NFdmG+ruS2wRpqi?Ty!%Py7t6mQxu6;t6x<4s z)@fwL0-t=8seqChavTaRG*{F59aw*AM{<&O4Io)KlZtk#z3{1RmXb$bz)R!=2=!EZ z?Kq|L8&(B9Igc316hqxEQrk3s*zsx-N8!B#qj2`AX=^mc-t{!rKTWwt`>pKj>jsr* z_9kkz^#?CF!KXxmnAUMYcR@hqA1A!$K>2(ZLR1!{kq{90M+)2YqD|EAKzyilWmWZ# z&M!8R8l1K!<5AVp<0MTCBqWhJJEyXy)xW#}j+lMbGN~rB5Z|B2HJtx@983P^3d~US zby7|ve;g|$${ck*FGF|N9#_ezQ0kbvU|CnvqG+?!3Fs%eyB3X))&(uY?C2r)H%sxu z@>AOT8#n{V#EO+OD&=F(p{xVFEnsBk)?B)6u{@jZCUN?ryFNXf3{Tz=7& z3bNeuk05V6s9A2a@bsSJnnPCNeHXofkf7qus^wxqcsEHNIAw-ki-YUQyZ# zYqNf#T*m@mN&0q2iJW#F^5PDl2m$jQJWyW?$hu4sb_kv8 z#xqIoBcFFKUiL9*EJTJ&W34zY(d2E6n~j1&C-qPJtVk8tXLz0`)HMC3D#-g%15SAR zyovaL!9(DVgYawi+jhFr$9W7B9x1ZFlCyq2=i|B+ zrWepCeEV0$(}rQj?PvQS>VH{(L=Dv_WPy$pMGuuz2YeG-xH-sB>{{`|D^l4_qR@A) zpnk9>I>&k~_ycPK-zQ0C9tQp?wH(kS^(dVLJ-8h`rS*#XL(m++wojm%J4ilJxRsiV z>1$$i8aZ{?tDkk-aDCKbScv3yNvix?$leGoB zm?jPg-zmJpRqKx9>zG%`e{QW+PU~i^C$ibN|7~$91Tm;@;v~t<_tNjCq|?{(EHg}U zuvB72%*63-?o1qrRBcphBeMBj{ALCh``Dz{O0f%`xUqr;f}vV+EtA!caUi{Awb{Z1 z+KuDf!oWEkDK3x)B5MR=%=%iM4%yaNA%-7rO;prDnbzm8)SR+70&5Ks+@4TMqrV?B zgQ$2y5ijXuoyoq|`GGzvzr@Ox!x3Q2<2Ai#)pOOyWU-VSick33KJv7hr#Jl0EA#B) zSv!~?ycH!VvmcRLL$n+E4*PUAc6eOek<_9uPSsl}4}26uQ-mxQ7TX>YHG00OZua66 zzov~mQt#1zozR{{q2c?6-!Ag-nyV+RD_$je>Z07#2Jlv$9|k#)*M>eiXWPwk)(11S z`8<`rljVJmd&h1YDh10uO&=c?fC1LtpJb|8Owe=JkGrzcDZufU;Bal@)b43jEia@$ z-B70GZ;M7-A?6g2B8XiFWxN%>i>EIR+&*TBf0y*U+Jt|9Ug`{W^1O+Pmp$oGCSh%FFvku?qWCi)xOLc@R)f$btb!EzMwD{q!*B z8VR@5N5^$mMEbjWlT*k(leD-(p@QEo^)ONlrZEI^C0t5H*Vbfd3Z`Ptmanwd`e_k{ zHMjGrf4rI`{j130nQXV>>2F2hZ5ghUUsgx$Px%f;RBM8wPH+M!#&@2U*aCtlWICd! zmj2JpP$4D|z`MWW>MMQSheIQ*q^{*?!^*ZKS={D%&<=s~w?Lw0_2rTmuhUCU-n?r; zxq#fI>Pmv+i{8-aK}0bgX>usDH|aU)5cpQ3FMR05+SaE;(VxA75Opw`N$l}izmZqN zDF|a#zP}+zMNL)9y(9ctui|Ni&ItJ1S2CdKUIFdR?jJLliogN$;JOKblaC?esua-6NqbmOuN#+z(PF(>oa3 zlAe$G(qj3jG+o%=?E8G+l(to$&Q5ad2Loq3Rk%hNWAZ9gNHsViQIodLr=>3X>hB)u zzGnX-bB&1eWVqTK=PW%4`CAe&jj!@|Lr^)GcnqBclUV;#jy8}WOy2|beX%vP%c+n4 zZd@k~7aatr^MJ1+xxC>wEIQ}bpA8eZM&pgMi^`}0xgxxF`G5hx{cGzIZN+9^%kNFx zb&>7QdI>*#(W$;fltoMw?~fJkvXKbFiJ~`HVEIcMyKYti{OwYGY);GzxOjH3()g5O0^r7XQ5W zYVKM6-W?oVn)NX&OcI8TPhvIkW=G+9t4D8=4!CRR6HX7@!8hizS1eD5AGrEjNsh;z zD*eAAlC*e)y{I+h!>RK}jez>oI-4d>`J|igl<6+cPK-ydc*dd2n$ zhrS`+Zdq2v1r|#^*J!&1w9`6W*CyO_73Grxe3^Cnqh3r!c`o@Q?xWUR#a6vi{E;?A^dBgx`#rt`{hy(LX8VdI1HFv<9BB`LiiR9-E6NkLwb&f zUf;PG*_m3St3PqGXcm#D)8&(C7RTxzxR#rf)$+ zB^NH&O3(gvmb3vq%-s$)zl*!75zrWw9o0q2#C_wB6mpFGMQ_9E&?ejZ$TDT_66@Tw&9P7Ue6J$Mih#TRMM*=2`vPC5#;WKU0)~)S zIOKrnoTYjd6z7UL!b+b{j27`95JsN@uROjdqhrF2IVOLT7>jMwn9A@DsO`Ph9J&3U zi(s_!VCv%vsRgIDQQ28QJro5}28X=~j)O!f{XD1R!CTpb>5PmbZk-(Bop{?w-F(k; zTwj@X4(4m0NC%ej;CW|c$>a5K-(SX@kcwY_My^*Z&JS3-@@%1;lgH~FYXU9$&%D|@ zxhRjj6BM!{Z$%CZshc>l`1rfNJ0pR{`5JB!&0py+PE}C&d6mN*Iv!3YQ2%m)J+aCu ziTa}Iqv!jZORYI-@J2wuoeQY<*7>8N(FazyX8C?k+_>YOy8>&Bwlaz02E(CFHXlAU zI$;RyIWTEhMd@tr}`1FBK$}t2W~&XS5S0N;7RE z+a&bO_r`fj>rb@=txj3?Oc|GMJlm*O(pv|8Mc+cISbn2t68Cm`bPR~-n!I_lkRerE z)oQJ=v!dYHHF{lIVU!^%TK@BG-aVVJ_HbB#QXtK9D?#{1xVFqSUp_XHHLY>S2k*5R zla)8TVy;&c{dh7Lvj2_O_lYq`e@nDJ=v7?%+}|vxYz+$H5<4yi2{dIHH0E6=qxbYo zoJ@W#+ox6KiR-_p3_Rk1z-tH8N7WA;#b+B{#;)*Nbw!2gj3LW5!usM)!#-TGtxp-f z3eO(_3Ap>e!qCI;{d)fk8w+gst>}=K)wTzL%Lcl|gUs6bouooq%k8tF0fr&rDsy_J z=jorB3njtysAEP+Cde=-z%6hn8%(O7M&6#X1S9KL4}&D1lQp2~YZ3lMIoSx@nlv`7 zZ?PBzn%7jMzLz|vNF&6TUmboFX{6bY@l9Sk`(C50l&T7ORQ~ImPZY@UF&`CBP*8C0 z=R=_@y;GtmyR3&LG8oynTM=GdsxTuhRljwaVshq782k-jmIn-&WZPb<;8X zBqNRN{v|b9UUxh^*nFy|eI$Hc-2SZ2LdB7}rCek=-n^H*FM&4G@<-p;Y)5NINKT(f z3WH(`LTkdTEB+vxl)wy9JpJulI*|4wclprgxkQf{g2;5Sp@IS(R03~RA;ZU`dzlvW zh|syIPz63liQNG5bj1W}hpG)eDyZy%C$1cE_~1(d$eyOQ2ai)Lm&O+@*P`2;K?zs(3=M;7GS z=i26FdLOZY#T?1Vdt*vnVLFg0*Vc!oi=T-OZ6`ipq#RBv>%*uWY7YiNPlt#g^ImLL zhORCToTlD1#^_ymZEkQ#!sVxxl?WhL)yqo1VWi~Mr1j#^ZVBxzew>-CT4Eg``Q)+Rg-1Q*@q@Ftmy_Nwu}~|qP0tnzDo2kYdX|f0AD_2V zl+T6;A@j9-HT&`}Hpe^$ZKot&g|OABA-2x%VbeO+A3Xah>H8>afQw0`b~45|_Z5PF zC5h%EYA)#9cjhGby(b2u?bSAw18nG3+nm&aurKOd9%ehSF}8OeugQ!dVHrF9NbFwS z*#tC)r&(Cew|YK&fnKuUk;5EInQdW%7S|# ziM5Fx23-LaG)P=nBOCw~sy2S@jZ@ufsMsqDX$qc%jhE~^G)5V;PF_`(IJbefmHScq zzEVe_q|>bm3$`F43?6W5({DJ-q>;?Nyt(x~FQ{N{bhjJcLO0KQV8JeY)p=qkaP~%l zldsn-6PNr7ve+w`U>EXZUa0rBbzc20ew!x|;zIbwlcv)UyQCQxzO!RV`?D_7%F=Ld z)PTu~XG`$#F;qJFrc1az)0bm29cRTQ6y}35{o5yE5b?0-gV*Gv68%Sc=Yphi%r#zd z7BMq{yV;X``+L%z_Yq@qF}G{8`1`5)=H9M29~$_bZV5GWXfx`b#6*wK(=d4-o(}ez zj~#)*h$ri*h>Q@`1P0^njSbO{q${uzbG1&za!QkudLOK?V|p5AY)n~-9ETok{Civx z#~3MR>Q6)+j)R=$1{Q*AHrEBNkdC{>LVW9?Txa8UFeq1Vfaj62$D7LKuf@wceiaA# zh0~@X!z2vzf%D9ak`lQU-FHpr24K7={QZry;gSc6W6Qs#ZR_q2{CY_I*nQmWp#OyR zL<-NZyR8+_MFs?`y*)mY8 zeG9cz5D1nr9{*=*y-(Q}!##jvT`9(sl%Ved3&&KTs)U zlWlxlkqVPUy>@C_lFSzkIT}T3tf?#Qb-(v?Z=*Sxte;(J%DxiTp5%SU&SQ1%{P+sduw*jZ^--ds z>ao{E!E;1>1|qYpNk1Z5ZO>f#g5;8X?zZf%>}9|R)M4Itx(@@sG$EUpN!Y0Mb2Y-@ zrzy%%yXc3_G3!U|SL!pw&lT6cU5GKqb8$)C4v*?TehZr{qrxz@oLKYn|QLw1%e2VynFf!yH#urweh(wQOv-jQfmWdY2u1fu2%c|%t`}}|1a`i*t3rK-SF($|z zDNKkd6b~K)=pHN5QLsoQKa%n{l_qD25CQp?YKi$6&{~mKWgc#k}t$(#cTt zM#n9StT1KSyDSH>2|3a7I{u&Bs{f_D;@*-<#ssikv6ilp@#lXG>7fK0y2}6Ju|Gxt zAtq)p$wPms8Sr|qoXjI~YZ%xZwCu~KuK%Z>MPKd(JOX?+VeJ0D8=3!)Ag#%KMM_f` zXJprOZq>pw(=j!+_^lD31;|(90hMeIaoHn;0cDrvM`j4>kLFLBUpb0X%W_wPuRMe- z+wPcnb4dA11!6hY?VUiN6UNQmF5EQBI?rcuUtK@5XVcQloljp=Ph$4wxLzgg|LL2V zg>^Po7%^3s2GIT=q}=@ZUmnJhqZV#}RYtIlUfFni+MgZnE;5$KX4FlM**6#IJ4TkK z#qnWcFQO$8UdL*dJcXkJ{@b8ge#IP(>VAR% zc$-X(k?-ES{)4`0LOyI-)=jrij1)?Q#Ev;2j*;mG+n>Nw?8-|hwT!=%JGSK)^KnR5O~RWmD?0hMk;k~ffHf2NRuwGs#0jOzv z++Kwf{*Je!uN;*~_QHs10H`9Y{ghhWB0Ft{B)r}ucNzdQna!?1iGdN|vV;D6OZep0 ziGcInV!UriB?n6lFu^CVPpNND_+D(amTO!a;z-@Etrsm7!IaHN{UH4Z7XCy>z$QRY zk+C!vON33pckx{%H-5$Z7Xjb5fOh?*FN=2{Y_JUHGWPIq0^@x%dhjDgKrnXbaYH%l zO(6@}WNQRaj9>D;WW6JV+|}fbymfhd+F*NzOF|C6^fsxe?InpIp|!J< zrQVpb)z6OovArdQ@#gxOmTH6xyHYTcJIbo6H9kCW|Q_wH{vP&1d-d z5Rq?oV5~ME)wK$^uznQ=+nd^FHwt&`$Q|L%h-OwzaTa0~<}Pmavq&jD~w?fAWtEk2DYq z()W4|w=|i5GZLgLdr6#J?QQ6QzN;>hLVL?3@|T}e1V-+zu3#j41S5FP-NqvQ2qzSN znwiPkuvp9p^-D6d0>60UX#E(H77(s+#8hA-e zfl*ciE30vC0j>B1IMn0`32HZ0fYJG?M5TPh8x(?O6is-OttDI+`5T zh8`XVVKmn>ZvpqAL_w?m()-9efG5i4cfa%oRu;ILn$5r-DV028l`?NHLj(*Kf#7>~ z5&#LEnG5A*ETY}y+t0^&;-yvq788pF)m*UnD=KW~6Xy<#mDffG;!{RQwGGbRFXMLn zo|a&ZZv1Xx(h1z2Yd^33LknI7fXfq_(qZr40d%poIQWsDr2IJ1_c-fZf@Zk5>3cAZ z^Epb8joubK1*er;>Wu%0Pp! z^eybex-EFa&t>KDyV$gxTyNJdQ;Ve)Q0p2^`w;$f!{iax4qfBOQyOWOIydLv5_lnS z6!qy#zulYtZ#541<8QD22|B)!X@x{T#(Mo;o*h&6yM4+4Ij~kB_W62Q zE&of_W1b~XgV(wfZPZg?J$io@iWR1{34v+=Bf3d&nJdVj0OUNmlg0>!?@~Wl_^RH# zW(8AoHXe}tDe(NUP>G^Rp7Oy_~6x^9PUuj1-GWWjQFIP1!%Zm4Db<+1wJH zR_Lz`u~`*K2Vm+C05H7?G^US15;5EE!(}$H{s2_K{g2+PQpq1dN@;{8!VoQQwz11! zh#-Roj4uChWU9b>*Rn&#$vc1_!RB$RG#Lx<5TV8L^Y5Od19)n`0kIqi&u7f=`|4is+NR$Sk?l(KcEl#8xZiri@f8p|K5g+ zBVnJ?tE|o1W%isP9BRfGJU?5Oh*tpj+X{98!c?9|L8DEEqtp6E)AL=t3}s`s=U?+j zibQ~TuBMj#_=k?L2Tzr4SRG@l@c~Gn?-V1Xlt5tmVSpE0_+R);;A(cK>0RurM2fX1 zKX+Gam7^xZCrqLX+iWrm~T|KsBU)%o>8HD^fM zC8nBy0qk^rE&vKT!2dVe{{)4C#$}sTGDjyeuqHA_M-*!saDnUS>?$@L6&&r znTA5~%lMXJ$&#|fB8GjE*HhcVPgMZCo$nn-5^xhsf;sx}(*#+-Y#%x+!!J|4m9j(8 zpF&|lK&^E$S?enlpy$}u8mIN@-*o%)BCQaYUCN8sz!cL!aD(hGR&(3Iy*?cUsCNHvsX% zqM02O;81}c%NR6dl4udw+7-TB9x-eBSE|xd_TRFDP6<7~)9}_4M2IbtlddO6gUdD& z*!akLpf0pnA{YZ^jeHbZp9j&5XBoy=-f8GiEA5WHy!UCU4g-IR%Iv1{ZKNzvd*T|8gBLeHPa{0xE;#8GV{hGM=itJpCDQ(t_BnIz){2wSUhUQ(JIN-0%2 zznmsd$xu>`qd*~$@6UI7h#jpT zyG1@*^>)Ru0^d~{NH>X_`PIu-DgmpK1Y#yUKS{fneWIIX7t@_f@Ek4FdEQ^_>u`K{ z@5~SjfGU4AkdfmKNgIol@`sHz|DPL2b6FdLc9{>8>p@JCda(R{=MaJZhLF%2OHo$GxGfz@L*%%=;`g ziY=D8PFEWMBrHN6(~mE;h?`yJvYcxGORAy8IvsgUsROh!baBi6Usm@J5|ZF z=)De&-yv{SY6#5EAE1u|+swMQd-CW`mzmmS>O4sU{1-^U&qi_+rQ}Sa;Q}rNq4BjCIp#=+Xg>*(1QQBypsSgnJ&Gn z{R3q?xResa4w-o4#z=T-QHqeOu-T@pt72++ZLxY(n z>)Ibo1SRr7Dc^Z|ep&Capn%>(j#exaI*xgFg-W8j%Rh2wzCphpFJLq&o@pDgw}cfY zcI_A4OW=xw+y+m?-*AH;JfJ#N5_VUgkpNPp$ya^N;@-TxV|01$3y+}-C5_3wl@$k24+YqNVyx8tR*DBW`q0aXCrqrT;O?hsFGrsF ze=2^hM~aE{(BG62I9osw)4SbOxP%n^RFHc76nw|kloTtBH<=!Mb>Z)D>Q7kJ#NcKg>q&_@W|D9+oDgwjFm6kNp*3aAY%pHCTFwD!*9bzjyhU*!^Eg%i={W6mm3S?&nGpiLwO3U@iR?jp04+(lIkr z(0%fB=3PuB$R;eNM^S%v0j%CjWao96kE}t*PD)Um?)sfA%r+9gGnb0Zc-zj@6v-dn zV=kLxtdz9?1;{b;oR4=4^j!1xJgk5q?21Xe za_fY|9=O?z?YyDv^1J6d>-fe^OFu75VivknTlmxHRfxw7w0x*@{Q`?>876%Q+<*5fAr>IK+*vk+pC=LqxCdT=Bc z8@)5>7_!y;6OUPApbyu0mTgL6EomQC>)LK_npC+=x32?rtgxR?Eu3R|6@yyk;7Fvc zJ3Q^XKfK~M<15--y*#lbaZFq7_Tb=cbHciSf)HxqgHRJ^tN~q}$ImqBcz5EDA157W z3zyp^1yd3CdjAS?%zz6Us_T*Sk2D?|&`q*KFP*|MQp(?gb{EH0_{h`TUx_Evv%AlC zE>4x3+qHDQEuR;hAHYlxd#j`T%J!-@j)|)1m>x8K;Fp?QsaWXb37>H3BbOE(?FZPB zJ{XLbDhEHNKMV0*wlYQN{JT+)-d%G{P{zAOpCz5xqAZ)}G$%uq(jz{K*Q{MOafiEl z@v|xX22qI64ALV`1nTX%_>QCL$Pa1$cE$X#mO9?=0ei)hpBN ziY>Xx;djHmYWgN~WpT~3z%N!w!VE$P?TnPZek+MoC-%o*ltZ|bMN4NFL4h+zTjw8yA=o3*VT%pk{xTbk)dn zDH?*RIS5V*AtN(}AI25__BjYb)ttM>dGwTa{Tegh9GUB8BV~5Nt3NuPoSSQh;gd<6 zS!eBl4mW(4UVb^+O8C5KVCg7fik4C3>?Hm$W1I4WTKIZSnq-pSjF9~R5?z} z&F1IaHXcWaU+w8m;e?#z)e-orTywi*&7-$g&r0U?K=WoO#{8+iV?JUnQ*XiEW7TwS zJ;8w&wMt|4m0FNdApLMQ01MjuM^-yNsMB&dP3jUu) zI^$>p= z7!q8~>{GbSD{38^*eq0kHcZaEd}0uY zLo0+@+Ai#24LKC;uG(Sg3fH;w)pyKv&c!xQ*JHCzf zul>!I;CSkqp9^Syo%C~k3SYdFb939Hi9{$EhFlg}Iz~9uL%nJ@wl1QbR-h+jW7=XY zJ`+cynk8O4^(eITtjsOG=gX_6@pgFou(z>#li_&QIV7}jwWoZB@Sp(n`)!Q<)wyk4 zEi~gJu<6nCZZ4xf@2kFBbA|G}7i;r!QuVeD|Kmz{tab<+IHrMVODFoavG<|q&b?KR z8eBsidO9F&{@Dsx_8?7Pf~gsM*#>r?-L#A#Mmt@sFr#m&m~HpVr|8<4e842CG?<^| zP^QyH%e$qrBdjoVL#bWS=*-+WjWJ!xEXk;@=+th8WbEWH=$O~Xra!xF=i;bg5Vr~M&K zue-MsF|{wWi|2fq3h|B%wQzJS zy7R`(eM-3I=-5vlMvPdgpW!YKcieC3lWMg^C<&3wBGWi=B6KhOdfBD)^QfK z$!Qbz)$hyqlzYuH?411!m$n-{34N8evr;_YH&4%NF7d-V&ir`1IkHcj=3>9$%K7oU zuc#gKGYNQd@YbYr3PuWJ_SwyTZ-C(qrK2a8F4Ivx^=G5i=8bV7Iu}_F>XWQbH2Z_ zsZ3g=QqRia3y!Nhr9ET&lQ?_i>(a{NJV^M&j55oSs}WbjTbOjHBh_JTUD2@CTxuXG zKJ(dcye>b6zTL6Cw`@(RoMf6M&@(cjW6|pGM*bADx8K6bLP1YDSKSwMKYCE$vkM~` zm=%Mw4%!85l-E32*(3gVzkK%FcAsSZh@NS!@<&3nhqyKsGH#V%-(gO&M84zZF;UsX zlceo@W*VXeZzE`NxnJkg-$;en>7RBdY2QYC@I62b_Xvg9lL_Y{SI|De3+ACJ!Rc2p zr(cGCoT%Hll#&v2@ZB|4+b9%wlJb7>tP#yIlb?YM4c=yn`GdWND|aq(&v>Hr9D7=n zEe#Lf8^=iK4xf0hp9lp9(OCEBa!B*)eV_+c9^@ATj)5tkaJ0j|97-;tGnKLOq|S`G zM3CT$nyMap0tj#Qa{TU*bGwEZq;6~Qee+!f?g7WI@ZX-3(xiFtMO8ZuMw6Dp1#^99 z*8GLBA1aqzl2UUc6c#9QTywzX3$7whfF?6{A1|Gs^Co_5)~~V=I@e)|@Jac8{vw2t zZhj^8%%~JAOmEA3dmPmg*>p;o&+S10CTs0I<+!KWWb0VVV+ZYTe0Qc}RXW_1F$#YS zA8MDNp4aC%>J?a<)E&fN3%{GVsKIfWX3>+!~$ut@*}uIkHu`2KZd{j$!FD zOj*7TDMynQypbFq=bYV^;=UNi3X>_1CU7*+$YVv(%T5p8GS*3+EYdJ`5NF<;R)6MJ z8NMYnebd0l&hd%bG%)G)j4=h?M5!VT@YWp^x%&g;+x@&f0R<0(iQ?9jHxX` zhTFB-`#$e&VDO)r^~g;QH!|nC?T?~OS_ozxCf+2x{py20`?J{+c$vJ|gPIx4^&{N3 zAsOvLQuFk5NBKahyYSUsiy6-pilE(OIeIX|kaJRZonnjKXs_7!*ORLzHNf7d_2=wV z((G|Z^o%09{mX`7*EU`$Bg4kCjVG#nP=n1OA)NJfRSxzGrYHQ#>y>pLyAQ80Va&P? zgp37Xn7=iNr(FFEJX?j`;D5A?;ewFmI=3EII(NgWCd2K9ObJJpB<9_6TVF=Y1h)~) zF7m)Pw6_lphB4b7rL=2&^>Ui!%O~dItv&RIwn@h7dcVL|SLEc|O7?N(eu;XsCG6C7y0WcLJ+DI7u|b{d+6z~*b|HiODiFja zOga>JwY5l{w+TJu72Y0;cT~6uiV7(HWN*nDV>%mn6H&<*lGp5))ND0a}nASb60G~h3YSG{4j&?+ih3U^Qez*gC_kC zGY#0mpzoRXYHZtOL;FXiI(ey2&!0jP$F=DKK~|}kVeIbJ8o2$<_tAQJ`7BeNtJKcJ z)~CJ;5@1LN0c8^=N0LF3<18pF7K=Y+ek=)sOWM*N_a%v(6*Z_})0KLpj1D+`@vw(f z^r*yXMA=u*;UuBhPi0U42%xiMqhP~>+;#Thd`7NBh3t+MIK1oF|4!@vTdT;a^WTfR z8HjBnj~Nf+`abvJb-pAnioV#)y5OrOLkU)59P_PU_I_Ut+$`<_d0;vp7|CU@fHuR! zD+wSBW}o}KcQiY(_Qgu0hW5hS zC7b3q@{Ap{8BMrPD@lTpUTJ!PM!+p7oMxww^#h8l8-BptjJFbJ-f((+Zl_j_6}C>$ zf-(2)#V>h0gZ4h1);`AJs$N8|s_7`7gX&(2ELPa)#c7|@Y3XQi^|l`i^5|Q=rjKPV z(=!3gwxv-6`Z~ew)rTiPO-SbTAM?LiuiWTP5R{X!gK(K*{t~)N zM06kjenP1-Ea9k#?DAi+X%Tj1YsfT0EcA&{KC3+}avI?C)7?vf3-n06qe|>klxGx`0taB9sI{kN$zc-!sTaU=bp567eqa?fV1@=_yUN~!;dk7=b{I`Wb z!@b}8(DGRchKhq;)(e+-UQF5eY*SwBbzqh@|Ix_tul}0oVt1^tnb)M(Oni>27n;Hg z&Xp?nWZD@R-Qi8?f!o1w{ZrVu{mIMfI!xIk$H8_1Jl_Y~)q%&?XCZMpeHmZQZ~!t?;I_S8d_k7IKqMKwlaw*F|bhh!+`XY*bSIC=SU#)s!ZSrHOZ}L#LvmSAO+iu=(0>`M%6q@rF;>Hg(Ls zC$kwYf9PXwHWqKIJtgp>sSm_qJlYqS@iae@uN=2nt$; z@f|`RjGi=FZ z;kr|MKY_VwGJkFiTF<{IT(W`tXO~NIDG1R=yw^WmP6&8`O!H!8)s%Vv6OyXyCK~maEWCZGvJI7}vgo<`~Bcz`HWJ? zKyvju`Ck!XEZ!QuiH0BH9YOEkvGw>|VGR7g9T@yBa9A%gR#kE9l<$B2G`fA}5|`39d1tsy21IJD6iv>VgbYSP>lfxH_2*tB)hpL~m z6nc~XO7ax}Cq6@#Bxg*v?su(Je3hK*L@OcLmn;wYV=S6m^U0PwqES!NhD!eoS|{HsIfY`Xkpwg-u%<#C*FU?k|7LELQQs zQB>inH!Q2#CA+WwEeQgbcCTK$p6ACb>10SGSw6~A4ykluAvlpa-{|b-?>sL<6XI+I zQ%}-HrVcRk)!Q{NN}PhDk#y$eJmv2&dm@D{c)P`ZDK1HFSo%9R!!AIlR=E(y+sLYo z3`v5VeE3`oYI#P)*=)=@ytZ@8HWBmF%?9}7LU_nwWb>972HhX$_}Wr@~u zXYYJ~F+Et*+0jWKA$`8UEk>cH6%SzzW19O{JaUUisKod92qtXU){Z=|5_WY$lT z!FOVfimb^zWgP@qZ;aR8N7pm@jT5wo04uBF!qtK|ug~o11V2yoi1G6s+pZ2Wulu1a zgK)s59dIe-b7V|{?xlqaYrYzp+~7|h2l`Rk$0d1X!t<~ytvLf>G>j>mx68rAUe^)V z`FlNR(t!Y-iCEqR(|b75s*Y+uxNA)vBdAe^p1bSD>C1jH zIDhmFlhgiJ&B9q|IDg$`QXStB`_CSIAr!-b7~f--)A?OSZXh{>;9kiu00&e zw2hBLlwxH&s3B95`dp*2_$*_`IHZzOIkc5y%1}#*d^X3~E-azslyb}pg=JOFqi9l_ zqBN}YqR23VQYON8znJNrxW4P#f4=Y9-Td{MdFOfW`=0x`@8^D=-|wELdaqR0ZShge z*y@B0>((4{Nq?3V+vC^=lvkrm6VJy^BAJ^L_7hWy7AGb5VZ5@_Z!nKA(>iGV;XrOn zf3w|i8%eOc9ZuM>#RkZc;C>h&d#n$llt9hBz)zvUu zWH!5%_0X*80JRlvE`ai`J|QTT`^6=9DQ?i8I%QSL@1;VaqbF6{PxR)IXk7i_iP`7 z^g4QE?9Fyd8F!n?yknIr1drFTgfsoN$Jlo`K~t6E(^#bNFC*Tx4jN_q4#$zqtdtDG z{GVtI=5`lmrR4iyI{yUyD+oY&t&u=)_hYDYEEmn=ig#Y&T`pqer=0_}hbFRzXK+tV zzn&@YTIMU`Z(QnDX|{o`y1`q!=g073B2!#4(3eCqU@uby1mbAtTD$Kv)x3v@1M2Rn zl{G8vTPmI3{IQ-9US?NaWvXTZGV9e@r-wKJkUcPRMUUJ!Zdh;c&!REnyOZRrY)5NH zBa=GLGpEKH9byig;fzSu7fTm%dZsSlFE%6H>UihK9Lo|Jyw=k{s%oQBvbzzG`4;MR z!DPTthIF7;KOaxNm07TI$-3a(KD4~MI-^#+RE$9pnLX(E5HM*yR@6e8v`!KlWu~&1 zdOp^qJT9C**>CGuUL$b>`}I9hx{g+W-?tu#N2{wdbZps9X=khC0{apR9^VaZ@;iPt z>#X#TL%-1b(ueigREg;*>Z2w5Z5hL!`xxh14_Cgeo+h#+o9s?A%5F1AGc?NKDl?o_ zS4G1sm7^J)ungayFB4w0GRnG36YRvgzUgm2`Ch$w3v)Y-RWN?LEyPWuGuw}?Uy1G2 z9hi)eliSjM(rHHwv!<+9Q?j?d3YX;Z{`}w*$0>Cks|iaB?KhiJl1J%N?}o=q3z(Q* z@LI7p*)u*>{^qb%B~)u>MVHK&sEDJ*grC?aQ_>i<@!j6x+^FA3`2&Y2DXW!BUSHR> zb#htR{H{A%Uev8^KtwRY^c?m)*$Fbp{q}Y~c-SW7Z0*~(l6tK|5o!qv|6Q{I@jqp= z0l6N!hBhQ9`p7-i`Vdb2n|k62&d4+Q8d!VS6&b5!hl>=_Ji02>oD6f^v>izKI_%^F zltcxOu++f!FGu<(+1rzeQZw%(HD+Y{u29$oLl^giM8h7(dF66r>07UV4VxVFf^3~d zkKFkmATDJP*sO}b6MT>4?sA%Sf*h;_1CF^WpyQuQF~q-)>TRqptn@Z~ge#zD5E8tj zmWC7$e~QMET!V5rQQ5vX2CyXV{ic8=0Z92Sifvsu`4&Wy6m;#3jwBBb=;A{$Q~+Wu zTY3a=l+lq|i3;em&u2IoM}Ku0K@>3H4dOuLJOqz&d&$tG#sk3TpkaYf6I7Jlwq$hcte=v8azu}hyL1obuOv2hm=f~(~}C@e17=Xc2yzCmO| zI5l0jE!Gu%42WBTjI$~oYXJZj{fXi%FFEh#yQXhB{e%!hHY<^!pJ zaV_r>@`W&%<&511x|V+rjsFK)z6tA%5>vfqtUO-Gj3Nd*?um4{Zl>`iGKk2UTi|A z-}zI4q}G+!yQ+7w3``=R{?M1a6qp%TlkHI}(JcWC*H=jMhnUv;e1N{&5GPvl?Hh~M z9#%8S77`TRw;5NlYp;rNFd4{yA$jPh@REGHJAzNN9tRqDzfWAeVG!AF7Le}Kx1(OC z|8!o{4%`=DByG#5>(Sfm4eP)-l%z;K?lF?29>fEYMdE=Gkvoy8NX#_(lF9wZY&Z=@ zfHBveui>&5U(rCbNp%8<|M7W8kVBC;qeL!I5hn^F$*g)R_3;+K$!!FYLes=~gzMi| ztnlS~)&e|5!%qNUyDaQQLcG0I&4 literal 0 HcmV?d00001 diff --git a/docs/source/nlp/nemo_megatron/customization_module.png b/docs/source/nlp/nemo_megatron/customization_module.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b03570145322cb1b146a6b7731f9b5b8c05583 GIT binary patch literal 216847 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 literal 0 HcmV?d00001 diff --git a/docs/source/nlp/nemo_megatron/mcore_customization.rst b/docs/source/nlp/nemo_megatron/mcore_customization.rst index ebec950fd11b..e9b82a276cc5 100644 --- a/docs/source/nlp/nemo_megatron/mcore_customization.rst +++ b/docs/source/nlp/nemo_megatron/mcore_customization.rst @@ -1,7 +1,7 @@ Megatron Core Customization --------------------------- -Megatron offers a range of functionalities, one of the most notable being the ability for users to train GPT models on an epic scale. Users can use megatron.core.models.gpt.GPTModel (mcore GPTModel) to initialize the model, and then pretrain/load weights into the model. Mcore GPTModel adopts the typical GPT structure, beginning with embedding layer, positional encoding, followed by a series of transformer layers and finally output layer. +Megatron offers a range of functionalities, one of the most notable being the ability for users to train GPT models on an epic scale. Users can use ``megatron.core.models.gpt.GPTModel`` (mcore GPTModel) to initialize the model, and then pretrain/load weights into the model. Mcore GPTModel adopts the typical GPT structure, beginning with embedding layer, positional encoding, followed by a series of transformer layers and finally output layer. In the rapidly advancing world of LLM, it is increasingly important to experiment with various configurations of the transformer block within each transformer layer. Some of these configurations involve the use of different module classes. While it is possible to achieve this with “if else” statements in mcore, doing so makes mcore less readable and less maintainable in the long term. Mcore spec intends to solve this challenge by allowing users to specify a customization of the transformer block in each layer, without modifying code in mcore. We will dive more into the details of mcore spec in the first section of this blog. Then, we will demonstrate the usefulness of mcore spec using Falcon as an example. @@ -9,20 +9,260 @@ We will dive more into the details of mcore spec in the first section of this bl What is Mcore Spec ^^^^^^^^^^^^^^^^^^ +The Mcore spec system requires a “specification” to define the initialization of the mcore GPTModel modules (such as layer, self_attention, MLP, etc.) and their submodules. This allows users to customize these components by providing their own specifications. + +Below is example from original spec system MR, we can see the extra parameter needed at initialization for mcore GPTModel (megatron/core/models/gpt/gpt_model.py): + + +Where the required transformer_layer_spec (for mcore GPTModel layer) looks like: + + +The spec system introduces a new approach to module initialization. Here is a before-and-after comparison of self attention initialization (megatron/core/transformer/transformer_layer.py) as example: + +Instead of hard coding the ``SelfAttention`` class, we are using a ``build_module`` function to build our ``self.self_attention`` inside the layer. +The initialization of layer has become (megatron/core/transformer/transformer_block.py): + +instead of hard coding ``TransformerLayer`` class. + + +There are several elements in mcore spec system we are covering in the subsections. + + + Submodules """""""""" +When building modules (such as transformer layers, attention or MLP), we need to provide a data class to specify the submodules (if any) to use. Mcore GPTModel uses the ``TransformerLayerSubmodules`` as a template for layer submodules. Similarly there are ``SelfAttentionSubmodules``, ``CrossAttentionSubmodules``, ``MLPSubmodules`` etc. + +``TransformerLayerSubmodules`` is a data class, listing all the possible customizable components that you may need in your transformer block: :: + + @dataclass + class TransformerLayerSubmodules: + input_layernorm: Union[ModuleSpec, type] = IdentityOp + self_attention: Union[ModuleSpec, type] = IdentityOp + self_attn_bda: Union[ModuleSpec, type] = IdentityFuncOp + + pre_cross_attn_layernorm: Union[ModuleSpec, type] = IdentityOp + cross_attention: Union[ModuleSpec, type] = IdentityOp + cross_attn_bda: Union[ModuleSpec, type] = IdentityFuncOp + + pre_mlp_layernorm: Union[ModuleSpec, type] = IdentityOp + mlp: Union[ModuleSpec, type] = IdentityOp + mlp_bda: Union[ModuleSpec, type] = IdentityFuncOp + +All layer submodules are initialized as IdentityOp or IdentityFuncOp which allow the input to pass the module as is without being modified. Mcore GPTModel’s ``TransformerLayer`` initializes every listed submodule. In the case you don’t need certain submodules, you can ignore it in your layer spec (which will be covered in the next section), leaving it IdentityOp (or IdentityFuncOp). + ModuleSpec """""""""" +ModuleSpec is the basic configurable building block of the spec system which allows nesting. So this is perfect for ``TransformerLayer`` which could have multiple configurable submodules (like ``Attention``, ``MLP``, etc.). Next we show how to create the spec for a module. Mcore provides ``ModuleSpec`` class (megatron/core/transformer/spec_utils.py) as shown below. The docstrings give descriptions of the components in a ModuleSpec. :: + + @dataclass + class ModuleSpec: + """This is a Module Specification dataclass. + + Specification defines the location of the module (to import dynamically) + or the imported module itself. It also defines the params that need to be + passed to initialize the module. + + Args: + module (Union[Tuple, type]): A tuple describing the location of the + module class e.g. `(module.location, ModuleClass)` or the imported + module class itself e.g. `ModuleClass` (which is already imported + using `from module.location import ModuleClass`). + params (dict): A dictionary of params that need to be passed while init. + submodules (type): A dataclass that contains the names of submodules that comprise the module (specified by this `ModuleSpec`) and their corresponding `ModuleSpec`s. + + """ + + module: Union[Tuple, type] + params: dict = field(default_factory=lambda: {}) + submodules: type = None + +Remember how we create the mcore GPTModel layer spec from the spec MR: + + +We are + +- assigning the ``module``, which is the ``TransformerLayer`` class used in mcore GPTModel +- initializing the ``TransformerLayerSubmodules`` with desired submodules overwriting the IdentityOp/IdentityFuncOps (whatever not specified here will remain IdentityOp/IdentifyFuncOp) + +Notice that the ``self_attention`` contains submodules itself, so just like layer spec we create a ``ModuleSpec``. +Next step, build the modules. + + + Build Module """""""""""" +``build_module in megatron/core/transformer/spec_utils.py`` builds the module according to config and spec. If the module in ModuleSpec is an instantiable class (among many other cases it handles), build_module tries to create an instance of the class using: + +- all provided configuration (params in ModuleSpec, args, kwargs passed to ``build_module``. Some configs are wrapped within ``TransformerConfig`` class) +- the ``submodules`` field in ModuleSpec, if it is present, is passed as an argument to that submodule’s class so that it can be used to initialize those modules. + +Let’s take layer initialization as an example. GPTModel passes the layer spec and the provided configs to ``TransformerBlock`` and layers are built using ``build_module``. Mcore GPTModel uses ``gpt_layer_with_transformer_engine_spec`` shown in the example above. According to the spec, ``module=TransformerLayer`` says the ``TransformerLayer`` class should be initialized with provided configs and the ``TransformerLayerSubmodules``. Inside the ``TransformerLayer.__init__``, layer submodules are built using build_module. + Customization Examples ^^^^^^^^^^^^^^^^^^^^^^ +We can customize model initialization and also model forward. + + + +Let’s take Falcon as an example to see how to create its layer using mcore GPTModel with spec. There are several differences between a Falcon transformer layer and a conventional GPTModel transformer layer. Customizing these Falcon model variants would be difficult to achieve without mcore spec. + +- Some Falcon variants use parallel attention where the attention and MLP are parallel instead of sequential +- Some Falcon variant has ``input_layernorm``’s output fed to both MLP and self_attention in parallel, therefore we cannot use the default fused layernorm+linear ``TELayerNormColumnParallelLinear`` class in Falcon layer spec +- Some Falcon variants have one ``input_layernorm`` before attn and another ``mlp_layernorm`` before MLP +- Some Falcon variants have extra ``post_self_attn_layernorm`` submodule + +We need customized at two levels: model initialization and model forward. + Customize model initialization """""""""""""""""""""""""""""" +Below shows how modules can be customized at initialization using spec: + +.. image:: customization_module.png + :alt: Customize model initialization + :width: 800px + +For the Falcon example, we instantiate the ``TransformerLayerSubmodule`` data class and manually add the extra attribute - post_self_attn_layernorm (A cleaner alternative could also be to subclass TransformerLayerSubmodules dataclass and then add to it another attribute - post_self_attn_layernorm). We specify the classes/modules we want for each submodule in our falcon layer. In the end, we specify the layer class to be our own FalconTransformerLayer and pass in the submodules to create the ModuleSpec. :: + + def get_falcon_layer_spec() -> ModuleSpec: + falcon_submodules = TransformerLayerSubmodules( + input_layernorm=TENorm, + self_attention=ModuleSpec( + module=SelfAttention, + params={"attn_mask_type": AttnMaskType.causal}, + submodules=SelfAttentionSubmodules( + linear_qkv=TEColumnParallelLinear, + core_attention=TEDotProductAttention, + linear_proj=TERowParallelLinear, + ), + ), + self_attn_bda=get_bias_dropout_add, + pre_mlp_layernorm=TENorm, + mlp=ModuleSpec( + module=MLP, submodules=MLPSubmodules(linear_fc1=TEColumnParallelLinear, linear_fc2=TERowParallelLinear,), + ), + mlp_bda=get_bias_dropout_add, + ) + # falcon-rw-1b/7b uses post_self_attn_layernorm that is not included in TransformerLayerModules. + falcon_submodules.post_self_attn_layernorm = TENorm + return ModuleSpec(module=FalconTransformerLayer, submodules=falcon_submodules) + Customize model forward """"""""""""""""""""""" + +Here is a diagram showing the default GPTModel v.s. Customized forward (Falcon). + +.. image:: customization_forward.png + :alt: Customize model initialization + :width: 600px + +To achieve that, we create ``FalconTransformerLayer``, subclass it from mcore ``TransformerLayer`` and override: + +- ``__init__`` We can reuse most of TransformerLayer ‘s initialization, but we need to handle the creation of the extra post_self_attn_layernorm +- forward to reconfigure the computation graph + +It is necessary to subclass your own transformer layer from mcore ``TransformerLayer`` class. +Full implementation from NeMo repo: :: + + class FalconTransformerLayer(TransformerLayer): + def __init__( + self, + config: TransformerConfig, + submodules: TransformerLayerSubmodules, + layer_number: int = 1, + self_attn_mask_type=AttnMaskType.padding, + ): + super().__init__(config=config, submodules=submodules, layer_number=layer_number) + + if hasattr(self.config, 'new_decoder_architecture'): + self.new_decoder_architecture = self.config.new_decoder_architecture + else: + self.new_decoder_architecture = None + if hasattr(self.config, 'parallel_attention'): + self.parallel_attention = self.config.parallel_attention + else: + self.parallel_attention = None + + if self.new_decoder_architecture or self.parallel_attention: + self.post_self_attn_layernorm = None + else: + self.post_self_attn_layernorm = build_module( + submodules.post_self_attn_layernorm, + config=self.config, + hidden_size=self.config.hidden_size, + eps=self.config.layernorm_epsilon, + ) + if self.new_decoder_architecture: + self.pre_mlp_layernorm = build_module( + submodules.pre_mlp_layernorm, + config=self.config, + hidden_size=self.config.hidden_size, + eps=self.config.layernorm_epsilon, + ) + else: + self.pre_mlp_layernorm = None + + def forward( + self, + hidden_states, + attention_mask, + context=None, + context_mask=None, + rotary_pos_emb=None, + inference_params=None, + ): + + residual = hidden_states + + mlp_ln_output = None + if self.new_decoder_architecture: + mlp_ln_output = self.pre_mlp_layernorm(hidden_states) + + input_layernorm_output = self.input_layernorm(hidden_states) + + input_mlp_ln = input_layernorm_output + + attention_output_with_bias = self.self_attention( + input_layernorm_output, + attention_mask=attention_mask, + inference_params=inference_params, + rotary_pos_emb=rotary_pos_emb, + ) + + with self.bias_dropout_add_exec_handler(): + hidden_states = self.self_attn_bda(self.training, self.config.bias_dropout_fusion)( + attention_output_with_bias, residual, self.config.hidden_dropout + ) + + if not self.new_decoder_architecture: + if self.parallel_attention: + layernorm_output = input_mlp_ln + else: + residual = hidden_states + layernorm_output = self.post_self_attn_layernorm(hidden_states) + + else: + layernorm_output = mlp_ln_output + + mlp_output_with_bias = self.mlp(layernorm_output) + + # falcon specific: + if self.new_decoder_architecture or self.parallel_attention: + mlp_output = mlp_output_with_bias[0] + attn_output = attention_output_with_bias[0] + mlp_output_without_bias = mlp_output + attn_output + mlp_output_with_bias = (mlp_output_without_bias, None) + + with self.bias_dropout_add_exec_handler(): + hidden_states = self.mlp_bda(self.training, self.config.bias_dropout_fusion)( + mlp_output_with_bias, residual, self.config.hidden_dropout + ) + + output = make_viewless_tensor(inp=hidden_states, requires_grad=hidden_states.requires_grad, keep_graph=True) + + return output, context From 463d383745ec5006864c94c4e2723fac1c4cbd43 Mon Sep 17 00:00:00 2001 From: Huiying Li Date: Wed, 31 Jan 2024 23:52:02 -0800 Subject: [PATCH 07/10] add diff images Signed-off-by: Huiying Li size Signed-off-by: Huiying Li --- .../nlp/nemo_megatron/mcore_customization.rst | 38 +++++++++++++++++- docs/source/nlp/nemo_megatron/mr1.png | Bin 0 -> 74797 bytes docs/source/nlp/nemo_megatron/mr2.png | Bin 0 -> 73975 bytes 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 docs/source/nlp/nemo_megatron/mr1.png create mode 100644 docs/source/nlp/nemo_megatron/mr2.png diff --git a/docs/source/nlp/nemo_megatron/mcore_customization.rst b/docs/source/nlp/nemo_megatron/mcore_customization.rst index e9b82a276cc5..7dab33708ac4 100644 --- a/docs/source/nlp/nemo_megatron/mcore_customization.rst +++ b/docs/source/nlp/nemo_megatron/mcore_customization.rst @@ -13,14 +13,48 @@ The Mcore spec system requires a “specification” to define the initializatio Below is example from original spec system MR, we can see the extra parameter needed at initialization for mcore GPTModel (megatron/core/models/gpt/gpt_model.py): +.. image:: mr1.png + :alt: + :width: 500px -Where the required transformer_layer_spec (for mcore GPTModel layer) looks like: +Where the required transformer_layer_spec (for mcore GPTModel layer) looks like: :: + + gpt_layer_with_transformer_engine_spec = ModuleSpec( + module=TransformerLayer, + submodules=TransformerLayerSubmodules( + self_attention=ModuleSpec( + module=SelfAttention, + params={"attn_mask_type": AttnMaskType.causal}, + submodules=SelfAttentionSubmodules( + linear_qkv=TELayerNormColumnParallelLinear, + dot_product_attention=TEDotProductAttention, + linear_proj=TERowParallelLinear, + ), + ), + self_attn_bda=get_bias_dropout_add, + mlp=ModuleSpec( + module=MLP, + submodules=MLPSubmodules( + linear_fc1=TELayerNormColumnParallelLinear, linear_fc2=TERowParallelLinear, + ), + ), + mlp_bda=get_bias_dropout_add, + ), + ) The spec system introduces a new approach to module initialization. Here is a before-and-after comparison of self attention initialization (megatron/core/transformer/transformer_layer.py) as example: +.. image:: mr2.png + :alt: + :width: 600px + Instead of hard coding the ``SelfAttention`` class, we are using a ``build_module`` function to build our ``self.self_attention`` inside the layer. -The initialization of layer has become (megatron/core/transformer/transformer_block.py): +The initialization of layer has become (megatron/core/transformer/transformer_block.py): :: + + def build_layer(layer_spec, layer_number): + return build_module(layer_spec, config=self.config, layer_number=layer_number,) + instead of hard coding ``TransformerLayer`` class. diff --git a/docs/source/nlp/nemo_megatron/mr1.png b/docs/source/nlp/nemo_megatron/mr1.png new file mode 100644 index 0000000000000000000000000000000000000000..21c2d8fd351ab44b501e68ca15cb03974a5556b5 GIT binary patch literal 74797 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 Date: Thu, 1 Feb 2024 00:03:36 -0800 Subject: [PATCH 08/10] minor fixes --- .../nlp/nemo_megatron/mcore_customization.rst | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/docs/source/nlp/nemo_megatron/mcore_customization.rst b/docs/source/nlp/nemo_megatron/mcore_customization.rst index 7dab33708ac4..408eb7e070bb 100644 --- a/docs/source/nlp/nemo_megatron/mcore_customization.rst +++ b/docs/source/nlp/nemo_megatron/mcore_customization.rst @@ -105,7 +105,7 @@ ModuleSpec is the basic configurable building block of the spec system which all module class itself e.g. `ModuleClass` (which is already imported using `from module.location import ModuleClass`). params (dict): A dictionary of params that need to be passed while init. - submodules (type): A dataclass that contains the names of submodules that comprise the module (specified by this `ModuleSpec`) and their corresponding `ModuleSpec`s. + submodules (type): A dataclass that contains the names of submodules that comprise the module (specified by this `ModuleSpec`) and their corresponding `ModuleSpec`s. """ @@ -113,8 +113,30 @@ ModuleSpec is the basic configurable building block of the spec system which all params: dict = field(default_factory=lambda: {}) submodules: type = None -Remember how we create the mcore GPTModel layer spec from the spec MR: +Remember how we create the mcore GPTModel layer spec from the spec MR: :: + gpt_layer_with_transformer_engine_spec = ModuleSpec( + module=TransformerLayer, + submodules=TransformerLayerSubmodules( + self_attention=ModuleSpec( + module=SelfAttention, + params={"attn_mask_type": AttnMaskType.causal}, + submodules=SelfAttentionSubmodules( + linear_qkv=TELayerNormColumnParallelLinear, + dot_product_attention=TEDotProductAttention, + linear_proj=TERowParallelLinear, + ), + ), + self_attn_bda=get_bias_dropout_add, + mlp=ModuleSpec( + module=MLP, + submodules=MLPSubmodules( + linear_fc1=TELayerNormColumnParallelLinear, linear_fc2=TERowParallelLinear, + ), + ), + mlp_bda=get_bias_dropout_add, + ), + ) We are @@ -122,6 +144,7 @@ We are - initializing the ``TransformerLayerSubmodules`` with desired submodules overwriting the IdentityOp/IdentityFuncOps (whatever not specified here will remain IdentityOp/IdentifyFuncOp) Notice that the ``self_attention`` contains submodules itself, so just like layer spec we create a ``ModuleSpec``. + Next step, build the modules. @@ -138,9 +161,7 @@ Let’s take layer initialization as an example. GPTModel passes the layer spec Customization Examples ^^^^^^^^^^^^^^^^^^^^^^ -We can customize model initialization and also model forward. - - +Using Mcore Spec, we can customize model initialization and model forward. Let’s take Falcon as an example to see how to create its layer using mcore GPTModel with spec. There are several differences between a Falcon transformer layer and a conventional GPTModel transformer layer. Customizing these Falcon model variants would be difficult to achieve without mcore spec. @@ -149,12 +170,10 @@ Let’s take Falcon as an example to see how to create its layer using mcore GPT - Some Falcon variants have one ``input_layernorm`` before attn and another ``mlp_layernorm`` before MLP - Some Falcon variants have extra ``post_self_attn_layernorm`` submodule -We need customized at two levels: model initialization and model forward. - Customize model initialization """""""""""""""""""""""""""""" -Below shows how modules can be customized at initialization using spec: +Here we show how modules can be customized at initialization using spec: .. image:: customization_module.png :alt: Customize model initialization @@ -189,7 +208,7 @@ For the Falcon example, we instantiate the ``TransformerLayerSubmodule`` data cl Customize model forward """"""""""""""""""""""" -Here is a diagram showing the default GPTModel v.s. Customized forward (Falcon). +Here is a diagram showing the conventional Mcore GPTModel forward v.s. Customized forward (Falcon). .. image:: customization_forward.png :alt: Customize model initialization @@ -201,6 +220,7 @@ To achieve that, we create ``FalconTransformerLayer``, subclass it from mcore `` - forward to reconfigure the computation graph It is necessary to subclass your own transformer layer from mcore ``TransformerLayer`` class. + Full implementation from NeMo repo: :: class FalconTransformerLayer(TransformerLayer): From 181191886bb9c5be5a4de085c43adb196d01e791 Mon Sep 17 00:00:00 2001 From: Chen Cui Date: Thu, 1 Feb 2024 12:30:07 -0500 Subject: [PATCH 09/10] minor language change Signed-off-by: Chen Cui --- .../nlp/nemo_megatron/mcore_customization.rst | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/source/nlp/nemo_megatron/mcore_customization.rst b/docs/source/nlp/nemo_megatron/mcore_customization.rst index 408eb7e070bb..1f6648d9c899 100644 --- a/docs/source/nlp/nemo_megatron/mcore_customization.rst +++ b/docs/source/nlp/nemo_megatron/mcore_customization.rst @@ -1,9 +1,9 @@ Megatron Core Customization --------------------------- -Megatron offers a range of functionalities, one of the most notable being the ability for users to train GPT models on an epic scale. Users can use ``megatron.core.models.gpt.GPTModel`` (mcore GPTModel) to initialize the model, and then pretrain/load weights into the model. Mcore GPTModel adopts the typical GPT structure, beginning with embedding layer, positional encoding, followed by a series of transformer layers and finally output layer. +Megatron Core (Mcore) offers a range of functionalities, one of the most notable being the ability for users to train GPT models on an epic scale. Users can use ``megatron.core.models.gpt.GPTModel`` (Mcore GPTModel) to initialize the model, and then pretrain/load weights into the model. Mcore GPTModel adopts the typical GPT structure, beginning with embedding layer, positional encoding, followed by a series of transformer layers and finally output layer. -In the rapidly advancing world of LLM, it is increasingly important to experiment with various configurations of the transformer block within each transformer layer. Some of these configurations involve the use of different module classes. While it is possible to achieve this with “if else” statements in mcore, doing so makes mcore less readable and less maintainable in the long term. Mcore spec intends to solve this challenge by allowing users to specify a customization of the transformer block in each layer, without modifying code in mcore. +In the rapidly advancing world of LLM, it is increasingly important to experiment with various configurations of the transformer block within each transformer layer. Some of these configurations involve the use of different module classes. While it is possible to achieve this with “if else” statements in Mcore, doing so makes Mcore less readable and less maintainable in the long term. Mcore spec intends to solve this challenge by allowing users to specify a customization of the transformer block in each layer, without modifying code in mcore. We will dive more into the details of mcore spec in the first section of this blog. Then, we will demonstrate the usefulness of mcore spec using Falcon as an example. What is Mcore Spec @@ -11,13 +11,13 @@ What is Mcore Spec The Mcore spec system requires a “specification” to define the initialization of the mcore GPTModel modules (such as layer, self_attention, MLP, etc.) and their submodules. This allows users to customize these components by providing their own specifications. -Below is example from original spec system MR, we can see the extra parameter needed at initialization for mcore GPTModel (megatron/core/models/gpt/gpt_model.py): +Here is a diff snippet from the original merge request for mcore spec. We can see the extra parameter needed at initialization for mcore GPTModel (megatron/core/models/gpt/gpt_model.py): .. image:: mr1.png :alt: :width: 500px -Where the required transformer_layer_spec (for mcore GPTModel layer) looks like: :: +Where the required ``transformer_layer_spec`` (for mcore GPTModel layer) looks like: :: gpt_layer_with_transformer_engine_spec = ModuleSpec( module=TransformerLayer, @@ -50,24 +50,24 @@ The spec system introduces a new approach to module initialization. Here is a be :width: 600px Instead of hard coding the ``SelfAttention`` class, we are using a ``build_module`` function to build our ``self.self_attention`` inside the layer. -The initialization of layer has become (megatron/core/transformer/transformer_block.py): :: +The initialization of a layer has become (megatron/core/transformer/transformer_block.py): :: def build_layer(layer_spec, layer_number): return build_module(layer_spec, config=self.config, layer_number=layer_number,) -instead of hard coding ``TransformerLayer`` class. +instead of hard coding the ``TransformerLayer`` class. -There are several elements in mcore spec system we are covering in the subsections. +There are several elements in mcore spec system we are covering in the following subsections. Submodules """""""""" -When building modules (such as transformer layers, attention or MLP), we need to provide a data class to specify the submodules (if any) to use. Mcore GPTModel uses the ``TransformerLayerSubmodules`` as a template for layer submodules. Similarly there are ``SelfAttentionSubmodules``, ``CrossAttentionSubmodules``, ``MLPSubmodules`` etc. +When building modules (such as transformer layers, attention or MLP), we need to provide a python dataclass to specify the submodules (if any) to use. Mcore GPTModel uses the ``TransformerLayerSubmodules`` as a template for layer submodules. Similarly, there are ``SelfAttentionSubmodules``, ``CrossAttentionSubmodules``, ``MLPSubmodules``, etc. -``TransformerLayerSubmodules`` is a data class, listing all the possible customizable components that you may need in your transformer block: :: +``TransformerLayerSubmodules`` is a python dataclass, listing all the possible customizable components that you may need in your transformer block: :: @dataclass class TransformerLayerSubmodules: @@ -83,13 +83,13 @@ When building modules (such as transformer layers, attention or MLP), we need to mlp: Union[ModuleSpec, type] = IdentityOp mlp_bda: Union[ModuleSpec, type] = IdentityFuncOp -All layer submodules are initialized as IdentityOp or IdentityFuncOp which allow the input to pass the module as is without being modified. Mcore GPTModel’s ``TransformerLayer`` initializes every listed submodule. In the case you don’t need certain submodules, you can ignore it in your layer spec (which will be covered in the next section), leaving it IdentityOp (or IdentityFuncOp). +All layer submodules are initialized as ``IdentityOp`` or ``IdentityFuncOp`` which allows the user to leave these modules as is without being modified. Mcore GPTModel’s ``TransformerLayer`` initializes every listed submodule. In the case you don’t need certain submodules, you can ignore it in your layer spec (which will be covered in the next section), leaving it ``IdentityOp`` (or ``IdentityFuncOp``). ModuleSpec """""""""" -ModuleSpec is the basic configurable building block of the spec system which allows nesting. So this is perfect for ``TransformerLayer`` which could have multiple configurable submodules (like ``Attention``, ``MLP``, etc.). Next we show how to create the spec for a module. Mcore provides ``ModuleSpec`` class (megatron/core/transformer/spec_utils.py) as shown below. The docstrings give descriptions of the components in a ModuleSpec. :: +ModuleSpec is the basic configurable building block of the spec system which enables nesting. This is perfect for ``TransformerLayer`` which could have multiple configurable submodules (like ``Attention``, ``MLP``, etc.). Next, we show how to create the spec for a module. Mcore provides ``ModuleSpec`` class (megatron/core/transformer/spec_utils.py) as shown below. The docstrings give descriptions of the components in a ModuleSpec. :: @dataclass class ModuleSpec: @@ -113,7 +113,7 @@ ModuleSpec is the basic configurable building block of the spec system which all params: dict = field(default_factory=lambda: {}) submodules: type = None -Remember how we create the mcore GPTModel layer spec from the spec MR: :: +Remember how we create the mcore GPTModel layer spec: :: gpt_layer_with_transformer_engine_spec = ModuleSpec( module=TransformerLayer, @@ -138,12 +138,12 @@ Remember how we create the mcore GPTModel layer spec from the spec MR: :: ), ) -We are +We are doing two things here -- assigning the ``module``, which is the ``TransformerLayer`` class used in mcore GPTModel -- initializing the ``TransformerLayerSubmodules`` with desired submodules overwriting the IdentityOp/IdentityFuncOps (whatever not specified here will remain IdentityOp/IdentifyFuncOp) +1. assigning the ``module``, which is the ``TransformerLayer`` class used in mcore GPTModel +2. initializing the ``TransformerLayerSubmodules`` with desired submodules overwriting the ``IdentityOp``/``IdentityFuncOps`` (whatever not specified here will remain as identity operations) -Notice that the ``self_attention`` contains submodules itself, so just like layer spec we create a ``ModuleSpec``. +Notice that the ``self_attention`` module contains submodules within itself, so we create a ``ModuleSpec`` to initialize ``self_attention`` in the same way as a GPT layer. Next step, build the modules. @@ -152,10 +152,10 @@ Next step, build the modules. Build Module """""""""""" -``build_module in megatron/core/transformer/spec_utils.py`` builds the module according to config and spec. If the module in ModuleSpec is an instantiable class (among many other cases it handles), build_module tries to create an instance of the class using: +``build_module`` in ``megatron/core/transformer/spec_utils.py`` builds the module according to the given config and spec. If the module in ``ModuleSpec`` is an instantiable class (among many other cases it handles), ``build_module`` tries to create an instance of the class using: -- all provided configuration (params in ModuleSpec, args, kwargs passed to ``build_module``. Some configs are wrapped within ``TransformerConfig`` class) -- the ``submodules`` field in ModuleSpec, if it is present, is passed as an argument to that submodule’s class so that it can be used to initialize those modules. +- all provided configuration (params in ``ModuleSpec``, args, kwargs passed to ``build_module``. Some configs are wrapped within ``TransformerConfig`` class) +- the ``submodules`` field in ``ModuleSpec``, if it is present, is passed as an argument to that submodule’s class so that it can be used to initialize those modules. Let’s take layer initialization as an example. GPTModel passes the layer spec and the provided configs to ``TransformerBlock`` and layers are built using ``build_module``. Mcore GPTModel uses ``gpt_layer_with_transformer_engine_spec`` shown in the example above. According to the spec, ``module=TransformerLayer`` says the ``TransformerLayer`` class should be initialized with provided configs and the ``TransformerLayerSubmodules``. Inside the ``TransformerLayer.__init__``, layer submodules are built using build_module. @@ -163,15 +163,15 @@ Customization Examples ^^^^^^^^^^^^^^^^^^^^^^ Using Mcore Spec, we can customize model initialization and model forward. -Let’s take Falcon as an example to see how to create its layer using mcore GPTModel with spec. There are several differences between a Falcon transformer layer and a conventional GPTModel transformer layer. Customizing these Falcon model variants would be difficult to achieve without mcore spec. +Let’s take Falcon as an example to see how to create its layers using mcore GPTModel with spec. There are several differences between a Falcon transformer layer and a conventional GPTModel transformer layer. Customizing these Falcon model variants would be difficult to achieve without mcore spec. - Some Falcon variants use parallel attention where the attention and MLP are parallel instead of sequential -- Some Falcon variant has ``input_layernorm``’s output fed to both MLP and self_attention in parallel, therefore we cannot use the default fused layernorm+linear ``TELayerNormColumnParallelLinear`` class in Falcon layer spec +- Some Falcon variants have the output of ``input_layernorm`` fed to both MLP and self attention in parallel, therefore we cannot use the default fused layernorm + linear ``TELayerNormColumnParallelLinear`` class in Falcon layer spec - Some Falcon variants have one ``input_layernorm`` before attn and another ``mlp_layernorm`` before MLP -- Some Falcon variants have extra ``post_self_attn_layernorm`` submodule +- Some Falcon variants have an extra ``post_self_attn_layernorm`` submodule -Customize model initialization +Customizing model initialization """""""""""""""""""""""""""""" Here we show how modules can be customized at initialization using spec: @@ -179,7 +179,7 @@ Here we show how modules can be customized at initialization using spec: :alt: Customize model initialization :width: 800px -For the Falcon example, we instantiate the ``TransformerLayerSubmodule`` data class and manually add the extra attribute - post_self_attn_layernorm (A cleaner alternative could also be to subclass TransformerLayerSubmodules dataclass and then add to it another attribute - post_self_attn_layernorm). We specify the classes/modules we want for each submodule in our falcon layer. In the end, we specify the layer class to be our own FalconTransformerLayer and pass in the submodules to create the ModuleSpec. :: +For the Falcon example, we instantiate the ``TransformerLayerSubmodule`` dataclass and manually add the extra attribute - ``post_self_attn_layernorm`` (A cleaner alternative could also be to subclass ``TransformerLayerSubmodules`` dataclass and then add to it another attribute - ``post_self_attn_layernorm``). We specify the classes/modules we want for each submodule in our falcon layer. In the end, we specify the layer class to be our own ``FalconTransformerLayer`` and pass in the submodules to create the ``ModuleSpec``. :: def get_falcon_layer_spec() -> ModuleSpec: falcon_submodules = TransformerLayerSubmodules( @@ -205,10 +205,10 @@ For the Falcon example, we instantiate the ``TransformerLayerSubmodule`` data cl return ModuleSpec(module=FalconTransformerLayer, submodules=falcon_submodules) -Customize model forward +Customizing model forward """"""""""""""""""""""" -Here is a diagram showing the conventional Mcore GPTModel forward v.s. Customized forward (Falcon). +Here is a diagram showing the forward functions of conventional Mcore GPTModel v.s. Falcon. .. image:: customization_forward.png :alt: Customize model initialization @@ -216,8 +216,8 @@ Here is a diagram showing the conventional Mcore GPTModel forward v.s. Customize To achieve that, we create ``FalconTransformerLayer``, subclass it from mcore ``TransformerLayer`` and override: -- ``__init__`` We can reuse most of TransformerLayer ‘s initialization, but we need to handle the creation of the extra post_self_attn_layernorm -- forward to reconfigure the computation graph +- ``__init__``: we can reuse most of TransformerLayer's initialization, but we need to handle the creation of the extra ``post_self_attn_layernorm`` +- ``forward()``: to reconfigure the computation graph It is necessary to subclass your own transformer layer from mcore ``TransformerLayer`` class. From b59aa312760ad43bc54db47fc23b7d52b3e0361f Mon Sep 17 00:00:00 2001 From: Huiying Li Date: Fri, 2 Feb 2024 00:12:11 -0800 Subject: [PATCH 10/10] clean changes --- .../conf/megatron_bert_config.yaml | 8 +- .../language_modeling/megatron/bert_model.py | 10 - .../language_modeling/megatron_bert_model.py | 63 ---- .../modules/common/megatron/transformer.py | 27 +- .../convert_bert_hf_to_nemo.py | 289 ------------------ .../convert_bert_nemo_to_hf.py | 269 ---------------- .../export_nemo_bert_to_onnx.py | 83 ----- .../ipa_cmudict-0.7b_nv23.01.txt | 8 +- tutorials/asr/Online_Noise_Augmentation.ipynb | 3 +- 9 files changed, 6 insertions(+), 754 deletions(-) delete mode 100644 scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py delete mode 100644 scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py delete mode 100644 scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py diff --git a/examples/nlp/language_modeling/conf/megatron_bert_config.yaml b/examples/nlp/language_modeling/conf/megatron_bert_config.yaml index b3e3912fffd4..d388fe35b963 100644 --- a/examples/nlp/language_modeling/conf/megatron_bert_config.yaml +++ b/examples/nlp/language_modeling/conf/megatron_bert_config.yaml @@ -2,7 +2,7 @@ name: megatron_bert restore_from_path: null # used when starting from a .nemo file trainer: - devices: 1 + devices: 2 num_nodes: 1 accelerator: gpu precision: 16 @@ -56,19 +56,15 @@ model: hidden_size: 768 ffn_hidden_size: 3072 # Transformer FFN hidden size. Usually 4 * hidden_size. num_attention_heads: 12 - skip_head: False - transformer_block_type: post_ln init_method_std: 0.02 # Standard deviation of the zero mean normal distribution used for weight initialization.') hidden_dropout: 0.1 # Dropout probability for hidden state transformer. kv_channels: null # Projection weights dimension in multi-head attention. Set to hidden_size // num_attention_heads if null apply_query_key_layer_scaling: True # scale Q * K^T by 1 / layer-number. - normalization: layernorm layernorm_epsilon: 1e-5 make_vocab_size_divisible_by: 128 # Pad the vocab size to be divisible by this value for computation efficiency. pre_process: True # add embedding post_process: True # add pooler bert_binary_head: True # BERT binary head - megatron_legacy: False tokenizer: library: 'megatron' @@ -132,7 +128,7 @@ model: # - /raid/data/pile/my-gpt3_00_text_document # - .5 # - /raid/data/pile/my-gpt3_01_text_document - data_prefix: [1.0, /path/to/data] + data_prefix: ??? index_mapping_dir: null # path to save index mapping .npy files, by default will save in the same location as data_prefix data_impl: mmap splits_string: 900,50,50 diff --git a/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py index 7e928a4e893b..22cfd7fb8efa 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py @@ -65,9 +65,6 @@ def bert_extended_attention_mask(attention_mask): # [b, 1, s, s] extended_attention_mask = attention_mask_bss.unsqueeze(1) - # HF Masking is equivalent to the one below - # extended_attention_mask = (attention_mask.unsqueeze(1) * torch.ones_like(attention_mask).unsqueeze(2)).unsqueeze(1) - # Convert attention mask to binary: extended_attention_mask = extended_attention_mask < 0.5 @@ -185,15 +182,12 @@ def __init__( activations_checkpoint_num_layers=1, activations_checkpoint_layers_per_pipeline=None, layernorm_epsilon=1e-5, - normalization='layernorm', - transformer_block_type='pre_ln', masked_softmax_fusion=False, bias_gelu_fusion=True, bias_dropout_add_fusion=True, openai_gelu=False, onnx_safe=False, add_binary_head=True, - skip_head=False, megatron_legacy=False, sequence_parallel=False, position_embedding_type='learned_absolute', @@ -235,8 +229,6 @@ def __init__( activations_checkpoint_num_layers=activations_checkpoint_num_layers, activations_checkpoint_layers_per_pipeline=activations_checkpoint_layers_per_pipeline, layernorm_epsilon=layernorm_epsilon, - normalization=normalization, - transformer_block_type=transformer_block_type, masked_softmax_fusion=masked_softmax_fusion, bias_activation_fusion=bias_gelu_fusion, bias_dropout_add_fusion=bias_dropout_add_fusion, @@ -250,8 +242,6 @@ def __init__( init_method=init_method_normal(init_method_std), vocab_size=vocab_size, hidden_size=hidden_size ) - if skip_head: - self.post_process = False if self.post_process: self.lm_head = BertLMHead( config, diff --git a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py index bef13367eb10..e4ae0f87d353 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py @@ -184,13 +184,10 @@ def model_provider_func(self, pre_process, post_process): ), layernorm_epsilon=cfg.get('layernorm_epsilon', 1e-5), masked_softmax_fusion=cfg.get('masked_softmax_fusion', True), - normalization=cfg.get('normalization', 'layernorm'), - transformer_block_type=cfg.get('transformer_block_type', 'pre_ln'), bias_gelu_fusion=cfg.get('bias_gelu_fusion', True), bias_dropout_add_fusion=cfg.get("bias_dropout_add_fusion", True), onnx_safe=cfg.get('onnx_safe', False), add_binary_head=cfg.bert_binary_head, - skip_head=cfg.get('skip_head', False), megatron_legacy=cfg.get('megatron_legacy', False), position_embedding_type=self.cfg.get("position_embedding_type", "learned_absolute"), ) @@ -1037,65 +1034,5 @@ def build_transformer_config(self) -> TransformerConfig: """ activation = self.cfg.get('activation', 'gelu') assert activation == 'gelu', "Only gelu activation is support for BERT at the moment." - - normalization = self.cfg.get('normalization', 'layernorm') - - layernorm_zero_centered_gamma = self.cfg.get('normalization', 'layernorm') == 'layernorm1p' - if normalization == 'layernorm': - normalization = 'LayerNorm' - elif normalization == 'rmsnorm': - normalization = 'RMSNorm' - elif normalization == 'layernorm1p': - normalization = 'LayerNorm' - layernorm_zero_centered_gamma = True - else: - logging.warning( - f"The normalization type: {normalization} might not be supported in megatron core." - f"Supported types are LayerNorm and RMSNorm." - ) - - # any configs that are not in the nemo model config will be added here - model_specific_configs = { - 'layernorm_zero_centered_gamma': layernorm_zero_centered_gamma, - 'normalization': normalization, - } - transformer_config = super().build_transformer_config() - - for key, value in model_specific_configs.items(): - setattr(transformer_config, key, value) - - # pass mcore customization configs directly to mcore - mcore_customization_config_dict = self.cfg.get('mcore_customization_config', {}) - for key, value in mcore_customization_config_dict.items(): - setattr(transformer_config, key, value) - return transformer_config - - -class MegatronBertTextEmbeddingModel(MegatronBertModel): - """ - Megatron Bert Text Embedding. - Model returns [batch, hidden] shape - """ - - def average_pool(self, last_hidden_states, attention_mask): - last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0) - return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None] - - def forward( - self, - input_ids, - attention_mask, - token_type_ids, - lm_labels=None, - checkpoint_activations_all_layers=None, - model=None, - ): - outputs = super().forward( - input_ids, attention_mask, token_type_ids, lm_labels, checkpoint_activations_all_layers, model - ) - embeddings = self.average_pool(outputs[0], attention_mask) - embeddings = F.normalize(embeddings, p=2, dim=1) - - return embeddings diff --git a/nemo/collections/nlp/modules/common/megatron/transformer.py b/nemo/collections/nlp/modules/common/megatron/transformer.py index 9e9c7b526782..ca8c0ecafefd 100644 --- a/nemo/collections/nlp/modules/common/megatron/transformer.py +++ b/nemo/collections/nlp/modules/common/megatron/transformer.py @@ -625,6 +625,7 @@ def forward( ) output = bias_dropout_add_func(mlp_output, mlp_bias, residual, self.hidden_dropout) + # print(f"Layer: {self.layer_number} MLP + Dropout + Residual checksum {output.sum()}") if self.transformer_block_type == 'post_ln': output = self.post_attention_layernorm(output) @@ -1157,27 +1158,6 @@ def build_layer(layer_number): offset = parallel_state.get_pipeline_model_parallel_rank() * self.num_layers self.layers = torch.nn.ModuleList([build_layer(i + 1 + offset) for i in range(self.num_layers)]) - if self.pre_process and self.transformer_block_type == 'post_ln': - # Final layer norm before output. - if normalization == 'layernorm': - self.initial_layernorm = get_layer_norm( - hidden_size, layernorm_epsilon, persist_layer_norm, sequence_parallel=config.sequence_parallel - ) - - elif normalization == 'layernorm1p': - self.initial_layernorm = LayerNorm1P( - hidden_size, layernorm_epsilon, sequence_parallel_enabled=config.sequence_parallel - ) - elif normalization == 'low_precision_layernorm': - self.initial_layernorm = LPLayerNorm(hidden_size, layernorm_epsilon) - else: - self.initial_layernorm = MixedFusedRMSNorm(hidden_size, layernorm_epsilon) - # for architectures such as MPT, there is no bias term even on the layernorms - # this code allows us to remove the bias terms from the layernorm module - # so that we can support MPT. However, certain apex-based LNs don't support - # removing bias, so we also have to check for that - if not bias and normalization not in ['layernorm', 'layernorm1p']: - remove_bias_from_layernorm(self.initial_layernorm) if self.post_process and self.transformer_block_type != 'post_ln': # Final layer norm before output. @@ -1455,10 +1435,7 @@ def forward( 'get_key_value does not work with ' 'activation checkpointing' ) - if self.pre_process: - if self.transformer_block_type == 'post_ln': - hidden_states = self.initial_layernorm(hidden_states) - else: + if not self.pre_process: # See set_input_tensor() hidden_states = self.input_tensor diff --git a/scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py b/scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py deleted file mode 100644 index cc9483b68c8a..000000000000 --- a/scripts/nlp_language_modeling/convert_bert_hf_to_nemo.py +++ /dev/null @@ -1,289 +0,0 @@ -# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Example to run this conversion script: -``` - python convert_bert_hf_to_nemo.py \ - --input_name_or_path "thenlper/gte-large" \ - --output_path /path/to/output/nemo/file.nemo \ - --precision 32 -``` -""" - -import os -from argparse import ArgumentParser - -import torch -import torch.nn.functional as F -from omegaconf import OmegaConf -from transformers import AutoModel, AutoTokenizer - -from nemo.collections.nlp.models.language_modeling.megatron_bert_model import MegatronBertModel -from nemo.collections.nlp.parts.megatron_trainer_builder import MegatronTrainerBuilder -from nemo.utils import logging - - -def average_pool(last_hidden_states: torch.Tensor, attention_mask: torch.Tensor) -> torch.Tensor: - last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0) - return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None] - - -def create_rename_keys(num_hidden_layers): - rename_keys = [] - for i in range(num_hidden_layers): - # encoder layers: attention mechanism, 2 feedforward neural networks, and 2 layernorms - rename_keys.extend( - [ - ( - f"encoder.layer.{i}.attention.self.query.weight", - f"model.language_model.encoder.layers.{i}.self_attention.query.weight", - ), - ( - f"encoder.layer.{i}.attention.self.query.bias", - f"model.language_model.encoder.layers.{i}.self_attention.query.bias", - ), - ( - f"encoder.layer.{i}.attention.self.key.weight", - f"model.language_model.encoder.layers.{i}.self_attention.key.weight", - ), - ( - f"encoder.layer.{i}.attention.self.key.bias", - f"model.language_model.encoder.layers.{i}.self_attention.key.bias", - ), - ( - f"encoder.layer.{i}.attention.self.value.weight", - f"model.language_model.encoder.layers.{i}.self_attention.value.weight", - ), - ( - f"encoder.layer.{i}.attention.self.value.bias", - f"model.language_model.encoder.layers.{i}.self_attention.value.bias", - ), - ( - f"encoder.layer.{i}.attention.output.dense.weight", - f"model.language_model.encoder.layers.{i}.self_attention.dense.weight", - ), - ( - f"encoder.layer.{i}.attention.output.dense.bias", - f"model.language_model.encoder.layers.{i}.self_attention.dense.bias", - ), - ( - f"encoder.layer.{i}.attention.output.LayerNorm.weight", - f"model.language_model.encoder.layers.{i}.input_layernorm.weight", - ), - ( - f"encoder.layer.{i}.attention.output.LayerNorm.bias", - f"model.language_model.encoder.layers.{i}.input_layernorm.bias", - ), - ( - f"encoder.layer.{i}.intermediate.dense.weight", - f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.weight", - ), - ( - f"encoder.layer.{i}.intermediate.dense.bias", - f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.bias", - ), - ( - f"encoder.layer.{i}.output.dense.weight", - f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.weight", - ), - ( - f"encoder.layer.{i}.output.dense.bias", - f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.bias", - ), - ( - f"encoder.layer.{i}.output.LayerNorm.weight", - f"model.language_model.encoder.layers.{i}.post_attention_layernorm.weight", - ), - ( - f"encoder.layer.{i}.output.LayerNorm.bias", - f"model.language_model.encoder.layers.{i}.post_attention_layernorm.bias", - ), - ] - ) - - # Non-layer dependent keys - rename_keys.extend( - [ - ("embeddings.word_embeddings.weight", "model.language_model.embedding.word_embeddings.weight"), - ("embeddings.position_embeddings.weight", "model.language_model.embedding.position_embeddings.weight"), - ("embeddings.token_type_embeddings.weight", "model.language_model.embedding.tokentype_embeddings.weight"), - ("embeddings.LayerNorm.weight", "model.language_model.encoder.initial_layernorm.weight"), - ("embeddings.LayerNorm.bias", "model.language_model.encoder.initial_layernorm.bias"), - ("pooler.dense.weight", "model.language_model.pooler.dense.weight"), - ("pooler.dense.bias", "model.language_model.pooler.dense.bias"), - ] - ) - - return rename_keys - - -def rename_model_keys(model_state_dict, rename_keys): - """ - Rename keys in the model's state dictionary based on the provided mappings. - - Parameters: - model_state_dict (dict): The state dictionary of the model. - rename_keys (list): A list of tuples with the mapping (old_key, new_key). - - Returns: - dict: A new state dictionary with updated key names. - """ - - # Create a new state dictionary with updated key names - new_state_dict = {} - - # Track keys from the original state dict to ensure all are processed - remaining_keys = set(model_state_dict.keys()) - - # Iterate over the rename mappings - for old_key, new_key in rename_keys: - if old_key in model_state_dict: - # Rename the key and remove it from the tracking set - new_state_dict[new_key] = model_state_dict[old_key] - remaining_keys.remove(old_key) - else: - print(f"Warning: Key '{old_key}' not found in the model state dictionary.") - - # Check if any keys were not converted from old to new - for old_key in remaining_keys: - print(f"Warning: Key '{old_key}' was not converted.") - - return new_state_dict - - -def adjust_tensor_shapes(model, nemo_state_dict): - """ - Adapt tensor shapes in the state dictionary to ensure compatibility with a different model structure. - - Parameters: - nemo_state_dict (dict): The state dictionary of the model. - - Returns: - dict: The updated state dictionary with modified tensor shapes for compatibility. - """ - - # Note: For 'key' and 'value' weights and biases, NeMo uses a consolidated tensor 'query_key_value'. - for key_ in list(nemo_state_dict.keys()): - if "self_attention.query" in key_: - key_q = key_ - key_k = key_.replace('self_attention.query', 'self_attention.key') - key_v = key_.replace('self_attention.query', 'self_attention.value') - key_new = key_.replace('self_attention.query', 'self_attention.query_key_value') - value_new = torch.concat((nemo_state_dict[key_q], nemo_state_dict[key_k], nemo_state_dict[key_v]), dim=0) - nemo_state_dict[key_new] = value_new - del nemo_state_dict[key_q], nemo_state_dict[key_k], nemo_state_dict[key_v] - - # Padding to new vocab size - original_embedding = nemo_state_dict['model.language_model.embedding.word_embeddings.weight'] - vocab_size = original_embedding.size(0) - if model.padded_vocab_size > vocab_size: - zeros_to_add = torch.zeros( - model.padded_vocab_size - vocab_size, - original_embedding.size(1), - dtype=original_embedding.dtype, - device=original_embedding.device, - ) - # Concatenate the two tensors along rows - padded_embedding = torch.cat([original_embedding, zeros_to_add], dim=0) - nemo_state_dict['model.language_model.embedding.word_embeddings.weight'] = padded_embedding - - return nemo_state_dict - - -def adjust_nemo_config(model_config, ref_config): - model_config.tokenizer["type"] = "intfloat/e5-large-unsupervised" # ref_config["_input_name_or_path"] - model_config["num_layers"] = ref_config["num_hidden_layers"] - model_config["hidden_size"] = ref_config["hidden_size"] - model_config["ffn_hidden_size"] = ref_config["intermediate_size"] - model_config["num_attention_heads"] = ref_config["num_attention_heads"] - model_config["layernorm_epsilon"] = ref_config["layer_norm_eps"] - model_config["normalization"] = "layernorm" - model_config["transformer_block_type"] = "post_ln" - model_config["apply_query_key_layer_scaling"] = False - model_config["skip_head"] = True - model_config["megatron_legacy"] = True - return model_config - - -def get_args(): - parser = ArgumentParser() - parser.add_argument("--input_name_or_path", type=str, default="thenlper/gte-large") - parser.add_argument( - "--hparams_file", - type=str, - default=f"{os.path.dirname(__file__)}/../../examples/nlp/language_modeling/conf/megatron_bert_config.yaml", - required=False, - help="Path config for restoring. It's created during training and may need to be modified during restore if restore environment is different than training. Ex: /raid/nemo_experiments/megatron_gpt/hparams.yaml", - ) - parser.add_argument("--output_path", type=str, default=None, required=True, help="Path to output .nemo file.") - parser.add_argument( - "--precision", type=str, default="32", choices=["bf16", "32"], help="Precision for checkpoint weights saved" - ) - - args = parser.parse_args() - return args - - -def convert(args): - logging.info(f"Loading checkpoint from HF: `{args.input_name_or_path}`") - hf_tokenizer = AutoTokenizer.from_pretrained(args.input_name_or_path) - hf_model = AutoModel.from_pretrained(args.input_name_or_path) - - nemo_config = OmegaConf.load(args.hparams_file) - nemo_config.model = adjust_nemo_config(nemo_config.model, hf_model.config.to_dict()) - - nemo_config.trainer["precision"] = args.precision - trainer = MegatronTrainerBuilder(nemo_config).create_trainer() - model = MegatronBertModel(nemo_config.model, trainer) - - old_state_dict = hf_model.state_dict() - rename_keys = create_rename_keys(nemo_config.model.num_layers) - new_state_dict = rename_model_keys(model_state_dict=old_state_dict, rename_keys=rename_keys) - nemo_state_dict = adjust_tensor_shapes(model, new_state_dict) - model.load_state_dict(nemo_state_dict, strict=True) - - logging.info(f'=' * 50) - # Verifications - input_texts = [ - 'query: how much protein should a female eat', - 'query: summit define', - "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.", - "passage: Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments.", - ] - - # Tokenize the input texts - batch_dict = hf_tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt') - batch_dict_cuda = {k: v.cuda() for k, v in batch_dict.items()} - hf_model = hf_model.cuda().eval() - model = model.eval() - with torch.no_grad(): - hf_outputs = hf_model(**batch_dict_cuda) - embeddings_hf = average_pool(hf_outputs.last_hidden_state, batch_dict_cuda['attention_mask']) - embeddings_hf = F.normalize(embeddings_hf, p=2, dim=1) - - outputs = model(**batch_dict_cuda) - embeddings = average_pool(outputs[0], batch_dict_cuda['attention_mask']) - embeddings = F.normalize(embeddings, p=2, dim=1) - # Print difference between two embeddings - print("Difference between reference embedding and converted embedding results:") - print(embeddings - embeddings_hf) - - model.save_to(args.output_path) - logging.info(f'NeMo model saved to: {args.output_path}') - - -if __name__ == '__main__': - args = get_args() - convert(args) diff --git a/scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py b/scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py deleted file mode 100644 index e970ea29fca2..000000000000 --- a/scripts/nlp_language_modeling/convert_bert_nemo_to_hf.py +++ /dev/null @@ -1,269 +0,0 @@ -# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Example to run this conversion script: -``` - python convert_bert_hf_to_nemo.py \ - --input_name_or_path /path/to/input/nemo/file.nemo \ - --output_path /path/to/output/huggingface/file \ - --precision 32 -``` -""" - -from argparse import ArgumentParser - -import torch -import torch.nn.functional as F -from pytorch_lightning import Trainer -from transformers import AutoTokenizer, BertConfig, BertModel - -from nemo.collections.nlp.models.language_modeling.megatron_bert_model import MegatronBertModel -from nemo.collections.nlp.parts.nlp_overrides import NLPDDPStrategy -from nemo.utils import logging - - -def average_pool(last_hidden_states: torch.Tensor, attention_mask: torch.Tensor) -> torch.Tensor: - last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0) - return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None] - - -def create_rename_keys(num_hidden_layers): - rename_keys = [] - for i in range(num_hidden_layers): - # encoder layers: attention mechanism, 2 feedforward neural networks, and 2 layernorms - rename_keys.extend( - [ - ( - f"encoder.layer.{i}.attention.self.query.weight", - f"model.language_model.encoder.layers.{i}.self_attention.query.weight", - ), - ( - f"encoder.layer.{i}.attention.self.query.bias", - f"model.language_model.encoder.layers.{i}.self_attention.query.bias", - ), - ( - f"encoder.layer.{i}.attention.self.key.weight", - f"model.language_model.encoder.layers.{i}.self_attention.key.weight", - ), - ( - f"encoder.layer.{i}.attention.self.key.bias", - f"model.language_model.encoder.layers.{i}.self_attention.key.bias", - ), - ( - f"encoder.layer.{i}.attention.self.value.weight", - f"model.language_model.encoder.layers.{i}.self_attention.value.weight", - ), - ( - f"encoder.layer.{i}.attention.self.value.bias", - f"model.language_model.encoder.layers.{i}.self_attention.value.bias", - ), - ( - f"encoder.layer.{i}.attention.output.dense.weight", - f"model.language_model.encoder.layers.{i}.self_attention.dense.weight", - ), - ( - f"encoder.layer.{i}.attention.output.dense.bias", - f"model.language_model.encoder.layers.{i}.self_attention.dense.bias", - ), - ( - f"encoder.layer.{i}.attention.output.LayerNorm.weight", - f"model.language_model.encoder.layers.{i}.input_layernorm.weight", - ), - ( - f"encoder.layer.{i}.attention.output.LayerNorm.bias", - f"model.language_model.encoder.layers.{i}.input_layernorm.bias", - ), - ( - f"encoder.layer.{i}.intermediate.dense.weight", - f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.weight", - ), - ( - f"encoder.layer.{i}.intermediate.dense.bias", - f"model.language_model.encoder.layers.{i}.mlp.dense_h_to_4h.bias", - ), - ( - f"encoder.layer.{i}.output.dense.weight", - f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.weight", - ), - ( - f"encoder.layer.{i}.output.dense.bias", - f"model.language_model.encoder.layers.{i}.mlp.dense_4h_to_h.bias", - ), - ( - f"encoder.layer.{i}.output.LayerNorm.weight", - f"model.language_model.encoder.layers.{i}.post_attention_layernorm.weight", - ), - ( - f"encoder.layer.{i}.output.LayerNorm.bias", - f"model.language_model.encoder.layers.{i}.post_attention_layernorm.bias", - ), - ] - ) - - # Non-layer dependent keys - rename_keys.extend( - [ - ("embeddings.word_embeddings.weight", "model.language_model.embedding.word_embeddings.weight"), - ("embeddings.position_embeddings.weight", "model.language_model.embedding.position_embeddings.weight"), - ("embeddings.token_type_embeddings.weight", "model.language_model.embedding.tokentype_embeddings.weight"), - ("embeddings.LayerNorm.weight", "model.language_model.encoder.initial_layernorm.weight"), - ("embeddings.LayerNorm.bias", "model.language_model.encoder.initial_layernorm.bias"), - ("pooler.dense.weight", "model.language_model.pooler.dense.weight"), - ("pooler.dense.bias", "model.language_model.pooler.dense.bias"), - ] - ) - - return rename_keys - - -def rename_model_keys(model_state_dict, rename_keys): - """ - Rename keys in the model's state dictionary based on the provided mappings. - - Parameters: - model_state_dict (dict): The state dictionary of the model. - rename_keys (list): A list of tuples with the mapping (new_key, old_key). - - Returns: - dict: A new state dictionary with updated key names. - """ - - # Create a new state dictionary with updated key names - new_state_dict = {} - - # Track keys from the original state dict to ensure all are processed - remaining_keys = set(model_state_dict.keys()) - - # Iterate over the rename mappings - for new_key, old_key in rename_keys: - if old_key in model_state_dict: - # Rename the key and remove it from the tracking set - new_state_dict[new_key] = model_state_dict[old_key] - remaining_keys.remove(old_key) - else: - print(f"Warning: Key '{old_key}' not found in the model state dictionary.") - - # Check if any keys were not converted from old to new - for old_key in remaining_keys: - print(f"Warning: Key '{old_key}' was not converted.") - - return new_state_dict - - -def adjust_tensor_shapes(model_state_dict): - """ - Adapt tensor shapes in the state dictionary to ensure compatibility with a different model structure. - - Parameters: - nemo_state_dict (dict): The state dictionary of the model. - - Returns: - dict: The updated state dictionary with modified tensor shapes for compatibility. - """ - - # Note: For 'key' and 'value' weights and biases, NeMo uses a consolidated tensor 'query_key_value'. - for key_ in list(model_state_dict.keys()): - if "self_attention.query_key_value" in key_: - key_q = key_.replace('self_attention.query_key_value', 'self_attention.query') - key_k = key_.replace('self_attention.query_key_value', 'self_attention.key') - key_v = key_.replace('self_attention.query_key_value', 'self_attention.value') - local_dim = model_state_dict[key_].shape[0] // 3 - q, k, v = model_state_dict[key_].split(local_dim) - model_state_dict[key_q] = q - model_state_dict[key_k] = k - model_state_dict[key_v] = v - del model_state_dict[key_] - - return model_state_dict - - -def convert_config(ref_config, hf_state_dict): - vocab_size = hf_state_dict['embeddings.word_embeddings.weight'].shape[0] - new_config = { - "vocab_size": vocab_size, - "num_hidden_layers": ref_config["num_layers"], - "hidden_size": ref_config["hidden_size"], - "intermediate_size": ref_config["ffn_hidden_size"], - "num_attention_heads": ref_config["num_attention_heads"], - "layer_norm_eps": ref_config["layernorm_epsilon"], - "max_position_embeddings": ref_config["max_position_embeddings"], - } - hf_config = BertConfig(**new_config) - return hf_config - - -def get_args(): - parser = ArgumentParser() - parser.add_argument( - "--input_name_or_path", type=str, required=True, help="Path to .nemo file", - ) - parser.add_argument( - "--output_path", type=str, required=True, help="Output HF model path", - ) - - args = parser.parse_args() - return args - - -def convert(args): - logging.info(f"Loading checkpoint from: `{args.input_name_or_path}`") - dummy_trainer = Trainer(devices=1, accelerator='cpu', strategy=NLPDDPStrategy()) - nemo_model = MegatronBertModel.restore_from(args.input_name_or_path, trainer=dummy_trainer) - nemo_config = nemo_model.cfg - - old_state_dict = nemo_model.state_dict() - rename_keys = create_rename_keys(nemo_config.num_layers) - new_state_dict = adjust_tensor_shapes(old_state_dict) - hf_state_dict = rename_model_keys(model_state_dict=new_state_dict, rename_keys=rename_keys) - - hf_config = convert_config(nemo_config, hf_state_dict) - hf_model = BertModel(hf_config) - - hf_model.load_state_dict(hf_state_dict, strict=True) - - logging.info(f'=' * 50) - # Verifications - input_texts = [ - 'query: how much protein should a female eat', - 'query: summit define', - "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.", - "passage: Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments.", - ] - - # Tokenize the input texts - hf_tokenizer = AutoTokenizer.from_pretrained(nemo_config.tokenizer["type"]) - batch_dict = hf_tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt') - batch_dict_cuda = {k: v.cuda() for k, v in batch_dict.items()} - hf_model = hf_model.cuda().eval() - nemo_model = nemo_model.eval() - with torch.no_grad(): - hf_outputs = hf_model(**batch_dict_cuda) - embeddings_hf = average_pool(hf_outputs.last_hidden_state, batch_dict_cuda['attention_mask']) - embeddings_hf = F.normalize(embeddings_hf, p=2, dim=1) - - outputs = nemo_model(**batch_dict_cuda) - embeddings = average_pool(outputs[0], batch_dict_cuda['attention_mask']) - embeddings = F.normalize(embeddings, p=2, dim=1) - # Print difference between two embeddings - print("Difference between reference embedding and converted embedding results:") - print(embeddings - embeddings_hf) - - hf_model.save_pretrained(args.output_path) - logging.info(f'Full HF model model saved to: {args.output_path}') - - -if __name__ == '__main__': - args = get_args() - convert(args) diff --git a/scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py b/scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py deleted file mode 100644 index c6b3f351cc07..000000000000 --- a/scripts/nlp_language_modeling/export_nemo_bert_to_onnx.py +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import os -from argparse import ArgumentParser - -import torch -from omegaconf import OmegaConf - -from nemo.collections.nlp.models.language_modeling.megatron_bert_model import MegatronBertTextEmbeddingModel -from nemo.collections.nlp.parts.megatron_trainer_builder import MegatronTrainerBuilder -from nemo.utils import logging - - -def get_args(): - parser = ArgumentParser() - parser.add_argument("--nemo_path", type=str, required=True) - parser.add_argument( - "--hparams_file", - type=str, - default=f"{os.path.dirname(__file__)}/../../examples/nlp/language_modeling/conf/megatron_bert_config.yaml", - required=False, - help="Path config for restoring. It's created during training and may need to be modified during restore if restore environment is different than training. Ex: /raid/nemo_experiments/megatron_gpt/hparams.yaml", - ) - parser.add_argument( - "--onnx_path", type=str, default="bert.onnx", required=False, help="Path to output .nemo file." - ) - parser.add_argument( - "--precision", type=str, default="32", choices=["bf16", "32"], help="Precision for checkpoint weights saved" - ) - - args = parser.parse_args() - return args - - -def export(args): - nemo_config = OmegaConf.load(args.hparams_file) - nemo_config.trainer["precision"] = args.precision - - trainer = MegatronTrainerBuilder(nemo_config).create_trainer() - model = MegatronBertTextEmbeddingModel.restore_from(args.nemo_path, trainer=trainer) - - hf_tokenizer = model.tokenizer.tokenizer - - logging.info(f'=' * 50) - # Verifications - input_texts = [ - 'query: how much protein should a female eat', - 'query: summit define', - "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.", - "passage: Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments.", - ] - - # Tokenize the input texts - batch_dict = hf_tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt') - batch_dict_cuda = {k: v.cuda() for k, v in batch_dict.items()} - model = model.eval() - - input_names = ["input_ids", "attention_mask", "token_type_ids"] - output_names = ["outputs"] - export_input = tuple([batch_dict_cuda[name] for name in input_names]) - - torch.onnx.export( - model, export_input, args.onnx_path, verbose=False, input_names=input_names, output_names=output_names, - ) - logging.info(f'NeMo model saved to: {args.onnx_path}') - - -if __name__ == '__main__': - args = get_args() - export(args) diff --git a/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt b/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt index 5d3c8f52570e..c1ba23d3de6c 100644 --- a/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt +++ b/scripts/tts_dataset_files/ipa_cmudict-0.7b_nv23.01.txt @@ -2105,7 +2105,6 @@ AHSAHKA ɑˈsɑkə AHUJA ɑˈhujə AHUMADA ɑjuˈmɑdə AHWAHNEE əˈwɑni -AI ˈeɪˈaɪ AICHELE ˈaɪkəl AICHER ˈaɪkɚ AICHI ɑˈitʃi @@ -55997,8 +55996,6 @@ HOLOGRAM ˈhɔloʊˌɡɹæm HOLOGRAMS ˈhɔloʊˌɡɹæmz HOLOGRAPHIC ˌhɔloʊˈɡɹæfɪk HOLOHAN ˈhɔləhæn -HOLOHUB ˈhɑloʊhəb -HOLOSCAN ˈhɑloʊskæn HOLQUIN ˈhoʊlkwɪn HOLROYD ˈhoʊlˌɹɔɪd HOLSAPPLE ˈhoʊlsəpəl @@ -58189,7 +58186,6 @@ IGUANA ˌɪˈɡwɑnə IGUANAS ˌɪˈɡwɑnəz IGUCHI iˈɡuˌtʃi IGUSHI ɪˈɡuˌʃi -IGX aɪdʒiˈɛks IHASZ ˈaɪhæs IHDE ˈɪd IHLE ˈaɪhəl @@ -62118,7 +62114,6 @@ JETHRO ˈdʒɛθɹoʊ JETLINER ˈdʒɛtˌlaɪnɚ JETLINER'S ˈdʒɛtˌlaɪnɚz JETLINERS ˈdʒɛtˌlaɪnɚz -JETPACK ˈdʒɛtˈpæk JETRO ˈdʒɛtɹoʊ JETS ˈdʒɛts JETS' ˈdʒɛts @@ -124300,7 +124295,7 @@ UBBEN ˈʌbən UBER ˈubɚ UBIQUITOUS juˈbɪkwɪtəs UBIQUITY juˈbɪkwɪti -UBUNTU uˈbʊntu +UBUNTU ˌuˈbuˌtu UCCEL ˈutʃəl UCCEL'S ˈutʃəlz UCCI ˈutʃi @@ -134642,7 +134637,6 @@ GCP ˈdʒiˈsiˈpi GE dʒiˈi GEFORCE ˈdʒiˈfɔɹs GI ˈdʒiˈeɪ -GIGABIT ˈɡɪɡəbɪt GIGAHERTZ ˈɡɪɡəˌhɛɹts GMAIL ˈdʒiˈmeɪl GPU ˈdʒiˈpiˈju diff --git a/tutorials/asr/Online_Noise_Augmentation.ipynb b/tutorials/asr/Online_Noise_Augmentation.ipynb index 7d682177b641..fe3125683091 100644 --- a/tutorials/asr/Online_Noise_Augmentation.ipynb +++ b/tutorials/asr/Online_Noise_Augmentation.ipynb @@ -752,9 +752,8 @@ "source": [ "# This is where the rir data will be downloaded.\n", "# Change this if you don't want the data to be extracted in the current directory.\n", - "!wget https://raw.githubusercontent.com/NVIDIA/NeMo/$BRANCH/scripts/dataset_processing/get_openslr_rir_data.py\n", "rir_data_path = '.'\n", - "!python get_openslr_rir_data.py --data_root {rir_data_path}\n", + "!python ../../scripts/dataset_processing/get_openslr_rir_data.py --data_root {rir_data_path}\n", "rir_manifest_path = os.path.join(rir_data_path, 'processed', 'rir.json')\n", "!head -n 3 {rir_manifest_path}" ]