滴!第二次打卡

一、LoRA 微调基础

LoRA(低秩适配)微调是一种高效的大模型优化技术,其核心是冻结原始网络参数,在 Attention 层的 QKV 等部分添加包含两个低维度矩阵 A 和 B 的旁支,微调过程中仅更新这两个矩阵,使得训练参数大幅降低,资源消耗较少,参与微调的参数仅占总参数量的 0.5%。可以将其理解为给大模型装 “小插件”,用更少资源让模型学习新东西,适应新任务。

其核心流程包括:实例化 base model、配置 LoraConfig、实例化 LoRA 模型、查看模型中参与微调的参数。关键参数有 r(低秩维度)和 lora_alpha(学习力度参数),r 决定旁支中矩阵 A 和 B 的维度,当 r 远小于模型原始矩阵维度时,能大幅减少参数更新量;lora_alpha 与 r 共同计算缩放因子,影响模型学习的 “力度”。

二、DeepSeek-R1-Distill-Qwen-1.5B 模型 LoRA 微调实战

基于昇思框架和开发板进行该模型 LoRA 微调的实战流程分为五步:环境准备与检查、代码下载、权重下载、其他环境准备、启动运行,其中前三步已提前完成。

在数据预处理方面,昇思框架与 Hugging Face Transformers 有所区别,它配合数据处理 Pipeline,通过.map (…) 方法对数据集指定列施加数据变换,可执行内置或用户自定义的变换操作。

训练过程中,自定义的 SavePeftModelCallbak 能在每 save_steps 个步数后,将模型当前的 LoRA adapter 权重保存到指定路径,且保存后会移除额外的基础模型权重文件,以节约空间。

三、优化方案

在香橙派 Alpro 开发板上,由于 host 侧和 device 侧共享内存,需要进行相关优化。可直接加载 fp16 权重,而非先加载 fp32 权重再转换,以减少内存占用。

通过设置 MAX_COMPILE_CORE_NUMBER 和 TE_PARALLEL_COMPILER 环境变量,能限制 Python 进程数,控制额外的内存占用。