LLaMA-Factory添加adalora

感谢https://github.com/tsingcoo/LLaMA-Efficient-Tuning/commit/f3a532f56b4aa7d4200f24d93fade4b2c9042736和https://github.com/huggingface/peft/issues/432的帮助。

在LLaMA-Factory中添加adalora

1. 修改src/llmtuner/hparams/finetuning_args.py代码
在FinetuningArguments中修改finetuning_type,添加target_r和init_r
在这里插入图片描述
修改__post_init__函数
在这里插入图片描述

2. 修改src/llmtuner/tuner/core/adapter.py代码
添加AdaLoraConfig
在这里插入图片描述
在init_adapter函数中添加一个if判断,添加位置在如红框所示:
在这里插入图片描述

    if finetuning_args.finetuning_type == "adalora":logger.info("Fine-tuning method: AdaLoRA")latest_checkpoint = Noneif model_args.checkpoint_dir is not None:if (is_trainable and finetuning_args.resume_lora_training) or (not is_mergeable): # continually fine-tuningcheckpoints_to_merge, latest_checkpoint = model_args.checkpoint_dir[:-1], model_args.checkpoint_dir[-1]else:checkpoints_to_merge = model_args.checkpoint_dirfor checkpoint in checkpoints_to_merge:model = PeftModel.from_pretrained(model, checkpoint)model = model.merge_and_unload()if len(checkpoints_to_merge) > 0:logger.info("Merged {} model checkpoint(s).".format(len(checkpoints_to_merge)))if latest_checkpoint is not None: # resume lora training or quantized inferencemodel = PeftModel.from_pretrained(model, latest_checkpoint, is_trainable=is_trainable)if is_trainable and latest_checkpoint is None: # create new lora weights while trainingif len(finetuning_args.lora_target) == 1 and finetuning_args.lora_target[0] == "all":target_modules = find_all_linear_modules(model, model_args.quantization_bit)else:target_modules = finetuning_args.lora_targetlora_config = AdaLoraConfig(task_type=TaskType.CAUSAL_LM,inference_mode=False,target_r=finetuning_args.target_r,init_r=finetuning_args.init_r,r=finetuning_args.lora_rank,target_modules=target_modules,lora_alpha=finetuning_args.lora_alpha,lora_dropout=finetuning_args.lora_dropout,)model = get_peft_model(model, lora_config)if id(model.peft_config) != id(model.base_model.peft_config): # https://github.com/huggingface/peft/issues/923model.base_model.peft_config = model.peft_config

3. 修改src/llmtuner/tuner/core/parser.py的代码
这边建议所有有关finetuning_args.finetuning_type==/!= "lora"的都改成图片所示
在这里插入图片描述

修改transformer源码

按照上面的改完之后虽然可以训练,但是其实并没有实现adalora的秩的调整。

我是通过在update_and_allocate函数中设置断点发现模型训练没有调用update_and_allocate函数,update_and_allocate函数位于python3.10/site-packages/peft/tuners/adalora.py中。

1. 修改python3.10/site-packages/transformers/trainer.py代码

                    from peft import PeftModelif isinstance(model, PeftModel):if getattr(model.base_model, "update_and_allocate", None) is not None:model.base_model.update_and_allocate(total_batched_samples)

把上面的代码复制到train函数中,具体的位置应该是整个文件的第二个model.zero_grad()上面,不同transformers的位置可能不一样
在这里插入图片描述
2. 设置adalora的总迭代次数
两个方法一个是在adaloraconfig定义的时候设定(我没试),另外一个就是一样修改train.py,如下:
在for epoch in range(epochs_trained, num_train_epochs):上面一行设置

        # 设置总迭代数model.base_model.peft_config[model.base_model.trainable_adapter_name].total_step = len(train_dataloader)

在这里插入图片描述

训练启动

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/617043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode】2085. 统计出现过一次的公共字符串

文章目录 题目思路代码 题目 2085. 统计出现过一次的公共字符串 思路 使用两个哈希表 words1Count 和 words2Count 分别统计两个数组中每个单词的出现次数。然后遍历 words1Count 中的每个单词,如果该单词在 words1 中出现了一次,且在 words2 中也出…

小红书年终“礼物营销”玩法:种拔一体,实现品效破圈

恰逢年末,用户送礼需求旺盛,小红书推出“礼物季”,品牌们纷纷入局,话题上线18天浏览量破9亿。“礼物营销”覆盖全年营销节点,贯穿始终,礼赠场景下用户消费决策链路缩短,种拔一体,帮助…

Android 集成firebase 推送(FCM)

