当前位置:   article > 正文

大语言模型Lora参数微调过程(附完整代码)_lora微调大模型教程

lora微调大模型教程

这是一个金融领域大模型微调baichuan的具体代码执行过程,具体代码可以详见git仓库。

1.配置参数

model_args,data_args,train_args,finetuning_args,generating_args = get_train_args()
  • 1

2.加载分词tokenizer

tokenizer = AutoTokenizer.from_pretrained(model_path)
  • 1

3.读取config文件

config = AutoConfig.from_pretrained(model_path)
  • 1

4.读取模型文件

model = AutoModelForCausalLM.from_pretrainded(model_path,config)
  • 1

5.对模型初始化适配器

配置lora的参数,尽可能微调模型较少的参数。

model = init_adapter(model,args)
  • 1

配置模型为训练模式

model = model.train()
  • 1

6.开始训练模型

trianer = SftTrainer(model,args,tokenizer)
  • 1

7.合并原始模型的权重与adapter的权重生成自己的模型

from transformers import AutoTokenizer,AutoModelForCausalLM
form peft import PeftModel
import torch

model_name_or_path = "your_LLM_model_path"
adapter_name_or_path = "your_lora_model_path"
save_path = "save_model_path"

tokenizer = AutoTokenizer.from_pretrained(
    model_name_or_path,
    trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
    model_name_or_path,
    trust_remote_code=True,
    low_cpu_mem_usage=True,
    torch_dtype=torch.float16,
    device_map="auto"
)
model = PeftModel.from_pretrained(model, adapter_name_or_path)
model = model.merge_and_unload()

tokenizer.save_pretrained(save_path)
model.save_pretrained(save_path)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

全部代码

https://gitee.com/iwuzhichao/sft.git
  • 1

损失函数
语言模型中有监督微调(SFT)的损失函数是什么?它是怎么进行梯度下降来训练的?针对这类问题,查阅相关资料并没有解释。下面谈点自己的理解:在SFT阶段,其本质是微调一个GPT模型(生成式模型),它的原理是根据上文生成下文,更通俗的解释是根据上文所有内容到一个大的“词表”中寻找下一个词(计算概率),选择概率较大的词作为输出。用到的损失函数是交叉熵损失,比如这个大“词表”真实值为[1,0,0,0,0]而预测值为[0.7,0.1,0.05,0.1,0.05],那么它的计算公式为loss=-1/5(1log(0.7)+0log(0.1)+0log(0.05)+0log(0.1)+0*log(0.05)),这就相当于我要拉进预测概率与真实概率之间的距离。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/200312
推荐阅读
相关标签
  

闽ICP备14008679号