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.…

LC322. 零钱兑换

代码随想录 class Solution {public int coinChange(int[] coins, int amount) {int max Integer.MAX_VALUE;int [] dp new int[amount1];for(int j 0 ; j < dp.length; j ){dp[j] max;}dp[0] 0;for(int i 0 ; i < coins.length; i ){for(int j coins[i] ; j <…

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

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

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.作用…

每日一练 | 华为认证真题练习Day40

Day40 华为认证中级考试真题 ​ 1、端口镜像可以对哪些流量进行镜像(多选) A.接口接受的报文 B.端口发送的报文 C.端口发送和接收的报文 D.端口丢弃的报文 2、下列关于不同类型的防火墙的说法&#xff0c;错误的是 A.包过滤防火墙对于通过防火墙的每个数据包&#xff0…

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

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

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

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

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

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

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

安装直接docker pull redis即可&#xff0c;默认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个轴&#xff0c;你程序里挨个添加轴很麻烦。 可以用轴组批量添加。【数组】 CAN驱动器 0x164 就是下个驱动器 p_CAN主站地址:ADR(IoConfig_Globals.CANopen_Manager_SoftMotion);p_CAN从站地址1:ADR(IoConfig_Globals.DMA882_CAN);p_CAN从站地址2:ADR(IoConfig_Gl…

很容易导致错误的两种空格:普通空格和不换行空格

不换行空格&#xff08;Non-Breaking Space&#xff0c;又称硬空格&#xff0c;ASCII 160&#xff09;和&#xff08;普通空格&#xff0c;ASCII 32&#xff09;都是用于表示空白的字符&#xff0c;但它们有一些关键的区别&#xff1a; 显示效果&#xff1a; ASCII 32&#xff…

Swin Transformer 学习笔记(附代码)

论文地址&#xff1a;https://arxiv.org/pdf/2103.14030.pdf 代码地址&#xff1a; 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是什么

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

Android可换行的RadioGroup

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

京东JD商品详情API:实时数据获取的实现

本文详细介绍了如何使用京东JD商品详情API实现实时数据获取。文章首先概述了京东JD商品详情API的特性和优势&#xff0c;然后介绍了实时数据获取的原理、技术要求和步骤。最后&#xff0c;结合具体代码&#xff0c;详细阐述了如何实现实时数据获取&#xff0c;包括API调用、数据…

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

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