1,集成firebase 基础 1>googleService文件 2>项目级gradle 3>app级gradle 4>setting 2,推送相关 重点: 源文档:设置 Firebase Cloud Messaging 客户端应用 (Android) (google.com) /*** 监听推送的消息* 三种情况…

el-tree多个树进行节点同步联动(完整版)

2024.1.11今天我学习了如何对多个el-tree树进行相同节点的联动效果,如图: 这边有两棵树,我们发现第一个树和第二个树之间会有重复的指标,当我们选中第一个树的指标,我们希望第二个树如果也有重复的指标也能进行勾选上&…

Qt 调试体统输出报警声

文章目录 前言一、方法1 使用 Qsound1.添加都文件 直接报错2.解决这个错误 添加 QT multimedia3. 加入代码又遇到新的错误小结 二、第二种方法1.引入库 总结 前言 遇到一个需求,使用Qt输出报警声,于是试一试能调用的方法。 一、方法1 使用 Qsound 1.…

什么是金融RPA?金融RPA解决什么问题?金融RPA实施难点在哪里?

什么是金融RPA?金融RPA,即金融领域的机器人流程自动化,是一种利用软件机器人来代替人工完成重复性劳动任务的技术。它能够通过模仿最终用户在电脑上的手动操作方式,实现自动化处理大量重复、规则明确的业务流程,如账务…

44-js return返回值,全局作用域,局部作用域,隐式作用域,变量的生命周期,delete释放内存

1.return返回值:函数执行后剩下结果就是返回值。 function fn(a,b,c){//return返回值return(a+b+c);// console.log("aaa"); //return之后的值都不在执行了// alert("bbb"); //return之后的值不在执行了}console.log(fn(1,2,3)*10); 2.作用…

低静态功耗的音频功率放大器D7368GS,适用于便携式立体声收录机应用

D7368是专为便携式立体声收录机而设计的音频功率放大器集成电路。 主要特点: ● 低静态功耗: Icco6 6mA(Typ) (Vcc6V) ● 电压增益高:40dB ( 典型值)。 ● 工作电源电压范围宽:Vcc2~10V. . ● 外围使用元件少( 仅需三个电容)。 ●…

软件测试|如何在Linux中下载和安装软件包

简介 在Linux操作系统中,下载和安装软件包是一项基本任务。不同的Linux发行版可能有不同的包管理工具和方式,但总体流程是类似的。以下是在Linux中下载和安装软件包的详细步骤。 步骤1:选择适当的包管理工具 因为Linux有不同的发行版本&am…

活动回顾∣“全邻友好,艺术大咖交流会”——员村街开展社区微型养老博览会长者文艺汇演活动

为进一步营造邻里守望,共建美好社区的氛围,促进社区长者参与社区服务,展示社区长者健康、积极向上的精神风貌,2024年1月10日,员村街开展“全邻友好,艺术大咖交流会”——微型养老博览会活动,让长…

Docker安装Redis 配置文件映射以及密码设置

安装直接docker pull redis即可,默认redis最新版 设置两个配置文件路径 mkdir -p /root/docker/redis/data mkdir -p /root/docker/redis/conf touch redis.conf // 容器挂载用conf配置文件 bind 0.0.0.0 protected-mode yes port 6379 tcp-backlog 511 timeout…

轴组【CAN】

如果有126个轴,你程序里挨个添加轴很麻烦。 可以用轴组批量添加。【数组】 CAN驱动器 0x164 就是下个驱动器 p_CAN主站地址:ADR(IoConfig_Globals.CANopen_Manager_SoftMotion);p_CAN从站地址1:ADR(IoConfig_Globals.DMA882_CAN);p_CAN从站地址2:ADR(IoConfig_Gl…

Swin Transformer 学习笔记(附代码)

论文地址:https://arxiv.org/pdf/2103.14030.pdf 代码地址: GitHub - microsoft/Swin-Transformer: This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". 1.是什么&#x…

libignition-gazebo-diff-drive-system.so是什么

因该就是个动态链接库,库文件之类 而且就是gazebo6版本也就是ign 这个版本的动态链接库有个特点:全部都是以.so结尾,所以很可能ign的插件plugin都是带.so的 abcdegx.so elvikorflsd.so fvlwirjgiojf.so等

Android可换行的RadioGroup

Android可换行的RadioGroup,有时候需要换行显示的单选列表,当然可以有多种实现方式,比如recycleview或者listview实现,本文采用的是RadioGrouprediobutton方式实现。 一、首先自定义view public class WrapRadioGroup extends RadioGroup {pr…

经典算法-模拟退火算法求解旅行商问题TSP

经典算法-模拟退火算法求解旅行商问题TSP 旅行商问题(Traveling Salesman Problem, TSP)是组合优化中的经典问题。简单地说,一个旅行商需要访问N个城市,并返回到出发城市,问题是找到最短的可能路线,使得每…

【第一次使用finalshell连接虚拟机内的centos】小白处理方式

第一次使用finalshell连接centos7的时候,因为都是新环境什么都没有配置,所以就需要安装finalshell和对新的centos7 进行一些配置。 安装finalshel,默认不安装d盘,就需要对安装路径做一下调整,其余都是下一步默认安装的…

【AIGC】2023年生成式AI发展综述

文章目录 一、文本生成 & 智能问答二、AI绘画三、音频生成四、视频生成五、三维生成 & 数字人5.1 通用三维生成5.2 数字人 展望:通用人工智能趋势 2023年是人工智能内容生成(AIGC)技术飞速发展的一年。从年初ChatGPT一炮打响&#xf…

大模型学习与实践笔记(二)

一、代码仓库: InternLM: https://github.com/InternLM/InternLM/ 课程讲师:宋志学大佬,d2l-ai-solutions-manual 开源项目负责人 二、Lagent框架 三、基于InternLM的智能对话 3.1 环境配置: cuda11.7 pytorch2.0.1 其他环境…

C++每日一练(15):简单幂计算

题目描述 输入两个数a和b&#xff0c;求a的b次方。 输入 输入两个整数a&#xff0c;b&#xff08;1<a<10&#xff0c;1<b<15&#xff09;。 输出 输出一个正整数&#xff0c;该值<1000000000000。 输入样例 3 3 输出样例 27 参考答案 #include<bits/stdc.h&…