当前位置:   article > 正文

微调实操二: 有监督微调(Supervised Finetuning)

微调实操二: 有监督微调(Supervised Finetuning)

1、背景

在上一章《微调实操一: 增量预训练(Pretraining)》中进行了第一阶段的增量专业知识训练,这篇开始实践一下指令微调的训练,在预训练模型基础上做指令精调,以对齐指令意图。通过输入中添加指令,使得模型可以将指令作为上下文的信息,可以引导模型生成特定任务所需的输出。这次训练的目的就是让模型获得听懂指令的能力,可以适应多种不同任务。

2、合并增量模型

将《微调实操一: 增量预训练(Pretraining)》训练好的模型进行权重合并:

!ls outputs-pt-bloom-v1
!python /kaggle/working/MedicalGPT/merge_peft_adapter.py --model_type bloom \
    --base_model bigscience/bloomz-560m --lora_model outputs-pt-bloom-v1 --output_dir merged-pt/
  • 1
  • 2
  • 3

得到merge_pt作为sft阶段的训练模型.

3、sft阶段数据集

sft训练数据集就是对话记录的数据集,这个数据和增量预训练是完全不一样。sft数据集如下:
在这里插入图片描述

不同的模型需要的模板就是不一样的。以下就是一些常见模型需要的对话模板。
在这里插入图片描述

图片
4、如何获得sft数据集

之前在《实践篇3:大模型有监督微调SFT(Supervised Finetuning)》中有提到过如何构造sft数据集,这里不再赘述,这部分数据集构造相对增量预训练阶段差别有点大, 这个阶段数据集也是非常关键.

5、sft训练脚本

sft 训练

%cd /kaggle/working/autoorder
!git pull
!pip install -r algorithm/llm/requirements.txt
!pip install Logbook
import os
os.environ['RUN_PACKAGE'] = 'algorithm.llm.train.supervised_finetuning'
os.environ['RUN_CLASS'] = 'Supervised_Finetuning'
print(os.getenv("RUN_PACKAGE"))
!python main.py \
    --model_type bloom \
    --model_name_or_path merged-pt \
    --train_file_dir /kaggle/working/MedicalGPT/data/finetune \
    --validation_file_dir /kaggle/working/MedicalGPT/data/finetune \
    --per_device_train_batch_size 4 \
    --per_device_eval_batch_size 4 \
    --do_train \
    --do_eval \
    --use_peft True \
    --fp16 \
    --max_train_samples 1000 \
    --max_eval_samples 10 \
    --num_train_epochs 1 \
    --learning_rate 2e-5 \
    --warmup_ratio 0.05 \
    --weight_decay 0.05 \
    --logging_strategy steps \
    --logging_steps 10 \
    --eval_steps 50 \
    --evaluation_strategy steps \
    --save_steps 500 \
    --save_strategy steps \
    --save_total_limit 3 \
    --gradient_accumulation_steps 1 \
    --preprocessing_num_workers 1 \
    --output_dir outputs-sft-v1 \
    --overwrite_output_dir \
    --ddp_timeout 30000 \
    --logging_first_step True \
    --target_modules all \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0.05 \
    --torch_dtype float16 \
    --device_map auto \
    --report_to tensorboard \
    --ddp_find_unused_parameters False \
    --gradient_checkpointing True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号