01|企业应用大模型的路线选择
开源or闭源?
-
路线一:直接使用闭源模型。 -
路线二:直接使用开源模型。 -
路线三:开源模型+Prompt+知识库。 -
路线四:基于开源模型进行适配调优。
-
定制化 | 针对特定领域需求进行微调 -
高效性 | 在少量领域数据上进行快速适配 -
灵活性 | 自主选择模型结构和优化策略 -
可控性 | 全流程掌控数据和模型,杜绝泄露风险
如何选择开源模型?
选择合适的开源基座对于领域模型的成功至关重要。那么,如何选择开源基座呢?
我们提出一种“冰山理论”。即,大模型具有显性能力和隐性能力。隐性能力包括预训练效果、深层语言理解等,是模型性能的基石。显性能力如对话流畅度、专业知识等,影响特定任务表现。显性优化不能改变隐性能力,因此选择基座时要考虑隐性与显性能力的平衡。关键场景如医疗、金融要求高隐性能力,而闲聊、创意领域则更注重显性能力。目前国内外已经有很多知名好用的开源模型,如国外的Llama系列、国内的Qwen、Deekseek系列,他们的显性和隐性能力有所不同,Llama系列被普遍认为在处理复杂任务上是开源模型中能力最顶尖(隐性能力),而国产开源模型胜在中文对话“上手即用”(显性能力),企业可以根据自身场景需求做出选择。
本文将以模型Llama3为例,讲述如何在开源模型基础上做企业的场景适配。选择Llama的原因一方面是其隐形能力扎实,在MMLU、GPQA、HumanEval、GSM8K、MATH等多个Benchmark上表现出色;另一方面显性能力也处于领先地位,在各大全球大模型擂台赛中排开源第一,与一众闭源大模型一同名列前茅。
开源模型有哪些缺陷?
尽管Llama3潜力巨大,在多个方面表现出色,但实现场景化落地仍面临挑战。
首先,中文处理能力是Llama3面临的一大难题。尽管模型在多个领域都取得了显著进展,但在中文处理方面,仍存在着知识覆盖的局限、理解深度的不足以及生成效果的欠佳。这些问题不仅影响了模型对中文的精准理解,也限制了其在中文环境下的应用能力。
其次,专业场景应用挑战也不容忽视。在垂直领域,Llama3面临着专业知识匹配度低、服务策略单一以及交互模式固化等问题。这些问题使得模型在特定场景下的应用能力受到限制,难以充分发挥其潜力。
此外,推理性能的瓶颈、高昂的运行和维护成本以及工程适配的不足,都使得模型在提供实时高效服务时显得力不从心。
综上所述,Llama3在场景化落地过程中面临着中文理解生成欠精准、场景适配能力不足和实时高效服务受限三大挑战,企业需要不断探索和创新大模型适配技术以更好地满足实际应用的需求。
02|手把手教学:从llama3到企业场景专属大模型
将大模型从理论转化为实际应用是一个复杂的过程,需要企业制定全面的技术方案。接下来我们将分享自身经验,从对基础开源模型的分析开始,一步步带你解析预训练、微调、强化学习、知识库检索、推理优化。我们以金融领域为主要案例,但所讲述的方法可广泛应用于各行业。无论你的应用场景如何,都可以从中获得启发并进行相应调整。
增量预训练
基于llama3做垂直领域模型,首先的问题是,为什么我们要先做增量预训练?直接SFT是不是也可以?下表展示了使用了内部评测用的最新语料的, 原始llama3-70B模型的语言建模结果,在英文数据上,如新闻、代码和网页,模型的PPL值都相当低,分别是5.98、2.01和6.31,这表明模型在英文语料的建模已经相当出色。

