--- library_name: peft pipeline_tag: automatic-speech-recognition language: - bm tags: - lora - peft - whisper - automatic-speech-recognition - tensorboard --- # bm-whisper-large-v4-training-bm-lora-3a A rank-8 LoRA adapter for Bambara speech recognition, sized for Whisper large-v3 geometry: hidden size 1280, 32 encoder + 32 decoder layers, 20 attention heads, 128 mel bins, 51,866-token vocabulary. Adapter weights only. The base checkpoint it was trained against is not recorded in this repo, so supply your own Whisper large-v3-geometry model when loading. ## Usage ```python from peft import PeftModel from transformers import WhisperForConditionalGeneration, WhisperProcessor base = WhisperForConditionalGeneration.from_pretrained(YOUR_BASE_MODEL) model = PeftModel.from_pretrained(base, "djelia/bm-whisper-large-v4-training-bm-lora-3a") model.eval() # tokenizer and feature extractor ship with the adapter processor = WhisperProcessor.from_pretrained("djelia/bm-whisper-large-v4-training-bm-lora-3a") # Optional: fold the LoRA deltas into the base weights for inference. # merged = model.merge_and_unload() ``` ## Adapter configuration | Key | Value | |---|---| | `peft_type` | `LORA` | | `r` / `lora_alpha` | 8 / 8 (scaling 1.0) | | `lora_dropout` | 0.05 | | `bias` / `lora_bias` | `none` / false | | `target_modules` | `["q_proj", "k_proj", "v_proj", "out_proj"]` | | `base_model_class` | `WhisperForConditionalGeneration` | | Adapter dtype | F32 | ## Notes `target_modules` is a plain name list, so every matching projection in both towers is adapted: encoder self-attention, decoder self-attention and decoder cross-attention, layers 0-31 (768 tensors in total). MLP blocks, the convolutional front-end, embeddings, layer norms and `proj_out` are untouched. Audio should be 16 kHz mono.