作者: qiqi,mike,maomao
单位: 四川大学 KDE Lab
来自:AINLP
大型语言模型(LLM)对现代应用产生了显著影响,应用领域从自然语言处理拓展到包括OpenAI的Chatgpt及微调的LLM在内的更多特定领域任务。通常LLM先在大数据集上预训练,再根据具体应用进行微调。然而,传统微调方法成本高昂,涉及更新所有预训练参数。LoRA技术通过创建小型模块,有效地实现了预训练模型的高效微调,仅更新少量参数。截至2023年11月,基于LoRA的数千个LLaMA模型被微调并展示在Hugging Face Hub上。在HuggingFace排行榜上,前20名模型的40%采用了LoRA或其衍生技术进行微调,LoRA在保持高精度的同时大幅减少了微调所需的计算资源。
在处理多个LoRA微调任务的情境中,有两种典型的场景:相同数据集和不同数据集。每种场景都有其特点和挑战:
1.相同数据集上的多个LoRA微调任务
在这种场景中,所有的微调任务都集中在同一个数据集上,通常面向不同的特定任务或目标。
微调任务可能共享很多公共特征和语言模式,这使得在某种程度上可以实现资源和学习策略的共享。但不同的微调任务可能依然需要区分对待,以适应各自独特的目标和需求。
主要挑战在于如何在不牺牲个别任务特定需求的前提下,有效地共享学习资源和模型参数。
2.不同数据集上的多个LoRA微调任务
在这种场景中,每个微调任务处理的数据集各不相同,可能针对完全不同的应用领域或问题。
这种多样性要求微调过程必须更加灵活和个性化,以适应不同数据集的特性和需求。由于数据集的差异性,可能无法有效共享学习资源或模型参数,每个任务都需要独立的注意和优化策略。
主要挑战在于如何在多任务环境中平衡资源分配,同时保证每个任务都能获得针对其特定数据集和目标的最优训练效果。
为了克服现有系统在处理多个LoRA微调任务时的局限性,尤其是在同时处理来自相同或不同数据集的微调任务时遇到的挑战,一个种支持多个LoRA微调任务高吞吐量微调框架诞生了。该框架名为m-LoRA,是来自四川大学、德州大学阿灵顿分校等高校的一项研究。m-LoRA采用一种名为Batch Fusion的新型并行微调方法,实现多个LoRA微调任务并行训练。与此同时,m-LoRA提出了一种细粒度、高效率的作业级调度器来调度多个并行微调任务,解决了资源管理和数据对齐中的挑战。通过一系列微调实验,m-LoRA在GPU利用率、内存使用和训练吞吐量方面表现出优于现有方法。例如:m-LoRA
能够单卡同时微调超过30个任务,尤其适用于处理多个不同微调任务的场景(如多语言模型训练、不同领域的定制化模型训练等)。
在NVIDIA A100 80GB GPU上训练多个LLaMA-7B模型时,实现了高达53%的GPU内存节约。对于其它模型的训练,GPU内存节约也相当显著。
减少了24%的整体周转时间和12%的端到端训练延迟。
相比现有的参数高效微调方法,将训练吞吐量提升了约17%。
这些数据和结果均展示了m-LoRA在高效利用硬件资源、提高模型训练效率以及缩短训练周期方面的显著优势以及在资源受限环境中提升LLM效率和性能的极大潜力。
值得一提的是,这项研究是完全开源的。
论文链接:
m-LoRA: High-Throughput LoRA Fine-Tuning of Large Language Models with a Single GPU(https://arxiv.org/abs/2312.02515)
项目仓库链接:
GitHub - TUDB-Labs/multi-lora-fine-tune: Provide efficient lora fine tune with the same base model(https://github.com/TUDB-Labs/multi-lora-fine-tune)
主要的贡献如下:
设计了Multi-LoRA Trainer,实现在大型语言模型的微调过程中通过Batch Fusion方法高效共享预训练模型权重。
提出了Adaptive Job Scheduler(自适应作业调度算法),其可以收集作业的各种指标,并准确估算模型的性能和资源利用率,最大化系统效率。
有效地使用计算资源,与最先进的LoRA训练系统相比,提高了训练吞吐量、减少了训练延迟:
在NVIDIA A100 80GB GPU上训练多个LLaMA-7B模型时节省了53%的GPU内存。
在使用不同GPU训练各种预训练模型时,相比现有方法提高了大约17%的训练吞吐量。
相关背景
LoRA
LoRA是一种PEFT(Parameter Efficient Finetuning)参数高效性微调方法,通过冻结预训练模型并仅更新低秩附加矩阵,从而显著降低计算资源需求,广泛应用于LLM的微调任务,如下图(a)所示。
部署推理时候,需要原始参数和adapter参数(下图A、B)共同参与计算。
方法一,把一个adapter A和B计算后的值直接更新到原始权重W上,然后使用更新后的W进行推理计算。方法二,分别让输入经过W和A、B计算结果后再结合。
无论哪种方式都需要全部的原始矩阵参数。所以LoRA并不能降低推理内存需求,甚至采用第方法二推理时会略微增加延迟和显存消耗。
Multi-LoRA
传统的LoRA方法仅支持单任务微调,而Multi-LoRA通过BatchFusion技术将多个微调任务的训练数据融合成一个批次,允许在每个训练迭代中并行处理多个任务,如下图(b)所示。而m-LoRA框架通过这种并行微调方法能够在单个GPU上同时训练多个LoRA微调任务,并通过共享预训练模型,优化资源使用效率。
Multi-LoRA微调介绍
m-LoRA系统总览
性能优势
m-LoRA利用LoRA在单个GPU上高效地训练多个任务,共享预训练模型并采用自适应调度。
m-LoRA在单GPU设置中优化了GPU利用率、内存使用和训练吞吐量:
它在GPU内存方面实现显著节约(在NVIDIA A100 80GB GPU上训练多个LLaMA-7B模型时减少了53%)。
与现有方法相比,m-LoRA提高了约17%的训练吞吐量,同时减少了24%的周转时间和12%的端到端训练延迟。
系统优化点
Batch Fusion技术
是m-LoRA中的一项创新技术,旨在更高效地共享预训练模型,用于同时训练多个LoRA微调任务(见下图)。该技术的关键优化点包括:
并行训练迭代:BatchFusion将多个任务的训练数据融合成一个批次,这使得多个LoRA模块可以在每次迭代中共享同一个预训练模型,并且能够并行参与训练,而不是顺序或单独训练。
减少模型切换开销:通过避免频繁在不同微调任务之间切换,减少了模型切换的开销。
支持多任务并行执行:Batch Fusion的Multi-LoRA Trainer允许在同一GPU上并行执行多个微调任务。
成本分析:Batch Fusion减少了内核启动成本,降低了30%到50%的理论内核启动成本,进一步优化了GPU资源的使用。
minpad
Adaptive job scheduler
主要负责收集任务的各种指标并准确估计模型性能和资源利用率,其优化特点包括:
减少填充符号的影响:m-LoRA采取接近最优的方法来减少填充符号对训练吞吐量的影响。
内存使用估计模型:调度器结合早停预测和GPU内存的性能信息,实现作业的自适应调度。
实现多目标优化:调度器的目标是减少等待时间、降低周转时间、增加吞吐量、避免内存溢出问题,同时保持优先级和公平性(高优先级任务优先执行,遵循先来先服务原则)。
有效管理系统资源:自适应作业调度器能够更好地管理和优化系统资源,提高系统效率。
下图是一个自适应作业调度的例子。
实验结果
通过在LLaMA-7B/13B、ChatGLM2-6B和LLaMA2-7B/13B等模型上的微调试验,证明了m-LoRA在优化GPU资源使用、内存使用和训练吞吐量等方面的有效性。
1.GPU利用率和内存使用优化
m-LoRA在单GPU设置中展示了对GPU利用率、内存使用和训练吞吐量的显著优化。与Huggingface的PEFT(一种领先的参数高效微调库)相比,m-LoRA在GPU内存使用方面实现了53%的节约,特别是在NVIDIA A100 80GB GPU上训练多个LLaMA-7B模型时。
2.训练吞吐量提升
m-LoRA相对于baselines在训练总吞吐量和有效吞吐量方面有显著提高,它在各种预训练模型上的训练吞吐量比现有方法提高了约17%。
3.周转时间和训练延迟减少
m-LoRA的自适应调度算法降低了整体的周转时间和端到端的训练延迟。实验结果表明,m-LoRA在端到端训练延迟方面实现了12%的减少,而在整体周转时间上实现了24%的减少。
4. 系统效率和性能
实验结果体现了m-LoRA在系统效率和性能方面的优势。通过有效利用计算资源,m-LoRA模型具有较高的准确率,且不仅提高了训练吞吐量,还减少了训练延迟,相比于现有的LoRA训练系统更为高效。
系统实现
m-LoRA通过引入填充比率概念,优化了变长数据的处理,以提高有效吞吐量并减少计算资源的浪费。
自适应作业调度算法结合早停预测和内存使用估计模型,以达到减少等待时间、降低周转时间、提高吞吐量、避免内存溢出和确保优先级和公平性的目的。
更多内容请参考论文原文:
m-LoRA: High-Throughput LoRA Fine-Tuning of Large Language Models with a Single GPU(https://arxiv.org/abs/2312.02515)
与项目仓库:
GitHub - TUDB-Labs/multi-lora-fine-tune: Provide efficient lora fine tune with the same base model(https://github.com/TUDB-Labs/multi-lora-fine-tune)
同时,期待大家一起为m-LoRA开源项目群策群力!
公众号后台回复aaai、acl、naacl直接进投稿群~
回复LLM进入技术交流群~
回复 nice 进入每周论文直播分享群~