*PPL越小表示建模能力越强
但当看中文数据时,情况就不相同了。中文网页的PPL值达到15.87,社交平台数据更是高达30.23,金融新闻也有13.48。这些高PPL值明确指出了基座模型在中文和金融领域的不足。如果基座模型能力较弱的话,后期通过SFT或者强化学习的难度就会变高,只能靠堆数据了。
-
首先是知识基础的扩展。通过增量预训练,我们可以显著提升模型的中文处理能力,同时通过加入高质量的垂类金融数据,能够使模型积累更多的金融领域知识。 -
其次,增量预训练可以增强模型的领域适应性。它能缩小通用模型与金融领域特定需求之间的差距,提高模型处理新出现的金融问题的能力。 -
第三,它为后续的指令微调奠定了更好的基础。有了更强的基础模型,指令微调的难度会降低,效果会更好,基座模型能力的提升, 也能拉升后续对齐模型的上限。 -
最后,就是数据利用效率的提高, 我们有大量的金融领域的高质量语料,通过增量预训练,我们可以充分利用大量未标注的领域数据。
当然,增量预训练也面临着挑战。最关键的问题是:如何在增强特定领域能力的同时,尽可能降低知识遗忘,保持模型的通用能力?这需要在训练过程中精心设计和平衡。避免灾难性遗忘有两个核心目标:一是平衡通用能力保持和领域知识获取;二是在提升中文和领域能力的同时,尽量减少对原始能力的损失。这时候,增量预训练的数据配比就是重中之重了。
首先我们并不知道Llama3基座模型的真实数据配比,所以需要只能通过一些小范围的实验去验证我们在增量预训练时候,数据配比的合理性。因此可以根据经验拍一个配比, 以金融垂直领域为例,比如我们可以初步拍一个英文/中文/金融=3:6:1,然后每个类别再去细分,比如英文包括common crawl,code,stackexchange等,这里尽可能跟原始基座模型能够匹配上,中文类似,金融的话,可以金融百科知识、金融资讯、财报研报等。
开始训练模型之后,最核心的就是对训练的loss进行分析和监控,以前可能就看一个全局的loss,只要loss在下降,就放心继续训练,然而这种方法, 根本不知道我们想要提升的中文和领域能力到底有没有提升。就算我们随便用一些中文数据拿来训练,损失也是会慢慢下降的。有人会问,增量预训练的过程中不能就看一个总体的平均loss吗?精细化的持续跟踪不同类型的loss,主要有两个目的,第一个明确下我们的中文和垂直领域数据是否在训练,从而可以调整数据配比,第二个是英文数据能力是否保持了,一般情况下,我们默认原始基座模型已经将英文语料训练的很充分(Llama3使用15T tokens)。

总体loss

英文loss

中文loss
从我们训练的部分类别的loss曲线可以看出:总体loss呈现稳定下降趋势,符合预期;英文loss基本保持稳定,略有波动,说明英文能力基本得到保持;中文loss:大部分都在持续下降,说明新增数据原来模型并没有见过,这我们的训练是有增量价值的。基于这些观察,我们会相应调整数据配比,优先提升中文垂直领域类数据的表现。这是一个迭代过程,需要不断微调以达到最佳平衡。通过这种精细化的数据配比和动态调整,我们能够在提升目标领域能力的同时,最大限度地避免灾难性遗忘,保持模型的全面性能。

*预训练数据大部分都比较短,低于2K
针对尽可能减少拼接、减少截断这一目标, 我们提出了一种分桶的混合长度训练策略。首先预先设定桶的类别(如 2048、4096、8192、32768)等,之后根据选定的文档集合,首先根据集合内最长的文档选择一个桶,之后基于贪心策略遍历文档集合去填充桶,直到桶被填充满,则当前桶可以作为一条训练样本进行返回。这样能够尽可能将短的数据放到短的桶内,长的数据时候,放到长的桶内。训练的时候,每个batch 可以根据权重随机选择一个类型的桶进行训练,然后可以用梯度累积的方法,缓解长度偏置的问题。

