* fix: remove unneeded debug log * fix: cleanup * feat: add dense gemma config and cleanup * feat: add cce support * update notes and set torch compile * fix patch for new number of return vals * fixes for gemma4 * fix packing bug * use updated cce for mm * fix: pass in kv cache func when avail for transformers 5.5 * feat: update examples with flex variant and readme * gemma4 lora attention kernels --------- Co-authored-by: Wing Lian <wing.lian@gmail.com> Co-authored-by: Wing Lian <wing@axolotl.ai>
94 lines
2.2 KiB
YAML
94 lines
2.2 KiB
YAML
# Gemma 4 26B-A4B MoE QLoRA with ScatterMoE kernels
|
|
#
|
|
# Validated: 50 steps on FineTome-100k, loss 8.8 -> 1.8, single RTX 5090 (32GB)
|
|
# torch_compile=true: 21 GiB peak VRAM, ~230 tok/s, 336s total
|
|
#
|
|
# Key notes:
|
|
# - Max sequence length on 32GB GPU: 2048 (micro_batch_size=1, SDP attention).
|
|
# 4096 seq_len OOMs due to head_dim=512 math SDP materializing full score matrix.
|
|
# Use 48GB+ GPUs for longer sequences or multi-GPU with FSDP.
|
|
|
|
base_model: google/gemma-4-26B-A4B
|
|
|
|
plugins:
|
|
- axolotl.integrations.cut_cross_entropy.CutCrossEntropyPlugin
|
|
- axolotl.integrations.kernels.KernelsPlugin
|
|
- axolotl.integrations.liger.LigerPlugin
|
|
use_kernels: true
|
|
use_scattermoe: true
|
|
experts_implementation: scattermoe
|
|
torch_compile: true
|
|
liger_layer_norm: true
|
|
liger_rope: true
|
|
liger_rms_norm: true
|
|
liger_glu_activation: true
|
|
liger_rms_norm_gated: true
|
|
strict: false
|
|
|
|
chat_template: gemma4
|
|
datasets:
|
|
- path: mlabonne/FineTome-100k
|
|
type: chat_template
|
|
split: train[:10%]
|
|
field_messages: conversations
|
|
message_property_mappings:
|
|
role: from
|
|
content: value
|
|
val_set_size: 0.05
|
|
output_dir: ./outputs/gemma4-26b-a4b-qlora
|
|
|
|
sequence_len: 2048
|
|
sample_packing: true
|
|
|
|
load_in_4bit: true
|
|
quantize_moe_experts: true
|
|
adapter: qlora
|
|
lora_r: 16
|
|
lora_alpha: 32
|
|
lora_dropout: 0
|
|
|
|
# Restrict LoRA to text backbone only (skip vision/audio encoders)
|
|
# using regex to match only the text decoder attention projections.
|
|
lora_target_modules: 'model.language_model.layers.[\d]+.(_checkpoint_wrapped_module.)?(mlp|self_attn).(up|down|gate|q|k|v|o)_proj'
|
|
|
|
# MoE expert LoRA (3D Parameter tensors, not nn.Linear)
|
|
lora_target_parameters:
|
|
- experts.gate_up_proj
|
|
- experts.down_proj
|
|
|
|
lora_mlp_kernel: false
|
|
lora_qkv_kernel: false
|
|
lora_o_kernel: false
|
|
|
|
bnb_config_kwargs:
|
|
bnb_4bit_use_double_quant: true
|
|
|
|
wandb_project:
|
|
wandb_entity:
|
|
wandb_watch:
|
|
wandb_name:
|
|
wandb_log_model:
|
|
|
|
gradient_accumulation_steps: 4
|
|
micro_batch_size: 1
|
|
num_epochs: 1
|
|
optimizer: adamw_torch_8bit
|
|
lr_scheduler: cosine
|
|
learning_rate: 0.0002
|
|
|
|
bf16: auto
|
|
tf32: true
|
|
|
|
gradient_checkpointing: true
|
|
activation_offloading: true
|
|
logging_steps: 1
|
|
|
|
# FA2 not supported
|
|
sdp_attention: true
|
|
|
|
warmup_ratio: 0.1
|
|
evals_per_epoch: 4
|
|
saves_per_epoch: 1
|
|
weight_decay: 0.0
|
|
special_tokens:
|