大模型(LLMs)微调篇

大模型(LLMs)微调篇

一、如果想要在某个模型基础上做全参数微调,究竟需要多少显存?

一般 n B的模型,最低需要 16-20 n G的显存。(cpu offload基本不开的情况下)

二、为什么SFT之后感觉LLM傻了?

SFT的重点在于激发大模型的能力,如果抱着灌注领域知识而不是激发能力的想法,去做SFT的话,可能确实容易把LLM弄傻。

三、SFT 指令微调数据 如何构建?

  1. 选择多个有代表性的任务;
  2. 每个任务实例数量不应太多,防止过拟合;
  3. 平衡不同任务的比例,防止较大的数据集压倒整个分布。

四、领域模型Continue PreTrain 数据选取?

技术标准文档或领域相关数据是领域模型Continue PreTrain的关键。

五、领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?

在领域训练的过程中加入通用数据集,领域数据与通用数据的比例在1:5到1:10之间是比较合适的。

六、领域模型Continue PreTrain ,如何 让模型在预训练过程中就学习到更多的知识?

领域模型Continue PreTrain时可以同步加入SFT数据,即MIP,Multi-Task Instruction PreTraining。

七、进行SFT操作的时候,基座模型选用Chat还是Base?

资源有限就用在Chat模型基础上训练,资源充足就在Base模型上训练。

八、领域模型微调 指令&数据输入格式 要求?

在Chat模型上进行SFT时,请一定遵循Chat模型原有的系统指令&数据输入格式。

九、领域模型微调 领域评测集 构建?

领域评测集时必要内容,建议有两份,一份选择题形式自动评测、一份开放形式人工评测。

十、领域模型词表扩增是不是有必要的?

领域词表扩增真实解决的问题是解码效率的问题,给模型效果带来的提升可能不会有很大。

十一、如何训练自己的大模型?

一般分为两个阶段训练:

  1. 扩充领域词表,在海量领域文档数据上二次预训练LLaMA模型;
  2. 构造指令微调数据集,在第一阶段的预训练模型基础上做指令精调。

十二、训练中文大模型有啥经验?

链家技术报告《Towards Better Instruction Following Language Models for Chinese: Investigating the Impact of Training Data and Evaluation》中,介绍了开源模型的训练和评估方法:
在这里插入图片描述
还对比了各因素的消融实验:
在这里插入图片描述
消融实验结论:
•扩充中文词表后,可以增量模型对中文的理解能力,效果更好
•数据质量越高越好,而且数据集质量提升可以改善模型效果
•数据语言分布,加了中文的效果比不加的好
•数据规模越大且质量越高,效果越好,大量高质量的微调数据集对模型效果提升最明显。解释 下:数据量在训练数据量方面,数据量的增加已被证明可以显著提高性能。值得注意的是,如

此巨大的改进可能部分来自belle-3.5和我们的评估数据之间的相似分布。评估数据的类别、主 题和复杂性将对评估结果产生很大影响
•扩充词表后的LLaMA-7B-EXT的评估表现达到了0.762/0.824=92%的水平
他们的技术报告证明中文大模型的训练是可行的,虽然与ChatGPT还有差距。这里需要指出后续
RLHF也很重要,我罗列在这里,抛砖引玉。
扩充中文词表后,可以增量模型对中文的理解能力,效果更好。数据质量越高越好,而且数据集质量提升可以改善模型效果。

十三、指令微调的好处?

有以下好处:
1.对齐人类意图,能够理解自然语言对话(更有人情味)
2.经过微调(fine-tuned),定制版的GPT-3在不同应用中的提升非常明显。OpenAI表示,它可 以让不同应用的准确度能直接从83%提升到95%、错误率可降低50%。解小学数学题目的正确 率也能提高2-4倍。(更准)
踩在巨人的肩膀上、直接在1750亿参数的大模型上微调,不少研发人员都可以不用再重头训练自 己的AI模型了。(更高效)

十四、预训练和微调哪个阶段注入知识的?

预训练阶段注入知识的,微调是在特定任务训练,以使预训练模型的通用知识跟特定任务的要求结合,使模型在特定任务上表现更好。

十五、想让模型学习某个领域或行业的知识,是应该预训练还是应该微调?

可以使用预训练和微调相结合的方式,先用篇章数据进行预训练以获取广泛的知识,再用问答对数据进行微调,使模型更好的学习到特定领域的知识。
当然,GPT大模型的预训练和微调,从实现方式来讲是没有什么差别的,都是decoder only的语言模型训练并更新参数,如果样本集小,没有大量的篇章文档数据,我认为只进行微调也能注入知识 的,不必太纠结预训练。而且特定领域跟预训练模型的分布差别不大,也不用二次预训练。

十六、多轮对话任务如何微调模型?

这里列举了 ChatGLM-6B 的生成对话的例子

    >>> from transformers import AutoTokenizer, AutoModel
    >>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
    >>> model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
    >>> model = model.eval()
    >>> response, history = model.chat(tokenizer, "你好", history=[])
    >>> print(f"response:{response}")
    >>> print(f"history:{history}")
    response:你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
    history:["你好", "你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。"]

•response 为 ChatGLM-6B 模型的 当前反馈

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xianghan收藏册

极简精品作,一分也是一份鼓励哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值