13B模型训练结果
从上面的表格可以看到,这是我们一个13B模型的实验结果,训练数据中2k,4k,8k和16k的桶,首先大部分数据都在2k内,同时因为序列长度越短,训练速度越快,这种方法可以兼顾长短文本的建模,在数据组织层面上缓解拼接、截断概率,同时相比固定长度在训练效率上可以得到提升。通过这种分桶式混合长度训练策略,我们不仅能更好地处理各种长度的文本,减少信息损失,还能显著提高训练效率。这对于大规模语言模型的预训练至关重要。
-
首先是使用最新语料作为验证集,计算PPL指标来验证模型的语言建模能力和泛化能力,这是基座模型的基本盘,既对未知数据的预测能力。这些语料涵盖了广泛的领域,包括英文原始语料如web、code、wiki和arxiv等,中文语料如中文网页、新闻资讯和社交媒体等,以及重点领域的特定语料如金融报告、公告和资讯等。用最新语料可以保证这些数据肯定没有在训练语料中见过。 -
其次,我们使用各类评测指标进行多维度能力验证。这包括英文能力的MMLU、GSM8K、HumanEval和ARC等指标,中文能力的CEVAL和CMMLU等指标,以及金融能力的FinanceIQ等指标。这样全面的评估能让我们更准确地判断模型在各个方面的表现。理想情况下,我们期望看到的结果是:英文数据的指标基本保持不变或有轻微下降,这表明模型保持了原有的英文能力。而在中文数据和垂直领域(如金融)方面,我们期望看到显著的提升,这证明了增量预训练的效果。
指令微调
指令微调,也称为SFT(Supervised Fine-Tuning),是大语言模型训练的关键环节。它的成功很大程度上取决于高质量的问答对训练数据。然而,人工标注高质量问答数据面临着成本高昂、格式不统一等诸多挑战。因此,高质量数据的自动合成成为了一个重要趋势。
-
一是基于种子指令数据的方法。这种方法使用人工标注的少量高质量种子数据,通过Prompt来引导语言模型生成新的高质量指令和回复对。这种方法的特点是质量和多样性严重依赖种子数据,虽然简单容易实施,但成本相对较低。常见的方法包括Self-Instruct和Evol-Instruct。 -
二是基于纯文本数据的方法。这种方法采用高质量预训练统计数据,通过Prompt将其转化为指令-回复对的指令数据形式。其特点是文本语料充足,能够产生大量的指令数据,同时直接受到文本质量的影响。常见的方法有Self-QA和Ref-GPT。 -
三是不依赖种子数据的方法。这种方法完全依赖大语言模型的能力,巧妙设计Prompt来引导模型生成指令。其优势在于文本语料充足,能够产生大量的指令数据,且直接受益于文本质量。但这种方法对模型能力要求较高。常见的方法包括GenQA和MAGPIE。GenQA是设定多个Topic,让大模型随机选择,基于该Topic生成问题和答案。这种对MAGPIE则是基于SFT模型的自回归生成,只提供对话模板的前半部分,让模型来续写出一个指令,这种方法一般是用在开源模型上, 一定程度上,可以“套出“开源模型都用了哪些指令进行训练,比如可以用llama3-70b,qwen270b等模型。
-
a. 专家标注:我们首先邀请多名金融专家撰写的解读分析类数据,作为高质量的种子数据。这确保了我们的基础数据具有专业性和准确性。
-
b. 模型重新输出:我们让大模型参考专家结论对原问题进行重新输出。这个过程不仅能得到质量高、有深度且格式统一的数据,还能在某种程度上增加数据的多样性。
-
c. 数据扩展:我们利用种子数据作为few-shot示例,合成新的分析类数据,从而提升整体数据质量。这种方法能够在保持专业性的同时,增加训练数据的数量。
这种方法虽然前期成本较高,但是对于最终的金融分析类的数据质量提升具有显著的效果.通过这种细分和针对性的数据合成方法,我们能够为金融领域的大语言模型提供高质量、多样化的训练数据,从而提高模型在各种金融场景下的表现能力。
强化对齐
通常为了使模型输出内容对齐人类的价值观偏好,可以对模型进行有监督微调,即所谓的SFT方式,通过大量专家示例来直接教会模型什么样的回复更好。另一种做法是在SFT的基础上,利用人类的偏好数据训练奖励模型,进而采用强化学习的方式进一步微调,即所谓的RLHF方式。
与SFT相比,RLHF方法提供了一种更动态、更有互动性的学习机制。SFT虽然在处理大规模标注数据方面效率较高,但它在应对新情境和复杂交互时常显不足。相对而言,RLHF通过不断的人机交互和反馈学习,使模型能够更加灵活地适应多变的场景和复杂的人类行为。表中列出了从方法、样本、学习原理和损失函数四个层面对两种方法的对比,可以看到,RLHF对高质量专家示例的需求更少,且有用偏好捕捉能力更强等特点。

