AI 文摘

如何制造一个垂直领域大模型





作者: Meshinfo 来源: Meshinfo

1. 为什么需要垂直领域大模型

诸如ChatGPT、Claude、ChatGLM等通用大型语言模型已经展示出强大的能力。但是在应对专业领域的问题时仍然力不从心,比如在面对医疗、法律、金融或者制造等专业问题时,这些模型给出的答案无疑是隔靴搔痒。企业非常期望能够在企业内部有一个类似专业"百事通",它不仅能够准确理解用户意图,而且能够给出符合本行业,本企业实际的回应和建议。因而诞生了“垂直领域大语言模型”的需求。

垂直领域大语言模型是指在特定的领域或行业中经过训练和优化的大型语言模型。与通用语言模型相比,垂直领域大模型更专注于某个特定领域的知识和技能,具备更高的领域专业性和实用性。

2. 构建垂直领域大模型的方法

通用的LLM在专业领域表现不佳的原因主要有:

  • 缺乏训练语料 ,通用大模型使用的训练语料一般都是公开渠道可以收集到的,但是特定领域的语料一般比较难以在公开渠道收集,这些数据和语料涉及企业的关键技术(Know-How)因而一般不会向公众开放。

  • 产品设计考虑 ,通用大模型考虑的是“通用”,因此在训练时的首要目标是能够支持各种日常用户的需求而并非特定领域要求。也就是不能对通用大模型“既要”,“又要”,“还要”。

那么制造一个专业领域大模型的问题就变为了:

“怎么能够让大模型学会特定领域的知识,为此甚至可以放弃一些通用的能力”。

这个问题的解法有如下几种,从容易到困难排列:

  • 大模型+知识库 ,这是目前最简单的办法,构建领域知识库,利用大模型的In Context Learning(基于上下文学习)的能力,通过检索在问答中增强给模型输入的上下文,让大模型可以准确回答特定领域和企业的问题;但是这种方式对准确检索能力要求很高,另外如果模型本身不具备领域知识,即使有准确上下文,也难以给出正确答案。

  • PEFT(参数高效的微调) ,这是一些开源的领域模型常用的方式,通过P-Tuning或者LoRA等方式对模型进行微调,使其适应领域问题,比如一些法律和医疗的开源模型。但是这种方式微调的模型一般效果不会好,这是因为PEFT并不是用来让模型学会新的知识,而是让模型在特定任务表现更好的方式。

  • 全量微调 ,这是另外一种比较流行的方式,在某个基座模型的基础上,对模型进行全量微调训练,使其学会领域知识。理论上,全量微调是最佳方式,基座模型已经学会了通用的“世界知识”,通过全量微调可以增强它的专业能力。但是实际上,如果语料不够,知识很难“喂”给模型。现在模型训练的方式,并不存在让模型记住某一本书的方法。其次是,如果拿到的不是预训练好的基座模型,而是经过SFT甚至RLHF的模型,在这些模型的基础上进行训练时,就会产生灾难性遗忘的问题。再者这种方法对算力的要求还是比较高的。

  • 从预训练开始定制 ,这种方式应该是构建垂直领域大模型最有效的方法,从一开始词表的构建,到训练语料的配比,甚至模型的结构都可以进行定制。然后严格遵循OpenAI的Pretrain–>SFT–>RLHF三段训练方法,理论上可以构建出一个优秀的领域大模型。但是这种方法需要的费用极高,除了预训练,还需要考虑模型的迭代,一般的企业根本无力承受。

可以看到,在当前的条件下,并不存在一个完美的构造垂直领域大模型的方案。只能综合考虑实际需求和条件,选择合适的方法。

3. 一些需要澄清的概念

在想要构建一个垂直领域大模型的时候,有一些概念往往被混淆,从而使得企业不能很好的理清自己的需求。非常有必要进行区分和澄清。

3.1 垂直领域和特定任务

很多需求是希望大模型去完成一些特定任务,而并不需要大模型具备专业领域知识。比如文本分类、文本生成等,这些都是特定任务。如果任务和专业领域无关,那么其实并不需要一个垂直领域的大模型。只要对模型进行PEFT微调,甚至是研究一个更好的prompt方式,就可以让模型处理特定任务时表现更好即可。在需要一些知识注入的帮助,一般可以通过外挂知识库的形式进行。除非对专业领域有很高要求,例如医学论文,法律条文解读,需要模型本身具备很强的领域知识,否则都不需要对模型本身进行微调。

3.2 PEFT很难让模型学会知识

常用的LoRA和P-Tuning等微调被称为参数高效的微调,与之对应的是全量微调。参数高效微调时,冻结了模型的大部分参数,只是改动模型少量参数,从而提高了训练效率。但是这种方式一般很难让模型学会新的知识。因为有一些研究表明,模型学会的知识是储存在模型的MLP层中。意味着不改动这部分参数,就很难让模型学会新的知识。类似Prefix Tuning、P-Tuning和LoRA等技术在某种程度上是等价的,目的是让模型适应特定任务,并不是让模型学会新的知识。因此,想通过PEFT方式让模型学会新的知识是南辕北辙。

3.3 垂直领域"系统"和"模型"

正如我们使用的ChatGPT是一个"系统"而并非GPT-3.5-Turbo模型本身一样,很多垂直领域需求是一个"系统"而并非一定是一个模型。如果能够利用通用的领域模型,加上其他增强技术构建出一个能够适应特定领域问题的系统,那么也是满足要求的,例如ChatLaw这个开源的项目中,其实也综合使用了其他模型(KeywordLLM)来增强垂直领域能力。

