领域模型生产指南
导读领域模型脱胎于通用大模型,两者有相似之处,但通用大模型在训练时使用的是通识数据集,缺少领域知识,导致企业在应用过程中会发现一些问题。比如,如果我们要做一个滴普科技的智能问答机器人,但通用大模型并没有学习到滴普科技的各种产品信息,缺少先验知识。
1. 领域大模型和通用大模型的区别
2. 基于企业数据的领域数据集构建
3.模型训练方法的选择
4. 验证集的构建及模型评估方法
5. 国产硬件评测
6. 问答环节
领域大模型与通用大模型的区别
1. 数据集不同
通用大模型已有许多优秀的开源数据集,注重广度、覆盖各行各业,但在特定行业的深度不够,或只在某几个行业具备一定深度。比如 Code Llama(代码生成大模型)在 Python、Java 等代码层面有较多的数据集的积累,但其他冷门语言的数据集较少。
领域大模型可以使用通用数据,但不能完全使用,因此受限于行业。目前只有少数行业存在行业数据集,比如法律行业有裁判文书等开源数据集,但较多行业比如零售没有数据集。
2. 灵活性和准确性不同
灵活性不同:通用大模型具有较高的灵活性和泛化能力,可以通过 prompt 使其适用于各种不同的任务和场景。
准确性不同:在具体行业中,通用大模型的准确性不如领域大模型。
3. 复杂性不同
通用大模型复杂度较高。
领域大模型更多用于企业内部,不需要追求像通用大模型那么强的泛化能力,且可以使用小参数的模型来满足客户需求,复杂度相对较低。
02
基于企业数据的领域数据集构建
1. 高质量数据集创建难点
高质量数据集少:较多客户只有一个文档库,且这些文档大多是完全未经处理的。 数据处理受限:需要先对客户的数据进行处理,耗时、成本高。通用大模型处理数据时,优先会使用 ChatGPT 先做一些预处理,但为了保障企业数据隐私,此类数据处理方法无法使用,数据处理工具受限。 数据多样性:数据多样性的平衡会影响模型的灵活性和准确性,如果数据多样性低,模型的灵活性受限;如果多样性高,模型的准确性就可能会降低。
2. 高质量数据集创建方法论
(1)SFT
(2)使用大模型自身能力
(3)数据多样性的平衡方法
比如某个客户需求是做一个意图识别大模型,它不需要面向普通用户,而是面向程序,这种情况下是不需要考虑灵活性的,那么就可以把领域数据的比例直接拉到 100%。 又比如客户需要大模型对公司汽车产品的操作指南、操作手册去进行回答,用户遇到问题就可以询问大模型。对于这种客户,是需要应对客户需求、直接面向终端用户的,那么就需要把数据拉到 30%。
(4)总结
通过 SFT 降低对高质量数据集的要求,1000 高质量对话数据就可以满足领域大模型的训练。
充分利用现有大模型的手段来降低数据处理或者数据预处理(即知识提取)对人工处理的要求。
建立通用知识库,灵活地去调整比例,实现通用和领域数据的自动融合,最后得出来一个能够支持后续训练的数据集。
03
模型训练方法的选择
1.不同训练方法的比较
(1)全参微调
硬件要求高,比如训练 13B 模型至少需要 A800 硬件,普通的 A10、A20、A30、4090 等是无法胜任的。
成本高,不只是需要一块 A800,需要建立多机多卡集群,可能得有三十几台或二十几台且每台八块的 A800 才能去做一个比较大的全参微调。
准确性好,它动了所有的参数,因此准确性会比较好。
灵活性低,全参微调最重要的点是怎么解决过拟合的问题,如果过拟合,可能会让模型忘记之前的知识,因此灵活性降低。
(2)高效微调
硬件要求低,廉价的硬件也能跑。根据实测情况,很多LORA 等高效微调甚至可以跑在苹果笔记本上,一般 M1 Pro 芯片就能比较好的运行,4090 显卡要跑 Lora 也是很轻松的,甚至 3090 都可能。
准确低,Lora 等高效微调其实很挑场景,有些场景下效果会比较好,有些场景效果就上不去。
灵活性高,Lora 这种高效微调方式的一般逻辑是原有的大模型参数不动,加一些参数,训练其实也是训练最后增加的那部分参数,这也就意味着模型本身的能力并不会降低。
2.选择方法
(1)从数据集特征入手
只是做一些输出格式的调整,不需要让大模型去记住新的知识时,选择高效微调方法。训练模型只是为了输出更符合客户需求的话术,或更符合客户要求的数据集,而并没有改变数据集本身的权重、记忆、知识结构时,Lora 的表现比较好。 需要让模型记住新的知识时,建议通过全量参数去微调。
(2)从硬件层面选择
(3)从效果层面选择
(4)总结
04
验证集的构建及模型评估方法
1.领域大模型验证的难点
2.五维模型能力评估
(1)分词能力
(2)句法分析、语法分析、语义消歧、理解能力
3.举例
(1)分词能力
(2)句法分析能力
(3)语义分析能力
(4)语义消歧能力
(5)理解能力
4.验证集准备方法论
事先准备通识验证数据集。
针对五个维度,客户准备具体领域的数据集。
准备一个基准模型,可以用 Llama2、chatGLM、百川之类的开源大模型做基准。如下图所示,将基准模型和我们模型的能力放到同一个雷达图上,得出两者之间面积的重合点以及两者的差距,这是一种横向对比的方法。