新闻  |   论坛  |   博客  |   在线研讨会
独家 | 何时微调大语言模型?
数据派THU | 2023-08-04 07:31:46    阅读:2354   发布文章

领英(LinkedIn)账号的fork中向我提出了这样一个问题:如何微调诸如LLaMA的开源模型。公司正在寻找销售LLM托管和部署解决方案的业务案例,将人工智能和LLM应用于具体的产品。我问他们为什么不使用像ChatGPT这样的非开源模型时,他们没有给出正确的答案。所以我决定写这篇文章来解答如何利用llm解决日常业务问题。


非开源API的案例


是否尝试过用ChatGPT的API 实现具体案例?如果想实现文本总结或回答问题,或者只是想在网站上找一个聊天机器人,通常情况下,ChatGPT在这些语言任务上会做得很好。


人们普遍认为,非开源的模型太贵了,1000个 token需要花费0.002美元,为什么不可以在100个样本上做一下尝试,并评估大语言模型是否为特定应用程序的最佳选择。事实上,在这个范围内每天至少有数千次的API调用,ChatGPT API比博客中提到的开源模型要便宜得多。


其中一个观点是,假设需要回答成千上万份文件中的问题,此时,对这些数据进行训练或微调开源模型,并询问利用这些数据微调模型会不会更容易一些?事实证明,这并不像听起来那么简单(出于各种原因,将在下文关于微调标签数据一节中讨论)。


但是ChatGPT有一个简单的解决方案,可以根据包含数千个文档的上下文来回答问题。它将所有文档分为小块文本存储到数据库中。

图片 

图片将文档下载到数据库中进行规模化LLM查询| Skanda Vivek


将数据从模型架构中卸载到一个包含文档块的数据库中,为模型提供回答问题所必要的信息。


通过计算问题和文档块之间的相似性,就可以找到具有相关性的文档,通过将文档块和问题转换为单词嵌入向量,并计算文档块和问题之间的余弦相似度,最后只选择特定余弦相似度以上的文档块作为相关上下文。


最后,问题和上下文可以组合成如下的提示符,并入像ChatGPT这样的大语言模型API:

图片 

图片


大家可能会问——为什么不将整个文档和问题输入到提示中,而是分成小的文档块呢?之所以将文档分割成块,而没有将所有文档合并成一个提示符,是因为大语言模型对最大输入和输出长度有一定的限制。对于ChatGPT来说,最大输入和输出长度是4096个 token,大约是6-7页的文本。


将文档下载到数据库中,并使用非开源的LLM API进行查询,可能在文档中明显存在答案的情况下工作良好。但在很多情况下,可能会产生次优结果,比如想让ChatGPT对一个话题提供专家视角——例如,对美国经济的金融前景进行推测。


 专业领域LLM


好吧,如果已经试用了ChatGPT或BARD,但你并不喜欢它。答案确实有点离谱。例如,如果问ChatGPT:


“美国经济的通胀可能会持续多久?”


 它返回下述答案:


作为一个人工智能语言模型,我无法确定地预测未来,特别是关于复杂的经济系统。但是,我可以为您提供一些信息和观点,以帮助您了解当前的情况。


通货膨胀是一种复杂的现象,可以由多种因素引起,如需求增加、供应限制等….


不幸的是,上述答案还不够好。当然,还可以给ChatGPT提示一些关于美联储主席杰罗姆·鲍威尔声明的消息。但这并没有给你该领域的丰富经验,如果继续交谈,可能会得出-好吧,杰罗姆·鲍威尔,还有谁!或者是另一个专家。


考虑如何成为某一领域的专家,虽然可以阅读关于该领域的书籍,但也可以与该领域的专家互动,从经验中学习。虽然ChatGPT已经接受过了大量金融书籍的训练,但它可能还没有接受过顶级金融专家或其他特定领域的专家的训练。那么,如何让LLM成为一个在金融领域的“专家”呢?这就是微调的作用所在。


微调LLM


在讨论微调大语言模型之前,首先谈谈像BERT这样的小语言模型的微调,这在大语言模型出现之前很常见。对于像BERT和RoBERTa这样的模型,微调相当于传递一些上下文和标签。将任务定义好,比如从上下文中提取答案,或者将电子邮件分类为垃圾邮件和非垃圾邮件。我写了一些关于这些方面的博客文章,如果对微调语言模型感兴趣,它们可能会很有用:

图片 

图片

大型语言模型(llm)之所以如此流行,是因为它们可以通过改变提示的方式无缝地执行多个任务,而且有类似于在另一端与人交谈的经验。现在需要对LLM做出调整,使其成为某一主题方面的专家,并像一个“人”一样参与对话。这与在特定的任务上微调BERT模型截然不同。


最早的开源突破之一是斯坦福大学的一组研究人员,他们对7B LLaMa模型(今年早些时候由Meta发布)进行了微调,他们在52K指令下使用不到600$实现了微调,并称之为 Alpaca。不久之后,Vicuna团队发布了一个130亿个参数的模型,它达到了ChatGPT质量的90%。


最近,又发布了MPT-7B transformer,它可以摄入65k个token,是ChatGPT输入大小的16倍!训练从头开始,为期9.5天,花费200k$。作为专业领域LLM的一个例子,Bloomberg 发布了一个类似gpt的模型 BloombergGPT,为金融领域而构建,也是从零开始训练。


在训练和微调开源模型方面的最新进展是中小型公司通过定制的llm来丰富其产品。那么,又如何决定何时调整或训练专业领域的llm呢?


首先,需要明确专业领域中闭源LLM  API的局限性,并允许客户以很小的成本与该领域的专家聊天。对于10万左右的指令来说,微调模型并不是很昂贵——但是需要仔细考虑之后才能获得正确的指令。这是需要大胆一些,虽然还想不到哪个专业领域的微调模型性能明显优于ChatGPT,但我相信这里会有拐点,任何这样做的公司将会得到奖励。


这令我想到了如果从头开始完全训练LLM的案例,这很容易花费超过数十万美元,但如果有一个可信服的理由,投资者会很乐意投入其中。在最近接受IBM的采访时,Hugging Face的首席执行官克莱姆·德兰古评论说,不久,定制的大语言模型会像专有代码库一样常见——并且会成为提高行业竞争力的重要组成。


要点


应用于特定领域的LLM在行业中非常有价值,在增加成本和可定制性方面分为3个层面:


1. 非开源API+文档嵌入数据库:第一种解决方案可能是最容易实现的,考虑到ChatGPT API的高质量——甚至可能提供足够好(即便不是最好的)的性能。而且也不贵!

2. 微调LLM:最近从对LLaMA模型进行微调中取得的进展表明,这需要花费大约500$才能在某些领域获得类似于ChatGPT的基线性能。如果具备大约~50-100k指令或对话来微调基线模型的数据库,这也值得一试。

3. 从零开始训练:正如 LLaMA 和最新近的MPT-7B 模型所显示的那样,它将花费大约100-200k,需要一两个星期的时间。


了解上述内容后,开始构建自定义专有领域的LLM应用程序吧!


原文标题:When Should You Fine-Tune LLMs?原文链接:https://medium.com/towards-data-science/when-should-you-fine-tune-llms-2dddc09a404a?source=explore---------8-58--------------------bbc182a3_471b_4f78_ad66_68a6b5de2c39-------15


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客