前言
在AI盛起的当下,各类AI应用不断地出现在人们的视野中,AI正在重塑着各行各业。相信现在各大公司都在进行着不同程度的AI布局,有AI大模型自研能力的公司毕竟是少数,对于大部分公司来说,在一款开源可商用的大模型基础上进行行业数据微调也正在成为一种不错的选择。
本文主要用于向大家讲解该如何微调你的大模型,建议大家点赞收藏。
什么时候需要微调你的大模型(LLM)?
最近出现了一系列令人激动的开源LLM(语言模型),可以进行微调。但是,与仅使用闭源API相比,它们有何不同呢?
我经常收到这个问题:来自于LinkedIn上的人们询问我有关如何对开源模型(如LLaMA)进行微调的问题,公司们试图找出销售LLM托管和部署解决方案的商业案例,以及试图将人工智能和LLM应用于他们的产品的公司。但是,当我问他们为什么不想使用像ChatGPT这样的闭源模型时,他们似乎没有一个确切的答案。因此,作为一个每天都在应用LLM解决业务问题的人,我决定写下这篇文章。
为闭源API辩护
您是否尝试过为您的用例实现ChatGPT API?也许您想要对文档进行摘要或回答问题,或者只是想在您的网站上添加一个聊天机器人。往往情况是,ChatGPT在多语言任务上表现得非常出色。
人们普遍认为这些模型成本太高。但以每1,000个标记0.002美元的价格,我敢打赌您至少可以尝试在几百个样本上进行测试,并评估LLM是否适合您的特定应用。事实上,每天进行数千次API调用(或接近该范围),ChatGPT API的成本要比托管自定义开源模型的基础架构便宜得多 正如我在这篇博文中所写的[1]。
一个观点是,假设您想要回答数千或数万个文档的问题。在这种情况下,只需对这些数据训练或微调一个开源模型,然后向微调的模型提问关于这些数据的问题,这样不是更容易吗?事实证明,这并不像听起来那么简单(有许多原因我将在下面关于为微调标记数据的部分讨论)。
但是对于ChatGPT来说,有一种简单的解决方案可以让它回答包含数千个文档的上下文问题。那就是将所有这些文档作为小块文本存储在数据库中。
将文档转移到数据库以进行大规模LLM查询
现在,将为回答问题提供所有必要信息的问题已从模型架构转移到包含文档块的数据库中。
可以通过计算问题和文档块之间的相似性来找到相关的文档。通常,这是通过将文档块和问题转换为词嵌入向量,并计算文档块和问题之间的余弦相似度来完成的,最后只选择那些余弦相似度高于一定阈值的文档块作为相关上下文。
最后,问题和上下文可以组合成以下形式的提示,并输入到像ChatGPT这样的LLM API中:
代码语言:javascript复制prompt = f"Answer the question. Context: {context}nQuestion: {question}"
你可能会问:为什么不将整个文档和问题一起输入提示,而是将其分成块?之所以将文档分成块而不将所有文档组合成单个提示,是因为LLM对输入和输出长度有一定限制。对于ChatGPT而言,这个限制是4096个标记,大约相当于6-7页的文本。
将文档转移到数据库并使用闭源LLM API进行查询可能在答案明显存在于这些文档中的情况下效果很好。但在一些情况下,可能会产生次优的结果,例如如果你希望ChatGPT在一个利基话题上给出专家观点,比如对美国经济的财务展望进行推测。
领域特定的LLM
好的,所以你尝试过ChatGPT或BARD,但你不喜欢它们的回答。例如,你问ChatGPT:
“美国经济可能会有多长时间的通货膨胀?”
而它的回答是:
作为一个AI语言模型,我无法确定地预测未来,尤其是复杂的经济系统。然而,我可以为你提供一些信息和观点,帮助你了解当前的情况。 通货膨胀是一个复杂的现象,可以由多种因素引起,如需求增加、供应限制...。
不幸的是,对你来说,这还不够好。当然,你可以给ChatGPT提供一些关于美联储主席杰罗姆·鲍威尔的最新新闻。但这并不能给你与杰罗姆·鲍威尔或其他专家交谈所带来的丰富领域经验。
想想成为某个领域专家需要什么。虽然某种程度上是通过阅读该领域的书籍来获取知识,但很多也是与该领域的专家进行互动,并从经验中学习。虽然ChatGPT已经在大量的金融书籍上进行了训练,但它可能并没有接受过顶级金融专家或其他特定领域专家的训练。那么如何创建一个在金融领域是“专家”的LLM呢?这就是微调发挥作用的地方。
微调LLM
在讨论微调LLM之前,让我们先谈谈微调BERT等较小的语言模型,因为在LLM出现之前,这是常见的做法。对于BERT和RoBERTa等模型,微调的过程包括提供一些上下文和标签。任务的定义很明确,例如从上下文中提取答案或对电子邮件进行垃圾邮件分类。如果你对微调语言模型感兴趣,我在下面列出了一些可能对你有用的关于微调语言模型的博客文章:
•Fine-Tune Transformer Models For Question Answering On Custom Data[2]:在自定义数据上微调Hugging Face RoBERTa QA模型并获得显著性能提升的教程。•Transformer Models For Custom Text Classification Through Fine-Tuning[3]:通过微调DistilBERT模型构建垃圾邮件分类器(或任何其他分类器)的教程。
然而,大型语言模型(LLM)之所以引起轰动,是因为它们可以通过改变提示的方式无缝执行多个任务,并且让你有一种与对方交谈的体验。现在我们想要做的是将LLM微调成某个特定领域的专家,并以"人"的方式进行对话。这与在特定任务上微调BERT等模型完全不同。
最早的一次开源突破是由一组斯坦福大学的研究人员完成的,他们在52,000个指令上以不到600美元的成本对一款7B的LLaMa模型进行了微调,并将其命名为Alpaca[4]。随后,Vicuna团队发布了一款130亿参数的模型,其质量达到了ChatGPT的90%[5]。
最近,MPT-7B transformer[6]被发布,它可以处理65,000个标记,相比ChatGPT的输入大小增加了16倍!该模型是从头开始训练的,耗时9.5天,花费20万美元。作为特定领域的LLM示例,彭博社发布了一款名为BloombergGPT[7]的类似GPT的模型,专为金融领域而构建,也是从头开始训练的。
近期在训练和微调开源模型方面取得的进展只是小型和中型公司通过定制LLM来丰富其产品的开端。那么,如何确定何时微调或训练整个特定领域的LLM是合理的呢?
首先,重要的是明确确立闭源LLM API在您领域中的限制,并为以较低成本使客户能够与该领域的专家交谈提供支持。对于几十万个指令来说,微调模型的成本并不高,但是需要仔细思考如何给出正确的指令。在这方面,您也需要有些大胆——我还无法想到有很多领域在特定任务上微调的模型能够明显优于ChatGPT,但我相信这就在不远处,任何做得好的公司都将获得回报。
这就引出了完全从头开始训练LLM的理由。是的,这可能会耗费数十万美元以上的费用,但如果您提出充分的理由,投资者将乐意提供资金。在最近与IBM的一次采访中,Hugging Face的CEO Clem Delangue表示,定制LLM很快将变得与专有代码库一样常见,并且成为竞争某个行业所需的重要组成部分。
要点
将LLM应用于特定领域在工业界可能非常有价值。有3个层次的成本和可定制性递增:
1.闭源API 文档嵌入数据库: 这是最容易入门的解决方案,考虑到ChatGPT API的高质量,甚至可能提供足够好(如果不是最好)的性能。而且它还很便宜!2.微调LLM: 最近通过微调类似LLaMA的模型的进展表明,在某些领域中,将成本控制在 ~500美元 左右即可获得与ChatGPT类似的基准性能。如果您有大约50-100k个指令或对话的数据库,进行微调基线模型可能是值得的。3.从头开始训练: 正如LLaMA和最新的MPT-7B模型所展示的,这将耗费 ~100-200k美元,需要一到两周的时间。
现在您已经掌握了知识,继续构建您的定制领域特定LLM应用程序吧!
声明
本文翻译整理自:https://towardsdatascience.com/when-should-you-fine-tune-llms-2dddc09a404a,主要用于向大家讲解该如何微调你的大模型,建议大家点赞收藏。
References
[1]
正如我在这篇博文中所写的: https://towardsdatascience.com/llm-economics-chatgpt-vs-open-source-dfc29f69fec1
[2]
Fine-Tune Transformer Models For Question Answering On Custom Data: https://towardsdatascience.com/fine-tune-transformer-models-for-question-answering-on-custom-data-513eaac37a80
[3]
Transformer Models For Custom Text Classification Through Fine-Tuning: https://towardsdatascience.com/transformer-models-for-custom-text-classification-through-fine-tuning-3b065cc08da1
[4]
Alpaca: https://crfm.stanford.edu/2023/03/13/alpaca.html
[5]
ChatGPT的90%: https://lmsys.org/blog/2023-03-30-vicuna/
[6]
MPT-7B transformer: https://www.mosaicml.com/blog/mpt-7b
[7]
BloombergGPT: https://www.bloomberg.com/company/press/bloomberggpt-50-billion-parameter-llm-tuned-finance/