Adalora使用教程
【代码】Adalora使用教程。
·
Adalora使用教程
# 安装loralib pip
# pip install loralib
import loralib
# adalora使用的是svd伪装。
layer = loralib.SVDlLinear(in_feature, outfeature, r=12)
# 加载大模型
model = BigModel()
# fix大模型参数
loralib.mark_only_lora_as_trainable(model)
# RankAllocator就是所谓的r的训练scheduler,也就是最开始r先大一点,后面就是将mask住sensitivity score小的,然后开始彻底maks住。
from loralib import RankAllocator
from loralib import compute_orth_regu
# 设置RankAllocator
# init_warmup:最开始不动
# 删除但是恢复
# final_warmp:最后删除不恢复
# beta1 :i = beta1 * i + (1 - beta1) * (sensitivity_score(wij))
# beta2 :u = beta2 * u + (1 - beta2) * (sensitivity_score(wij) - i)
rankallocator = RankAllocator(model, lora_r=12, target_rank=8, init_warmup=500,final_warmup=1500,
mask_interval=10, total_step=3000, beta1=0.85, beta2=0.85)
# 让伪svd分解师正交矩阵,加上一个正交惩罚项
(loss + compute_orth_regu(model,regu_weight=0.1)).batckward()
optimizer.step()
# 将svd部分的奇异值进行mask
randallocator.update_and_mask(model, global_step)
glob_step += 1
更多推荐
所有评论(0)