scripts/lora_finetune_dpo_phi4.yaml (81 lines of code) (raw):

# Config for single device LoRA finetuning in lora_finetune_single_device.py # using a Phi3 mini (3.8B) model # # This config assumes that you've run the following command before launching # this run: # tune download microsoft/Phi-3-mini-4k-instruct --output-dir /tmp/Phi-3-mini-4k-instruct --ignore-patterns None --hf-token <HF_TOKEN> # # To launch on a single device, run the following command from root: # tune run lora_finetune_single_device --config phi3/mini_lora_single_device # # You can add specific overrides through the command line. For example # to override the checkpointer directory while launching training # you can run: # tune run lora_finetune_single_device --config phi3/mini_lora_single_device checkpointer.checkpoint_dir=<YOUR_CHECKPOINT_DIR> # # This config works only for training on single device. # Model arguments model: _component_: torchtune.models.phi4.lora_phi4_14b lora_attn_modules: ['q_proj', 'v_proj', 'output_proj'] apply_lora_to_mlp: True apply_lora_to_output: False lora_rank: 8 # higher increases accuracy and memory lora_alpha: 16 # usually alpha=2*rank lora_dropout: 0.0 # Tokenizer tokenizer: _component_: torchtune.models.phi4.phi4_14b_tokenizer vocab_path: {{model_dir}}/vocab.json merges_path: {{model_dir}}/merges.txt max_seq_len: null # Checkpointer checkpointer: _component_: torchtune.training.FullModelHFCheckpointer checkpoint_dir: {{model_dir}} checkpoint_files: [ model-00001-of-00006.safetensors, model-00002-of-00006.safetensors, model-00003-of-00006.safetensors, model-00004-of-00006.safetensors, model-00005-of-00006.safetensors, model-00006-of-00006.safetensors, ] recipe_checkpoint: null output_dir: {{model_output_dir}} model_type: PHI3_MINI resume_from_checkpoint: False save_adapter_weights_only: False # Dataset dataset: _component_: torchtune.datasets.preference_dataset source: json data_files: {{train_path}} column_map: chosen: chosen_conversations rejected: rejected_conversations train_on_input: False split: train seed: null shuffle: True # Fine-tuning arguments epochs: 1 max_steps_per_epoch: null batch_size: 1 gradient_accumulation_steps: 8 optimizer: _component_: torch.optim.AdamW fused: True weight_decay: 0.01 lr: 5e-4 lr_scheduler: _component_: torchtune.training.get_cosine_schedule_with_warmup num_warmup_steps: 100 loss: _component_: torchtune.rlhf.loss.DPOLoss beta: 0.1 label_smoothing: 0 compile: False # Training env device: cuda # Memory management enable_activation_checkpointing: True enable_activation_offloading: False # Reduced precision dtype: bf16 # Logging output_dir: {{log_dir}}/lora_finetune_output metric_logger: _component_: torchtune.training.metric_logging.{{metric_logger}} log_dir: {{log_dir}}/training_logs log_every_n_steps: 1 log_peak_memory_stats: False # Showcase the usage of PyTorch profiler # Set enabled to False as it's only needed for debugging training profiler: _component_: torchtune.training.setup_torch_profiler enabled: True #Output directory of trace artifacts output_dir: {{log_dir}}/profiling_outputs #`torch.profiler.ProfilerActivity` types to trace cpu: True cuda: True #trace options passed to `torch.profiler.profile` profile_memory: False with_stack: False record_shapes: True with_flops: False # `torch.profiler.schedule` options: # wait_steps -> wait, warmup_steps -> warmup, active_steps -> active, num_cycles -> repeat wait_steps: 5 warmup_steps: 5 active_steps: 2 num_cycles: 1