一、前言
对于大模型在一些安全级别较高的领域,比如在金融服务领域实施人工智能解决方案时,面临的最大挑战之一是数据隐私、安全性和监管合规性。
因为担心数据泄露的问题,很多银行或机构都会回避利用人工智能的优势潜力,尤其是对于GPT-4这样的模型,在国内应用基本上是不太现实的问题。
为了克服这一挑战并充分利用人工智能的力量,一个可行的办法是针对特定任务进行人工智能或大型语言模型(LLM)的微调,以确保数据安全地保存在您的私有服务器或虚拟私有云中。
今天,我们就聊聊如何使用LoRA(低阶自适应)和PEFT(参数高效微调)等最先进的LLM微调技术来有效地微调预训练模型。首先解释微调的基本原理和关键概念,然后以如何使用Google Colab微调模型的具体示例结束。在这个例子中,我们选择了Mistral 7B模型,它被称为迄今为止尺寸最优秀的模型,并且完全开放且免费访问。
二、微调的基本原理
2.1、微调的力量
微调是就是将通用的预训练语言模型训练为专业模型的关键所在。比如,我们所熟知的GPT-3模型正是通过微调从而进化成为众所周知的 ChatGPT 聊天机器人。
这里我总结了对自己的语言模型进行微调训练的几点好处:
-
隐私性:数据保留在本地或 VPC 中,防止泄露和违反法规,例如 《生成式人工智能服务管理暂行办法》。
-
可靠性:减少幻觉、增强一致性、减少偏见并过滤掉不需要的信息。
-
性价比:保持对正常运行时间的控制,减少延迟,降低每个请求的成本。
-
透明度:获得更大的控制权并确保模型行为的透明度提高。
毕竟外面通用模型最重要还是商业效果,自己微调后就能紧紧围绕自己的需求来优化啦。总之,为了让机器说实在话,还是要自己动手微调的好。

2.2、微调方法
一般有以下几种微调方法可以使大型语言模型适应特定任务,包括:
-
语境学习/检索增强生成
-
指令学习
-
根据人类反馈进行强化学习 (RLHF)
在本文中,我们将重点讨论其中一种方法——指令学习。
2.3、什么是指令微调
指令微调是一个过程,它根据明确的指令调整大型语言模型以执行特定任务。
它涉及使用包含给定域中{instructions, outputs}对的数据集。该数据集帮助模型学习如何在收到这些类型的指令时提供正确的响应。在此训练过程中,可以调整模型的底层权重,或者可以采用其他方法对其进行训练。如果执行正确,此过程将使模型能够理解和执行以前可能难以处理的指令。
2.4、如何进行指令微调
一般常见的指令微调方法有以下几种可供选择:
-
完全微调:此方法需要从头开始使用新数据训练整个预训练模型。它更新所有模型层和参数。虽然它可以带来高精度,但它需要大量的计算资源和时间。它最适合与原始预训练任务显着不同的任务。
-
参数高效微调 (PEFT):例如,LoRA:PEFT 专注于仅更新模型参数的一个子集。它通常涉及冻结模型的某些层或部分。这种方法可以减少计算资源,实现更快的微调。PEFT 中的著名方法包括 LoRA、AdaLoRA 和 Adaption Prompt (LLaMA Adapter)。当新任务与原始预训练任务具有相似性时,它是合适的。最近的 PEFT 最先进技术实现了与完全微调相当的性能。
-
QLoRA:QLoRA 涉及通过量化降低模型参数的精度。这减少了内存使用量,并支持在精度降低的硬件上进行更快的推理。在资源受限的设备(如手机或边缘设备)上部署模型时,这尤其有用。
接下来,我们将使用 PEFT LoRA 微调我们的 Mistral-7B 模型。简而言之,PEFT 方法使您能够获得与完全微调相当的性能,而训练参数却很少。
三、模型微调实战
3.1、安装必要的软件包
首先,安装下面列出的所需依赖项。我们将通过安装主要分支的库来使用最新功能。
!pip install -q -U bitsandbytes
!pip install -q -U git+https://github.com/huggingface/transformers.git
!pip install -q -U git+https://github.com/huggingface/peft.git
!pip install -q -U git+https://github.com/huggingface/accelerate.git
!pip install -q datasets
此外,我们将定义一些辅助函数来改进显示并简化与模型的交互。
from IPython.display import HTML, display
def set_css():
display(HTML('''
<style>
pre {
white-space: pre-wrap;
}
</style>
'''))
get_ipython().events.register('pre_run_cell', set_css)
def get_completion(query: str, mode

本文介绍了如何在高度监管的金融领域使用LoRA和PEFT技术对大型语言模型进行微调,以保护数据隐私,确保模型在Mistral7B等模型上的应用。通过指令学习和量化技术,实现在本地或VPC环境下高效、安全的模型定制。
最低0.47元/天 解锁文章
869

被折叠的 条评论
为什么被折叠?



