datasets:
  # class_name, data_name & data_sampling_ratio are not used but need to be passed to avoid errors
  - class_name: MegatronDataset
    data_name: Megatron
    data_sampling_ratio: 1
    class_args:
      eval_steps: 2
      data_cache_path: cache
      # Option 2: data loading using --data-path with multiple weighted files
      data_path:
        - 0.2
        - data/lang=Matlab
        - 0.5
        - data/lang=Verilog
        - 0.3
        - data/lang=Zig
      split: 98,1,1
      sequence_length: 2048

tokenizer_args:
  tokenizer_name: bigcode/starcoder

model_args:
  model_class: AutoModelForCausalLM
  pretrained_config:
    model_type: gpt_dolomite
    vocab_size: 50257
    max_position_embeddings: 2048
    hidden_size: 768
    num_layers: 12
    num_attention_heads: 12
    num_key_value_heads: null
    intermediate_size: null
    activation_function: gelu_pytorch_tanh
    attention_head_type: mqa
    normalization_function: layernorm
    layer_norm_epsilon: 1e-5
    initializer_range: 0.02
    bos_token_id: 50256
    eos_token_id: 50256
    pad_token_id: 50256
    add_bias: true
    position_embedding_type: learned_absolute
  attention_implementation: flash_attention_2
  use_padding_free_transformer: true

tuning_args:
  tuning_method: pretraining

save_args:
  save_path: checkpoints
  save_interval: 50

training_parameters:
  num_training_steps: 100
  eval_interval: 50
  micro_batch_size: 6

optimizer_args:
  class_name: TorchAdamW
  class_args:
    lr: 1e-5
    weight_decay: 0.1
    betas:
      - 0.9
      - 0.95
    eps: 1e-10

lr_scheduler_args:
  lr_decay_style: cosine

mixed_precision_args:
  dtype: bf16
