Firefly icon indicating copy to clipboard operation
Firefly copied to clipboard

微调Baichuan-7b过程中出现loss震荡严重而且为0的情况

Open deepeye opened this issue 1 year ago • 2 comments

操作系统:Centos7.9 GPU:A100 40GB CUDA: 11.2 Python 3.10.12 命令如下: torchrun --nproc_per_node=1 train_qlora.py --train_args_file train_args/qlora/baichuan-7b-sft-qlora.json 基础模型:https://huggingface.co/baichuan-inc/Baichuan-7B 数据集: https://huggingface.co/datasets/YeungNLP/moss-003-sft-data 训练参数如下:

{
    "output_dir": "output/pdmi-baichuan-7b",
    "model_name_or_path": "../Baichuan-7B",
    "train_file": "./data/moss-003-sft-data.jsonl",
    "num_train_epochs": 1,
    "per_device_train_batch_size": 8,
    "gradient_accumulation_steps": 2,
    "learning_rate": 2e-4,
    "max_seq_length": 900,
    "logging_steps": 100,
    "save_steps": 500,
    "save_total_limit": 1,
    "lr_scheduler_type": "constant_with_warmup",
    "warmup_steps": 3000,
    "lora_rank": 64,
    "lora_alpha": 16,
    "lora_dropout": 0.05,

    "gradient_checkpointing": true,
    "disable_tqdm": false,
    "optim": "paged_adamw_32bit",
    "seed": 42,
    "fp16": false,
    "bf16": true,
    "report_to": "tensorboard",
    "dataloader_num_workers": 5,
    "save_strategy": "steps",
    "weight_decay": 0,
    "max_grad_norm": 0.3,
    "remove_unused_columns": false
}

log如下:

verify trainable params the model
torch.float32 143130624 1.0
torch.float32 143130624
2023-07-20 09:41:17.643 | INFO     | component.dataset:__init__:14 - Loading data: ./data/moss-003-sft-data.jsonl
2023-07-20 09:41:38.850 | INFO     | component.dataset:__init__:17 - there are 1074551 data in dataset
2023-07-20 09:41:38.853 | INFO     | __main__:main:186 - *** starting training ***
  0%|          | 0/67159 [00:00<?, ?it/s]`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...
{'loss': 1.7472, 'learning_rate': 6.666666666666667e-06, 'epoch': 0.0}
{'loss': 1.1572, 'learning_rate': 1.3333333333333333e-05, 'epoch': 0.0}
{'loss': 0.948, 'learning_rate': 2e-05, 'epoch': 0.0}  
{'loss': 0.8917, 'learning_rate': 2.6666666666666667e-05, 'epoch': 0.01}
{'loss': 0.8655, 'learning_rate': 3.3333333333333335e-05, 'epoch': 0.01}
{'loss': 0.8581, 'learning_rate': 4e-05, 'epoch': 0.01}  
{'loss': 0.8436, 'learning_rate': 4.666666666666667e-05, 'epoch': 0.01}
{'loss': 0.8387, 'learning_rate': 5.333333333333333e-05, 'epoch': 0.01}
{'loss': 0.8255, 'learning_rate': 6e-05, 'epoch': 0.01}  
{'loss': 0.8403, 'learning_rate': 6.666666666666667e-05, 'epoch': 0.01}
{'loss': 0.8287, 'learning_rate': 7.333333333333333e-05, 'epoch': 0.02}
{'loss': 0.8719, 'learning_rate': 8e-05, 'epoch': 0.02}   
{'loss': 0.9735, 'learning_rate': 8.666666666666667e-05, 'epoch': 0.02}
{'loss': 1.1046, 'learning_rate': 9.333333333333334e-05, 'epoch': 0.02}
{'loss': 1.583, 'learning_rate': 0.0001, 'epoch': 0.02}   
{'loss': 3.0589, 'learning_rate': 0.00010666666666666667, 'epoch': 0.02}
{'loss': 2.5311, 'learning_rate': 0.00011333333333333334, 'epoch': 0.03}
{'loss': 0.0, 'learning_rate': 0.00012, 'epoch': 0.03}    
{'loss': 0.0, 'learning_rate': 0.00012666666666666666, 'epoch': 0.03}
{'loss': 0.0, 'learning_rate': 0.00013333333333333334, 'epoch': 0.03}
{'loss': 0.0, 'learning_rate': 0.00014, 'epoch': 0.03}    
{'loss': 0.0, 'learning_rate': 0.00014666666666666666, 'epoch': 0.03}

以上是什么原因呢,应该如何调整相关训练参数?

deepeye avatar Jul 20 '23 07:07 deepeye

我微调llama也出现同样的问题

rumsyx avatar Aug 08 '23 05:08 rumsyx

学习率大了2e-4 试试看1e-5开始

hemengjita avatar Nov 23 '23 16:11 hemengjita