赞
踩
01、引言
无论是近期自己在研习大模型及其应用的过程中,还是在与相关专业人士交流时,关于大模型私有化部署的讨论并不少见:
在OpenAI的官方文档中,也将微调(fine-tuning)列作其文本生成模型的能力之一:
在使用百度千帆大模型平台的过程中,也能看到大模型调优的服务/功能支持:
想来对于这个话题,屏幕前的你也一样,或多或少有所好奇,又或者正在实践之中。
私有化部署大模型产品以及进行行业版/企业版微调或领域知识增强,本质上是为了实现两个主要目标:
微调 OpenAI 文本生成模型可以使它们更好地用于特定应用程序,但这需要仔细投入时间和精力。
OpenAI
那么,什么是大模型的私有化/精调?怎样进行大模型的私有化/精调?
本文试图给出初步的答案,请随我一同探索一番。
02、基本概念
什么是大模型私有化
大模型私有化(Model Private Deployment)指的是将预训练的大型人工智能模型(如GPT、BERT等)部署到企业自己的硬件环境或私有云平台上。与公有云服务或模型即服务(Model-as-a-Service)相比,私有化部署能够给企业带来更高级别的数据安全性和自主控制能力。
对数据隐私和安全要求高、需要自主控制AI模型运行环境的企业而言,或者在特定地理位置因法律法规限制不能使用公有云服务的情况下,这种需求是确实存在的。而且可能是中国的“国情”如此,想要私有化的诉求相比欧美的企业的比例会更高(纯个人看法)。
出于数据隐私和安全的考虑,特别是对于那些处理敏感信息的企业,如金融、医疗等行业。私有化部署确保了数据在本地处理,避免了数据传输过程中的泄露风险,同时也帮助企业符合严格的数据保护法规。
这个概念和将企业的应用部署在公有云、私有云还是本地机房上,其实道理是一样的。所以我想不需要过多赘述。
什么是大模型精调
类似于GPT、GLM、Gemini、Llama、Baichuan、ERNIE等这样的通用的预训练大模型,通常基于广泛的公开文献和网络信息训练,缺乏许多专业知识和行业数据的积累,因此在行业针对性和精准度方面存在不足。
精调(也称微调,Model Fine-Tuning)是在预训练的大型AI模型基础上,通过在特定任务上的进一步训练,使模型更好地适应特定的应用场景或数据集。这个过程涉及使用较小的、特定领域的数据集对模型进行再训练,以调整模型参数,提高其在特定任务上的表现。
通过精调,可以将通用的大模型优化为更适合企业特定需求的模型,如提高在特定行业术语理解、客户交流中的准确率等。这不仅能够提升用户体验,还能够提高业务效率和效果。
精调适用于几乎所有希望利用AI模型解决具体业务问题的场景,包括但不限于客户服务自动化、内容推荐、情感分析、文档自动审核等。
既然说到这里,就插个题外话,一些要自研和训练通用大模型的厂商不仅缺乏专业知识和行业数据,也缺通用知识,所以“卖数据”也是一门好生意:
国内开始大模型竞赛开始后,八友科技是第一波获益的企业之一,很多客户找到梁斌购买数据进行模型训练。“大模型客户购买我们的数据就是用硬盘拷贝数据,对我们来说成本很低,原来堆在仓库不值钱的东西一下子就值钱了。”梁斌透露,公司目前已经有50多个大模型客户,客单价约在50万至60万元,目前公司大模型数据销售收入已接近3000万元。
模型从通用到定制化
回归到大模型精调本身,如果从适用性的角度出发,我自己理解可以按照“通用大模型→行业大模型→企业大模型”这样分层递进的方式来划分,以反映模型应用的深度和专业化程度的增加:
通用大模型(General-Purpose Models):这一层次保持不变,指的是具有广泛通用能力的模型,适用于多种基础任务和领域。我们所熟知的GPT无疑就是其中的佼佼者:
行业大模型(Industry-Specific Models)或领域专用大模型(Domain-Specific Models):针对医疗、法律或教育等特定领域,又或者银行业、保险业、制造业、电商业等特定行业的需求,进行更深入的优化和定制,这一层次的模型相比通用大模型,具有更专业的行业/领域知识,能够更好地处理领域内的特定问题,理解并应对行业特有的挑战和需求。比如:
图:阿里智能客服机器人的应用场景简介
图:数势科技的智能分析支持的一些数据分析任务场景
关于垂直领域微调的更多(中文)大模型,可参见:
https://github.com/HqWu-HITCS/Awesome-Chinese-LLM
企业定制大模型(Enterprise-Customized Models):在通用大模型或行业大模型的基础上,针对特定企业的独特需求、数据、业务流程进行定制化开发和训练。这种模型最大程度地适配企业的具体情况,提供个性化的解决方案。
当然,有些在实际的产品应用层面,未必直接采用了微调,也可以通过prompt、Agent等方式来实现,但这不影响我们理解相关概念。这也是OpenAI官方指南所建议的:
我们建议首先尝试通过提示工程、提示链接(将复杂任务分解为多个提示)和函数调用来获得良好的结果,关键原因是:
通过这种更为详细的划分方式,我们能够更精确地识别和满足不同层次的AI模型应用需求,同时也为企业提供了从通用到个性化,不同深度和广度的AI解决方案选择路径。
如果将“京小智”中的知识库类型与我们这里讨论的大模型分类方式进行类比的话,想来有助于大家理解:
虽然本质上有所不同(知识库更接近于大模型RAG而非Fine-Tuning),但通过这种类比,我们可以看到,在AI大模型的应用和智能客服知识库的构建中,都采取了从通用到个性化的逐步深入的策略,这种分层递进的方法有助于在满足广泛需求的同时,也能针对特定的需求提供更专业、更精细的解决方案。
03、大模型精调/定制化的方式
几种大模型精调的方式
根据百度千帆大模型平台上的展示,可以看到支持Post-pretrain、SFT、RLHF这3种模型精调方式:
(1)Post-pretrain:后预训练,即在模型预训练之后,针对特定任务或领域进行,在相关的数据集上进一步训练、微调模型,以提升模型在该任务上的表现。
(2)SFT:即Supervised Fine-Tuning,监督微调,一种在预训练之后进行的训练过程,它使用有标签的数据来调整模型的参数。SFT通常用于将预训练模型适配到特定的任务或领域。在SFT中,模型会学习如何根据给定的输入生成更符合人类预期的输出。这种方法可以显著提高模型在特定任务上的表现,但它依赖于高质量的有标签数据。
(3)RLHF:即Reinforcement Learning from Human Feedback,强化学习来自人类反馈,一种利用人类反馈来指导模型学习的方法。
它们各有特点,适用于不同的场景和需求:
其他的更多方式
还有更多的方式,尽管没有在百度千帆大模型平台上有直接的体现,但也值得我们了解:
(4)Prompting / Prompt Engineering:通过设计合适的提示词,引导模型以特定的方式响应。这种方法不需要改变模型的权重,而是通过精心设计的输入来激发模型的期望输出。
优点:不需要额外的训练,节省了计算资源和时间。
缺点:需要对模型有深入的理解,才能设计出有效的提示。
适用场景:适合于那些资源有限,或者需要快速验证模型在特定任务上性能的场合。
(5)Few-Shot Learning / Zero-Shot Learning:少量样本或零样本学习,旨在使模型能够在极少甚至没有示例的情况下解决特定的任务。
优点:对标注数据的需求少,特别是在数据稀缺的场景中非常有用。
缺点:可能不如完全监督的方法准确,特别是在复杂任务上。
适用场景:适合于数据稀缺或者数据标注成本高昂的任务。
(6)Knowledge Distillation:知识蒸馏是一种将大模型(教师模型)的知识转移给小模型(学生模型)的技术。通过这种方式,小模型可以在保持较小规模的同时,尽可能地模仿大模型的表现。
优点:生成的小模型计算成本低,便于部署。
缺点:可能无法完全达到大模型的性能水平。
适用场景:适用于对模型大小和计算效率有严格要求的场景。
(7)Transfer Learning:迁移学习是一种利用在一项任务上学到的知识来解决另一项相关但不同任务的方法。虽然与SFT相似,但迁移学习强调从源任务到目标任务的知识迁移。
优点:可以加速学习过程,提高模型在目标任务上的性能。
缺点:需要确保源任务与目标任务之间有足够的相关性。
适用场景:适用于目标任务的数据较少,但可以找到与之相关的源任务拥有大量数据的场景。
(8)Adversarial Training:通过引入对抗样本来训练模型,以增强模型对输入数据的微小扰动的鲁棒性。
优点:提高模型的鲁棒性,减少对抗攻击的风险。
缺点:训练过程可能更复杂,计算成本高。
适用场景:适用于安全性要求高的应用场景,如金融欺诈检测、网络安全等。
大模型的微调和定制化正在被广泛探索和应用,诸位看官如有兴趣,不妨结合自己感兴趣的行业或领域深入研究、学习。
03、大模型精调/定制化的实现
基本步骤
进行大模型的微调和定制化是一个多步骤的过程,而且采用不同方法时会有差异。如果一定要做个通用的概括,关键的步骤应该有:
(1)需求分析:
确定微调或定制化的目标和需求。
明确模型需要解决的具体问题,如语言理解、图像识别、推荐系统等。
(2)数据准备:
收集和整理用于微调的数据集。对于特定任务或行业,可能需要相关领域的数据。
数据预处理,包括清洗、标注、划分训练/验证/测试集等。
(3)选择基础模型:
根据任务需求选择合适的预训练大模型作为起点。考虑模型的语言、规模、之前的训练数据等因素。
评估模型的通用性能,确定是否符合微调的基础需求。
(4)模型微调:
设计微调策略,包括学习率、训练周期、损失函数等设置。
在特定任务的数据集上训练模型,调整模型的权重以适应特定任务。
(5)性能评估:
使用验证集或测试集评估微调后模型的性能。
分析模型表现,识别任何过拟合或欠拟合的问题。
(6)迭代优化:
根据性能评估的结果,调整微调策略,可能包括调整训练参数、增加数据增强、改进数据预处理等。
迭代训练,直至模型性能达到预期目标。
(7)模型部署:
准备模型部署环境,可能包括服务器配置、云服务选择等。
部署模型到生产环境,确保模型的稳定运行和性能。
(8)监控与维护:
持续监控模型在实际应用中的表现,收集反馈。
定期维护和更新模型,以应对新的数据分布或业务需求变化。
(9)用户反馈循环:
收集用户反馈和业务指标,用于进一步优化模型。
考虑将用户反馈整合入未来的模型训练和迭代中。
以Post-pretrain为例
在此,我直接引用百度千帆大模型平台的指引文档(稍作精简和调整)来帮助大家理解具体怎么进行模型的精调:
流程大纲>>>
希望能在大模型中注入领域知识,增强模型领域专业性,并且满足以下条件时,推荐使用Post-pretrain:
若仅有少量高质量语料或费用敏感用户,建议考虑知识库管理方法,学习领域知识。
在以上的垂类场景中,Post-pretrain能做到:
注意:特定领域的数据质量和多样性是关键因素,需要确保模型不会因为特定数据的过度拟合而失去泛化能力。
要在特定领域使用post-pretrain方法训练一个大模型,关键是准备与该领域相关的高质量语料。以下是一些关于语料的指导原则:
数据质量方面>>>
a.语义高质量:
b.内容高质量:
数据规模方面>>>
建议至少10亿 tokens 语料(大约等于13.3亿个汉字,得有非常深厚的积累了)。但post-pretrain所需的语料库量是一个复杂的问题,因为它受到多个因素的影响,包括任务的复杂性、领域的专业性、模型的规模等,因此在实际应用中,可以根据模型的表现调整语料规模。
在准备与领域相关的高质量语料,平台提供了全面、易用的工具链帮助用户快速构建高质量数据:
预置数据集使用场景:
b.数据分析
对于用户的领域相关语料,平台提供了数据分析的功能,可以对文本数据进行分布统计和质量检查,输出领域语料的整体分布和质量情况。
c.数据清洗
在数据分析的过程中,如果发现一些低质量的文本,可以在数据清洗pipeline中选择对应的清洗算子,修复或者去除低质量的语料,提高数据质量。
(3)配置项
pretrain/post-pretrain阶段,Epoch默认为1。Epoch等价于数据重复的次数。目前的实验表明,post-pretrain阶段重复的数据对模型训练没有额外增益,甚至是有害的,而且复制的数据会耗费额外的计算资源,导致训练速度变慢,故平台默认值为1。
学习率(LearningRate)是在梯度下降的过程中更新权重时的超参数,学习率过高会导致模型难以收敛,并且会加快遗忘,同时增加训练的不稳定性。学习率过低则会导致模型收敛速度过慢,平台已给出默认推荐值,如果没有专业的调优经验,推荐使用默认值。
关于混合训练:仅用单一领域数据进行模型训练,模型很容易出现灾难性遗忘现象,其他领域的能力出现下降。在领域训练过程中加入通用数据进行混合训练,在增强用户垂类场景能力的同时,保持其原本的通用能力。
使用建议:
默认配比为1:5,即1份领域数据: 5份通用语料(百度专家在多个领域场景的验证,确认1:5的配比效果相对而言比较好)。
关于预置数据集信息:预置了100Billion tokens的通用语料,广泛地搜集了不同来源的各类中英文公开数据,包括书籍、网页、论文、代码、传统的NLP数据集等不同类型,并进行了深度清洗,保证了数据的多样性和高质量。
通过训练过程可视化观察Training loss的收敛曲线,成功的训练一般有明显的收敛过程。
图(a)loss明显下降,训练收敛;
图(b)loss有尖峰,但很快恢复,可不进行特别的干预,但需注意数据质量或者学习率;
图(c)loss发散,训练未收敛,需着重检查数据质量和超参配置。
更综合的实现方式
当然,在具体的工业实践上,并不会非此即彼地只采用一种方式,而是采用多种方式相结合,毕竟目标是在合理或可接受的投入前提下,取得还不错的效果。
在此,我还是直接引用之前看过的度小满轩辕金融大模型的介绍给大家做个简单的分享:
大模型精调的现实挑战
在微调和定制化AI大模型的过程中,面临着多种风险和挑战,例如:
(1)数据隐私和安全:使用敏感或个人识别信息(PII)需要特别小心,以避免数据泄露和滥用。
(2)数据质量和偏见:数据集中的偏见或错误会导致模型学习到错误或偏见的行为,进而影响决策和性能。需要确保数据的多样性和代表性,以及清洗数据以减少噪声和不准确信息。
(3)计算资源和成本:大模型的训练和微调需要大量的计算资源,这可能导致高昂的成本。需要合理规划资源,优化训练过程以减少不必要的开销。
(4)模型泛化能力:微调后的模型可能在训练数据上表现良好,但在未见过的新数据上表现不佳,即过拟合问题。需要通过合适的模型验证和测试方法,确保模型具有良好的泛化能力。
(5)技术和方法选择:选择不适合的微调方法或模型架构可能导致项目失败。需要基于具体的业务需求和技术背景,选择最合适的技术和方法。
(6)维护和迭代:随着时间的推移,数据分布可能发生变化,模型可能需要定期更新以维持性能。需要建立有效的机制来监测模型性能,并根据需要进行迭代更新。
(7)用户接受度和伦理考虑:用户可能对AI做出的决策持怀疑态度,特别是在高风险的应用场景中。在设计和实施AI解决方案时,需要考虑伦理问题,确保AI的使用是公正和透明的。
(8)监管和合规性:特定行业(如金融、医疗)对AI的使用有严格的监管要求,需要确保AI项目符合所有相关法规和行业标准。
04、大模型精调/定制化的成本
通过在预训练的通用大模型上微调获得定制化行业模型最适合中国国情,不过成本、技术、数据方面都有着较高的门槛(但相比从0到1全量训练自己的基础大模型毫无疑问是较低的),需要一定的基础设施和投资。
其成本区间根据项目的规模、复杂度、以及所需的精度等不同因素有很大的差异。但大致需要花费多少呢?
基础设施
定制化模型需要一系列技术基础设施来支持模型的开发、训练、部署和维护:
成本区间
成本可以从几千到几百万美元不等,主要取决于以下因素:
云平台厂商
“卖铲子”这个商机当然早就被捕捉到了,大部分的云平台厂商都会提供,例如前文所提到的百度智能云(千帆大模型平台):
微软、谷歌、亚马逊、华为……也都有提供。
微软Azure AI:
亚马逊Bedrock:
华为云:
企业可考虑成本、服务范围、技术支持等多方面因素,选择适合自己业务需求的平台和服务,降低大模型定制化的门槛,加速AI应用的开发和部署。不过,具体选择哪个平台,还需考虑成本、服务范围、技术支持等多方面因素。
私有化部署
当然有些企业出于数据、隐私等方面的考虑,不想要采用上云的AI大模型定制化方式,而是想要私有化部署。这方面也有厂商提供解决方案,例如智谱AI、科大讯飞、竹间智能等。
在这里,我们不妨用智谱AI的私有化定价作为参考。根据其官网最新介绍,云端私有化的部署价格如下:
本地私有化部署价格如下:
当然,随着时间的发展,相信这些成本会进一步降低。
以上,就是关于大模型私有化和精调的初步研习分享。
本期到此结束。
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
保证100%免费
】Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。