最近看到了个博客,感觉是一个很不错的新手上路的方法。LoRA(Low-Rank Adaptation,低秩适应)是一种流行的技术,用于更高效地微调大型语言模型(LLMs)和Stable Diffusion文生图。与调整深度神经网络的所有参数不同,LoRA专注于仅更新一小组低秩矩阵。这个博客通过从头开始编码LoRA来解释其工作原理,是一个深入理解算法内部机制的练习机会。
文章:https://lightning.ai/lightning-ai/studios/code-lora-from-scratch?view=public§ion=all
预训练的LLMs通常被称为基础模型,因为它们在各种任务中都具有多功能性。通过微调,可以将预训练的LLM适应特定数据集或任务,这比昂贵的预训练更为有效,但更新所有层仍然计算成本高昂。LoRA提供了一种更高效的微调替代方案。LoRA通过低秩格式近似层权重在训练期间的变化ΔW。
使用预训练的DistilBERT模型进行文本分类,展示了LoRA的应用。通过替换模型中的预训练线性层为LinearWithLoRA层,可以装备并微调模型。
LoRA在测试精度上与仅训练模型的最后两层相比有优势,同时使用的参数数量更少。全层微调虽然性能更好,但涉及的参数数量远多于LoRA设置。
这是一次很好的从零开始动手搭建LoRA的实践。
特邀作者:日本早稻田大学计算机系博士生 王军杰