模型越大对显卡的要求越高,目前主流对大模型进行微调方法有三种:Freeze方法、P-Tuning方法和Lora方法。笔者也通过这三种方法,在信息抽取任务上,对ChatGLM-6B大模型进行模型微调。liucongg/ChatGLM-Finetuning: 基于ChatGLM-6B模型,进行下游具体任务微调,涉及Freeze、Lora、P-tuning等 (github.com)https://github.com/liucongg/ChatGLM-Finetuning
1>Freeze
2>P-tuning
3>Lora
【NLP】LoRA——大模型的低成本微调方法 - 知乎 (zhihu.com)
(311条消息) 什么是LoRA模型,如何使用和训练LoRA模型?你想要的都在这!_yang7711的博客-CSDN博客 (311条消息) 大模型训练——PEFT与LORA介绍_常鸿宇的博客-CSDN博客//讲的特别好
DeepSpeed 是一个深度学习优化库,它可以使分布式训练变得容易、高效和有效。
DeepSpeed超大规模模型训练工具 - 知乎 (zhihu.com)
简单经验之谈:
1.finetune在训练过程中改变了模型的参数,本质修改了下游任务代码,完成了BP修改网络的参数。而LangChain+LLM并没有,因为本质是prompt的介入,不存在模型内部参数调整。
2. ①Freeze:解冻一些层来训练,其他都层都冻结。
Lora微调
②Lora:技术原理简单,但真有奇效,需要注意rank大小的设置,是根据业务领域来的,领域垂直性越强,就要设置的越大,比较有意思的就是数据,看起来最没技术含量的事情,大家不愿意做,但其实是最难的,数据收集存在诸多问题,数据少且封闭,缺乏标注,垂直领域往往对结果要求很高。
另外,有一些内容(比如商品的售价)经常在变换,如何让模型快速响应这些内容,训练(微调)一次周期还挺长的,目前可以采取配知识库的方法(ChatGLM+LangChain+知识库)
注意:生成式模型的一系列审核机制,对用户的输入数据进行审核,防止输入一些有诱导性的问题,模型需要对回答输出进行审核。内容风控是上线前的重中之重。
参考资料:
大模型LLM-微调经验分享&总结 - 知乎 (zhihu.com)
预训练大语言模型的三种微调技术总结:fine-tuning、parameter-efficient fine-tuning和prompt-tuning的介绍和对比 - 知乎 (zhihu.com)
(310条消息) 【prompt】什么是 Soft Prompt 和 Hard Prompt ?_vector<>的博客-CSDN博客