3.4 模型不可能也没有必要学会所有领域知识

强如当前最强的GPT4"系统",也不可能学会所有知识。就如同一个专家教授,也不能不翻阅任何资料就准确回答所有问题。因此检索增强对于大模型来说,几乎是必须的。但是,如果模型掌握的“世界知识 ”不够,推理能力 不足,那么模型就不太可能具备解决领域问题的能力。还有另外一个能力就是强大的代码生成 能力,如果不具备这一能力,那么模型也不大可能使用外部工具来增强自己。

4. 一些开源垂直领域模型

目前有很多开源的垂直领域模型,大都集中在医疗、金融、法律等领域。但是,如果仔细评估就会发现,受限于基座模型和训练资源,这些模型都还缺乏真正的可用性。只是提供了一些实现垂直领域大模型的思路可供参考。区分这些领域模型的方式也比较简单,只要看如下几点:

  • 基座模型

  • 微调数据

  • 训练方法

4.1 本草(原名华佗)

这是一个基于中文医学知识的LLaMA微调模型,项目地址是

https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese

基座模型 :LLaMA-7B

微调数据 :训练数据构建的方式利用GPT3.5的接口构造对话数据。围绕cMeKG(中文医学知识图谱)作为基准的知识库,利用GPT3.5接口围绕医学知识库构建问答数据,共计8000余条。另外收集了2023年关于肝癌疾病的中文医学文献,利用GPT3.5接口围绕医学文献多轮问答数据,共计1000余条。

训练方法 : LoRA微调

可以看到,这个项目本身训练的数据量还是比较少。基座模型LLaMA本身的中文和医学术语的词表应该不会很丰富,另外训练数据本身还是比较少,采用LoRA微调模型不太可能让模型学会太多知识。

4.2 ChatLaw

这是一个开源的中文法律大模型,并针对LLM和知识库的结合问题给出了法律场景下合理的解决方案。所以,项目是一个包含了垂直行业大模型的行业解决方案 。项目地址是:https://chatlaw.cloud/lawchat/#/

基座模型 姜子牙-13B/Anima-33B,分别对应 ChatLaw-13B ChatLaw-33B

训练数据 :以法律新闻、法律论坛、法条、司法解释、法律咨询、法考题、判决文书等原始文本来构造对话数据

训练方法: LoRA微调

整体解决方案 :为了能够获得良好的对话效果,项目一共用了三个模型。一个KeywordLLM提取问句中对应的法律条文关键词,一个LawLLM提取问句相关的法律条文,然后综合KeywordLLM和LawLLM的结果,算出topk条法文,再给ChatLawLLM生成回答。

训练效果:

“基于姜子牙-13B的模型是第一版模型,得益于姜子牙的优秀中文能力和我们对数据清洗、数据增强过程的严格要求,我们在逻辑简单的法律任务上表现优异,但***涉及到复杂逻辑的法律推理任务时往往表现不佳** *

*随后基于Anima-33B,我们增加了训练数据,做成了ChatLaw-33B,**发现逻辑推理能力大幅提升 **,由此可见,**大参数的中文LLM是至关重要的 *

这个项目有一定参考价值,不仅提出了训练方法,还提出了综合多种模型构建垂直应用的解决方案。也给出了很多有参考意义的结论。

4.3 FinGPT

这是一个开源的金融行业大模型的应用框架,也非单纯的一个大模型。这个框架实际上可以应用于任何行业。

https://github.com/AI4Finance-Foundation/FinGPT

这个框架的思想是:

项目由4个部分组成:

  • 第一部分是数据源 ,在这里,我们从互联网上收集历史和流媒体数据。

  • 接下来,我们将数据推送到**数据工程 ** 层,在这里对数据进行清洗,标记化处理和提示工程。

  • 然后,数据被推送到大语言模型(LLMs) 。在这里,我们可以以不同的方式使用LLMs。我们不仅可以使用收集到的数据来训练我们自己的轻量级微调模型 ,还可以使用这些数据和训练好的模型LLM API 来支持我们的应用程序。

  • 最后一部分将是应用程序 部分,我们可以使用数据和LLMs来制作许多有趣的应用程序

基座模型 : 开源LLaMA或者ChatGLM,并不限定

数据收集 : 新闻网站、社交媒体、公司公告、趋势(google或者baidu等搜索引擎)、其他公开数据集

训练方法 : LoRA和RLSP (根据股票价格的强化学习)

应用 : 可以将这个框架应用在智能投资顾问、量化交易和快速构建其他应用上。

5. 建议

在当前基座模型还在快速发展,不断完善的阶段,可以预先进行应用研究,但是不需要急于利用当前的基座模型去构建一个用于生产的“垂直大模型”。

有一点是确定的,无论是用哪种方法构建垂直大模型,都需要大量的数据 。而当前,大部分企业是没有很好的非结构化数据的收集整理的。过去企业构建“数据中台”和“数据湖”更多的是面对结构化和半结构化数据,对于大型语言模型需要的文本类,以及将来需要的其他模态的数据,很少有企业开展过收集、整理、清洗、标注的工作。但是这正是将来模型应用于企业内部的关键。

建议是:** 从现在开始,去构建自己行业和企业的,可以用于增强大型语言模型的数据。**

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具