chore: import upstream snapshot with attribution
Create PR to main with cherry-pick from release / cherry-pick (push) Failing after 0s
CICD NeMo / pre-flight (push) Failing after 0s
CICD NeMo / configure (push) Has been skipped
Build, validate, and release Neural Modules / pre-flight (push) Failing after 1s
CICD NeMo / code-linting (push) Has been skipped
Build, validate, and release Neural Modules / release (push) Has been skipped
Build, validate, and release Neural Modules / release-summary (push) Has been cancelled
CICD NeMo / cicd-test-container-build (push) Has been cancelled
CICD NeMo / cicd-import-tests (push) Has been cancelled
CICD NeMo / L0_Setup_Test_Data_And_Models (push) Has been cancelled
CICD NeMo / cicd-main-unit-tests (push) Has been cancelled
CICD NeMo / cicd-main-speech (push) Has been cancelled
CICD NeMo / Nemo_CICD_Test (push) Has been cancelled
CICD NeMo / Coverage (e2e) (push) Has been cancelled
CICD NeMo / Coverage (unit-test) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
CICD NeMo / cicd-wait-in-queue (push) Has been cancelled
Create PR to main with cherry-pick from release / cherry-pick (push) Failing after 0s
CICD NeMo / pre-flight (push) Failing after 0s
CICD NeMo / configure (push) Has been skipped
Build, validate, and release Neural Modules / pre-flight (push) Failing after 1s
CICD NeMo / code-linting (push) Has been skipped
Build, validate, and release Neural Modules / release (push) Has been skipped
Build, validate, and release Neural Modules / release-summary (push) Has been cancelled
CICD NeMo / cicd-test-container-build (push) Has been cancelled
CICD NeMo / cicd-import-tests (push) Has been cancelled
CICD NeMo / L0_Setup_Test_Data_And_Models (push) Has been cancelled
CICD NeMo / cicd-main-unit-tests (push) Has been cancelled
CICD NeMo / cicd-main-speech (push) Has been cancelled
CICD NeMo / Nemo_CICD_Test (push) Has been cancelled
CICD NeMo / Coverage (e2e) (push) Has been cancelled
CICD NeMo / Coverage (unit-test) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
CICD NeMo / cicd-wait-in-queue (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
model:
|
||||
# Every name/path here starting with 'pretrained' is used to initialize the model weights.
|
||||
pretrained_llm: TinyLlama/TinyLlama_v1.1
|
||||
pretrained_audio_codec: ??? # to be released
|
||||
pretrained_asr: stt_en_fastconformer_hybrid_large_streaming_80ms
|
||||
scoring_asr: stt_en_fastconformer_transducer_large # used only in validation/evaluation
|
||||
|
||||
pretrained_weights: True # When False, we use pretrained_name to load the architecture, but with random init
|
||||
|
||||
# Regexp (re.compile) patterns matching parameters to be frozen.
|
||||
freeze_params:
|
||||
- "^audio_codec\\..+$" # Keep audio codec frozen as it only provides supervision for training.
|
||||
prevent_freeze_params: [] # Use to make specific submodules trainable; overrides freeze_params
|
||||
|
||||
audio_loss_weight: 4
|
||||
text_loss_weight: 3
|
||||
|
||||
# Note: Uncomment the block below to enable LoRA on LLM via HuggingFace PEFT library.
|
||||
# It will automatically freeze LLM parameters even if freeze_params was unused,
|
||||
# and prevent freezing any parameter that has the string '.lora_' in its name.
|
||||
# lora:
|
||||
# task_type: CAUSAL_LM
|
||||
# r: 8
|
||||
# lora_alpha: 32
|
||||
# lora_dropout: 0.1
|
||||
|
||||
perception:
|
||||
target: nemo.collections.speechlm2.modules.perception.AudioPerceptionModule
|
||||
modality_adapter:
|
||||
_target_: nemo.collections.asr.modules.ConformerEncoder
|
||||
feat_in: 512
|
||||
feat_out: -1 # you may set it if you need different output size other than the default d_model
|
||||
n_layers: 2
|
||||
d_model: 512
|
||||
subsampling: dw_striding # vggnet, striding, stacking or stacking_norm, dw_striding
|
||||
subsampling_factor: 1 # must be power of 2 for striding and vggnet
|
||||
subsampling_conv_channels: 256 # set to -1 to make it equal to the d_model
|
||||
causal_downsampling: true
|
||||
ff_expansion_factor: 4
|
||||
self_attention_model: rel_pos # rel_pos or abs_pos
|
||||
n_heads: 8 # may need to be lower for smaller d_models
|
||||
# [left, right] specifies the number of steps to be seen from left and right of each step in self-attention
|
||||
att_context_size: [70, 1] # -1 means unlimited context
|
||||
att_context_style: chunked_limited # regular or chunked_limited
|
||||
xscaling: true # scales up the input embeddings by sqrt(d_model)
|
||||
untie_biases: true # unties the biases of the TransformerXL layers
|
||||
pos_emb_max_len: 5000
|
||||
conv_kernel_size: 9
|
||||
conv_norm_type: layer_norm # batch_norm or layer_norm or groupnormN (N specifies the number of groups)
|
||||
# conv_context_size can be"causal" or a list of two integers while conv_context_size[0]+conv_context_size[1]+1==conv_kernel_size
|
||||
# null means [(kernel_size-1)//2, (kernel_size-1)//2], and 'causal' means [(kernel_size-1), 0]
|
||||
conv_context_size: causal
|
||||
### regularization
|
||||
dropout: 0 # The dropout used in most of the Conformer Modules
|
||||
dropout_pre_encoder: 0 # The dropout used before the encoder
|
||||
dropout_emb: 0.0 # The dropout used for embeddings
|
||||
dropout_att: 0 # The dropout for multi-headed attention modules
|
||||
|
||||
speech_decoder:
|
||||
n_layers: 12
|
||||
d_model: 768
|
||||
d_ffn: 3072
|
||||
sa_n_heads: 12
|
||||
kernel_size: 3
|
||||
p_dropout: 0.1
|
||||
p_dropout_out: 0.0
|
||||
has_xattn: false
|
||||
xa_d_memory: 768
|
||||
xa_n_heads: 12
|
||||
is_causal: true
|
||||
apply_norm_to_cond: true
|
||||
apply_norm_out: true
|
||||
max_length_causal_mask: 5000
|
||||
cond_on_prev_audio_tokens: True
|
||||
detach_input: False
|
||||
use_learnable_pos_emb: True
|
||||
|
||||
optimizer:
|
||||
_target_: torch.optim.AdamW
|
||||
lr: 3e-4
|
||||
betas: [0.9, 0.98]
|
||||
weight_decay: 0
|
||||
foreach: true # set to false if having issues with tensor-parallelism
|
||||
|
||||
lr_scheduler:
|
||||
# _target_: nemo.core.optim.lr_scheduler.InverseSquareRootAnnealing
|
||||
_target_: nemo.core.optim.lr_scheduler.CosineAnnealing
|
||||
warmup_steps: 0 #2500
|
||||
min_lr: 1e-6
|
||||
max_steps: ${trainer.max_steps}
|
||||
|
||||
trainer:
|
||||
devices: -1
|
||||
accelerator: gpu
|
||||
num_nodes: 1
|
||||
precision: bf16-true
|
||||
logger: False # logger provided by exp_manager
|
||||
enable_checkpointing: False
|
||||
use_distributed_sampler: False
|
||||
max_steps: 1000000
|
||||
limit_train_batches: 100 # "epoch" size
|
||||
val_check_interval: ${trainer.limit_train_batches}
|
||||
limit_val_batches: 10
|
||||
log_every_n_steps: 10
|
||||
num_sanity_val_steps: 1
|
||||
gradient_clip_val: 1.0
|
||||
accumulate_grad_batches: 1
|
||||
strategy:
|
||||
# Replace DDPStrategy with ModelParallelStrategy to enable model parallelism
|
||||
_target_: lightning.pytorch.strategies.DDPStrategy
|
||||
gradient_as_bucket_view: true
|
||||
find_unused_parameters: true
|
||||
# _target_: lightning.pytorch.strategies.ModelParallelStrategy
|
||||
# tensor_parallel_size: 1
|
||||
# data_parallel_size: 2
|
||||
|
||||
data:
|
||||
frame_length: 0.08
|
||||
source_sample_rate: 16000
|
||||
target_sample_rate: 22050
|
||||
input_roles: ["user", "User"]
|
||||
output_roles: ["agent", "Assistant"]
|
||||
|
||||
train_ds:
|
||||
sample_rate: ${data.target_sample_rate}
|
||||
input_cfg:
|
||||
- type: lhotse_shar
|
||||
shar_path: ???
|
||||
seed: 42
|
||||
shard_seed: "randomized"
|
||||
num_workers: 2
|
||||
batch_size: 4
|
||||
# Optional bucketing:
|
||||
# batch_size: null
|
||||
# batch_duration: 100
|
||||
# bucket_duration_bins: [8.94766,10.1551,11.64118,19.30376,42.85]
|
||||
# use_bucketing: true
|
||||
# num_buckets: 5
|
||||
# bucket_buffer_size: 5000
|
||||
|
||||
validation_ds:
|
||||
# The entries under 'datasets' are a list of separate dataloaders.
|
||||
# The structure is <dataset-name>: {<dataloader-dict-config>}
|
||||
# They inherit all settings from validation_ds, but can individually override them.
|
||||
datasets:
|
||||
val_set_0: # rename to your dataset name, add more as needed
|
||||
shar_path: ???
|
||||
sample_rate: ${data.target_sample_rate}
|
||||
batch_size: 1
|
||||
seed: 42
|
||||
shard_seed: "randomized"
|
||||
|
||||
exp_manager:
|
||||
exp_dir: null
|
||||
explicit_log_dir: s2s_sdv2_results/
|
||||
name: speechlm2
|
||||
create_tensorboard_logger: false
|
||||
create_checkpoint_callback: true
|
||||
use_datetime_version: true
|
||||
max_time_per_run: 00:03:50:00
|
||||
|
||||
resume_from_checkpoint: null # The path to a checkpoint file to continue the training, restores the whole state including the epoch, step, LR schedulers, apex, etc.
|
||||
# you need to set these two to True to continue the training
|
||||
resume_if_exists: true
|
||||
resume_ignore_no_checkpoint: true
|
||||
|
||||
# You may use this section to create a W&B logger
|
||||
create_wandb_logger: false
|
||||
wandb_logger_kwargs:
|
||||
name: development-run
|
||||
project: speechlm2_speech_decoder
|
||||
resume: true
|
||||
|
||||
checkpoint_callback_params:
|
||||
filename: "{step}"
|
||||
monitor: val_asr_bleu
|
||||
mode: max
|
||||
every_n_train_steps: null
|
||||
every_n_epochs: 1
|
||||
save_top_k: 1
|
||||
always_save_nemo: false
|
||||
save_nemo_on_train_end: false
|
||||
Reference in New Issue
Block a user