`文|庞德公
编辑|郭嘉
由于对大型语言模型,人工智能从业者经常被问到这样的问题:如何训练自己的数据?回答这个问题远非易事。生成式人工智能的最新进展是由具有许多参数的大规模模型驱动的,而训练这样的模型LLM需要昂贵的硬件(即许多具有大量内存的昂贵GPU)和花哨的训练技术(例如,完全分片的数据并行训练)。
幸运的是,这些模型通常分两个阶段进行训练——预训练和微调。其中前一个阶段(要)昂贵得多。鉴于高质量的预训练LLMs很容易在网上获得,大多数人工智能从业者可以简单地下载一个预训练的模型,并专注于使这个模型(通过微调)适应他们想要的任务。
“就所需的硬件和为不同任务托管独立实例的存储/交换成本而言,微调庞大的语言模型的成本高得令人望而却步。”
模型的大小并没有在微调过程中改变。因此微调一个LLM虽然比预训练便宜,可是也不是易事,仍然需要训练技术和硬件来处理这样的模型。每次微调运行都会创建一个完全独立的“副本”。
参数高效微调(PEFT)是微调一种比较好的技术,它不是端到端地训练完整的模型,而是固定预训练的模型权重,并且在微调期间仅调整少量特定于任务的参数。这种方法大大减少了内存开销,简化了存储/部署过程,并允许使用更易于访问的硬件进行微调LLMs。
上图展示了预训练,特征提取和微调的过程,预训练就是使用训练数据直接训练基础模型,比较常见的有T5,BloombergGPT,GPT-4。特征提取一般是利用基础模型进行内容的Embedding,然后在另接其他的模型进行预测,例如Bert。微调是利用训练数据训练完基础模型,然后采用微调技术(例如更新部分参数,更新所有层或者额外添加层)进行二次训练。
Instruction-tuned就是全量微调中的一种,FLAN在基础模型上面,通过指令调整(在通过指令描述的数据集集合上微调语言模型)可以显著提高未见任务的零样本性能。它采用 137B参数预训练语言模型,并在通过自然语言指令模板表达的60多个NLP数据集上对其进行指令调整。
FLAN 显著提高了其未修改版本的性能,并在评估的25个数据集中的20个数据集上超越了零样本175B GPT-3。FLAN 甚至在 ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze上的表现远远优于少样本 GPT-3。消融研究表明,微调数据集的数量、模型规模和自然语言指令是指令调整成功的关键。大白话而言,它将这些数据集根据不同的模版构建不同的指令训练样本,然后再次训练模型:
PEFT概览
最后先来看看PEFT的技术分类和全景图,大致可分为四类:
Additive PEFT:通过注入新的可训练模块或参数来修改模型架构;Selective PEFT:使选择部分的参数子集在微调期间可训练,其余的冻结;
Reparameterization PEFT:将原来的参数重新结构化,比如用低轶矩阵重新表示以进行训练,然后等效地将其转换推理。
Hybrid PEFT,它结合了不同PEFT方法的优点,建立了一个统一的PEFT模型。
上图为各种算法,都是围绕着各种主流微调技术的微调方法,比如之前的文章已经介绍过的LoRA,后续将围绕这根主线开展学习之旅。