偏好的对齐是一个复杂的过程,不同领域之间存在着不同的要求,比如:金融领域有其独特的行业风格、行业黑话,业务分析等种种要求,这与通用领域的许多要求是相悖的,基于标准的RM训练框架极易引起不同领域上性能的对抗效应。为了缓解这一问题,我们将RM的训练分为了两个阶段。在第一阶段,我们主要训练RM的通用对齐能力,也为后续金融微调打基础。随后,将已经具备了通用对齐能力的RM在金融偏好数据上进行微调,进一步提高金融领域的对齐能力。此外,在奖励的预训练阶段,我们在标准的BT建模的基础上,引入了无监督对比学习与逆强化学习的目标,这样做一方面可以充分利用部分高质量的金融数据,同时还能够挖掘模型回复的内在逻辑关系,增加奖励模型对于正负样本特征的区别和辨识能力,进一步提高奖励模型在困难样本上的准确率。最终,综合提高奖励模型在金融领域对人类价值观的捕捉能力。

置信区间数据过滤
此外,迭代式的PPO训练方式可以在训练过程中动态调整数据配比和优化方向。与标准PPO在固定的约束邻域内的求解方式不同,迭代式PPO交替进行“改进”和“评估”两个步骤。在改进阶段,模型进行正常的PPO训练,并逐步增加KL散度的约束力度,从健步如飞到精细调控。在评估步骤,我们对比PPO相比与SFT模型的增益以及奖励模型对齐率的效果,并根据二者的关系调整数据配比,使得模型专精做每个改进阶段擅长的事。通过这样的方式,有的放矢调整训练方向,更大程度避免模型恶化,可以达到步步为营,减小对齐税的目的。

工程增强
Llama3的预训练数据量大,时间长,集群规模大,故障发生频繁,大量的中断由非计划原因引起。任何平台都无法保证硬件和GPU的零故障率。Meta称Llama3在训练过程中累计中断466次,平均每3小时就发生一次。

