赞
踩
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/
得到merge_pt作为sft阶段的训练模型.
3、sft阶段数据集
sft训练数据集就是对话记录的数据集,这个数据和增量预训练是完全不一样。sft数据集如下:
不同的模型需要的模板就是不一样的。以下就是一些常见模型需要的对话模板。
图片
4、如何获得sft数据集
之前在《实践篇3:大模型有监督微调SFT(Supervised Finetuning)》中有提到过如何构造sft数据集,这里不再赘述,这部分数据集构造相对增量预训练阶段差别有点大, 这个阶段数据集也是非常关键.
5、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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。