Llama3故障数据
企业在实际的大模型训练过程中,也会面临着硬件故障、程序故障带来的稳定性风险,因此在训练稳定性保障上参考Llama3的经验并结合自身的实际情况,我们完成了三项主要工作:
-
中断自动恢复,我们在二次预训练场景先根据设计的数据量和机器规模条件,选择合适的checkpoint管理策略来平衡训练效率(效率下降不超过5%)和中断后的恢复代价(保存间隔尽量短),并提高中断后的恢复效率(15min内重新启动训练任务)。 -
性能瓶颈分析上二次预训练碰到了与LLaMA-3类似的问题:训练中有少数节点计算效率比其他节点慢10%左右。慢节点会造成集群整体效率下降。我们在二次预训练任务启动和运行中,增加了单节点的吞吐监控,以便能及时发现慢节点并在合适的时机替换节点。 -
自动效果评估是我们在二次预训练中额外添加的功能,基于20个以上的公开评测集,对保存的checkpoint自动完成评估,根据评估曲线干预训练过程,避免算力浪费在不符合预期的训练策略上。
03|跨越从大模型到实际场景应用的鸿沟
尽管大模型经过调优具备一定能力,但要真正落地企业场景,仍面临诸多挑战。例如:
-
如何有效结合企业私有知识? 缺乏对企业内部数据、流程理解的大模型难以直接应用于实际业务。 -
如何确保模型输出的准确性和可靠性? 大模型可能生成不符合事实、逻辑混乱甚至有害的内容,这在企业应用中是不可接受的。 -
如何融入实时信息? 大模型限制了对最新信息的掌握,而企业场景往往需要处理实时数据。 -
如何嵌入工作流? 大模型需要与企业的现有系统和流程无缝集成,才能发挥最大价值。
场景增强:让大模型更懂领域、更懂用户
为解决上述挑战,领域模型的场景增强工作至关重要。场景增强旨在让大模型更懂领域、更懂用户,主要包括以下三个方面:
-
提示词工程(Prompt Engineering):精心设计的提示词能够引导模型生成更专业、准确、符合预期的输出。通过提供明确的指令、背景信息、示例等,可以显著提升模型在特定任务上的表现。 -
检索增强生成(Retrieval-Augmented Generation, RAG):将大模型与外部知识库相结合,实现知识的动态检索和利用。当用户提问涉及特定领域知识时,模型首先从知识库中检索相关信息,再结合检索结果生成回答,从而提高模型的准确性和可靠性。 -
智能体(Agent):将大模型与外部工具和API集成,使其具备执行复杂任务的能力。智能体通过将用户需求分解为多个子任务,调用相应的工具或API完成子任务,并将结果整合生成最终回答,从而实现大模型与实际应用场景的深度融合。
全链路赋能:领域模型驱动企业数字化转型
在场景增强的基础上,领域模型能够为企业数字化转型提供全链路赋能,贯穿企业前台、中台和后台业务,释放AI的巨大潜力。
前台:智能客服3.0时代

进入了智能客服3.0时代是大模型在企业前台应用的重要成果。传统客服依赖于标准化脚本回答,服务时间和容量有限,而AI客服1.0则通过简单的关键词匹配来提供有限的问题解决能力。AI客服2.0通过串联系统集成,能更灵活地理解问题,处理更复杂的对话。然而,智能客服3.0时代的到来,使得客服行业实现了质的飞跃,集成了多种交互方式,减少了中间环节,提供了更连贯的对话体验。生成式AI技术的应用使得客服能够根据上下文生成个性化和创造性的回答,而不仅仅是基于预设规则的响应。这种技术进步不仅改变了客服的运作方式,也重塑了人类在客服场景中的角色。在智能客服3.0时代,人类的角色从此前的操作者、协作者转变为了监督者,能创造新的人机共生典范。
大模型在中台的应用则体现在赋能业务决策,开启了数据驱动新范式,主要应用于数据处理、数据分析和决策支持三大方面:
-
数据自动处理:提取非结构化数据,统一与可视化的数据整合与转换 -
数据高效分析:通过模式识别与趋势分析洞察需求变化,通过因果分析与关联分析识别驱动因素 -
精准预测:基于历史数据进行预测,找到复杂场景最优解。
大模型应用赋能企业后台则通过助力智能研发实现,从单点提效到全流程重塑研发流程,将带来更好的开发体验、更快的迭代速度和更精益的组织结构。对于开发者个体而言,可以帮助思考、帮助编码和帮助修改。而对于研发过程则依次全流程重塑了规划、编写、测试和维护。
通过场景增强和全链路赋能,大模型能够真正落地企业场景,为企业数字化转型提供强大助力。无论是提升客户体验、优化业务决策还是加速研发创新,大模型都将发挥越来越重要的作用。

