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)

训练启动

相关文章:
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代码 在FinetuningArg…...
多端多用户万能DIY商城系统源码:自营+多商户入驻商城系统 独立部署 带完整的安装代码包以及搭建教程
电子商务行业日新月异,许多企业希望能够通过线上商城拓展业务。但是,传统商城系统往往无法满足多样化、个性化的需求,而且开发周期长、成本高。罗峰就来给大家分享一款多端多用户万能DIY商城系统源码,搭建简单。 以下是部分代码示…...
Qt 6之七:学习资源
Qt 6之七:学习资源 Qt是一种跨平台的C应用程序开发框架,它提供了一套丰富的工具和库,可以帮助开发者快速构建跨平台的应用程序,用于开发图形用户界面(GUI)和非GUI应用程序。 Qt 6之一:简介、安…...
解决大模型的幻觉问题:一种全新的视角
在人工智能领域,大模型已经成为了一个重要的研究方向。然而,随着模型规模的不断扩大,一种新的问题开始浮出水面,那就是“幻觉”问题。这种问题的出现,不仅影响了模型的性能,也对人工智能的发展带来了新的挑…...
mysql进阶-重构表
目录 1. 原因 2. 如何重构表呢? 2.1 命令1: 2.2 命令2: 2.3 命令3: 1. 原因 正常的业务开发,为什么需要重构表呢? 原因1:某张表存在大量的新增和删除操作,导致表经历过大量的…...
Element-ui图片懒加载
核心代码 <el-image src"https://img-blog.csdnimg.cn/direct/2236deb5c315474884599d90a85d761d.png" alt"我是图片" lazy><img slot"error" src"https://img-blog.csdnimg.cn/direct/81bf096a0dff4e5fa58e5f43fd44dcc6.png&quo…...
Linux系统——DNS解析详解
目录 一、DNS域名解析 1.DNS的作用 2.域名的组成 2.1域名层级结构关系特点 2.2域名空间构成 2.3域名的四种不同类型 2.3.1延伸 2.3.2总结 3.DNS域名解析过程 3.1递归查询 3.2迭代查询 3.3一次DNS解析的过程 4.DNS系统类型 4.1缓存域名服务器 4.2主域名服务器 4…...
初识Ubuntu
其实还是linux操作系统 命令都一样 但是在学习初级阶段,我还是将其分开有便于我的学习和稳固。 cat 查看文件 命令 Ubuntu工作中经常是用普通用户,在需要时才进行登录管理员用户 sudn -i 切换成管理用户 我们远程连接时 如果出现 hostname -I没有出现…...
Casper Network (CSPR)2024 年愿景:通过投资促进增长
Casper Network (CSPR)是行业领先的 Layer-1 区块链网络之一,通过推出了一系列值得关注的技术改进和倡议,已经为 2024 年做好了准备。 在过去的一年里,Casper Network (CSPR)不断取得里程碑式的进展,例如推…...
《MySQL系列-InnoDB引擎06》MySQL锁介绍
文章目录 第六章 锁1 什么是锁2 lock与latch3 InnoDB存储引擎中的锁3.1 锁的类型3.2 一致性非锁定读3.3 一致性锁定读3.4 自增长与锁3.5 外键和锁 4 锁的算法4.1 行锁的三种算法4.2 解决Phantom Problem 5 锁问题5.1 脏读5.2 不可重复读5.3 丢失更新 6 阻塞7 死锁 第六章 锁 开…...
获取多个PDF文件的内容并保存到excel上
# shuang # 开发时间:2023/12/9 22:03import pdfplumber import re import os import pandas as pd import datetimedef re_text(bt, text):# re 搜索正则匹配 包含re.compile包含的文字内容m1 re.search(bt, text)if m1 is not None:return re_block(m1[0])return…...
深入了解网络流量清洗--使用免费的雷池社区版进行防护
随着网络攻击日益复杂,企业面临的网络安全挑战也在不断增加。在这个背景下,网络流量清洗成为了确保企业网络安全的关键技术。本文将探讨雷池社区版如何通过网络流量清洗技术,帮助企业有效应对网络威胁。 ![] 网络流量清洗的重要性&#x…...
【FFMPEG应用篇】基于FFmpeg的转码应用(FLV MP4)
方法声明 extern "C" //ffmpeg使用c语言实现的,引入用c写的代码就要用extern { #include <libavcodec/avcodec.h> //注册 #include <libavdevice/avdevice.h> //设备 #include <libavformat/avformat.h> #include <libavutil/…...
LInux初学之路linux的磁盘分区/远程控制/以及关闭图形界面/查看个人身份
虚拟机磁盘分配 hostname -I 查看ip地址 ssh root虚拟就ip 远程连接 win10之后才有 远程控制重新启动 reboot xshell 使用(个人和家庭版 免费去官方下载) init 3 关闭界面 减小内存使用空间 init 5 回复图形界面 runlevel显示的是状态 此时和上…...
Netty 介绍、使用场景及案例
Netty 介绍、使用场景及案例 1、Netty 介绍 https://github.com/netty/netty Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可扩展的网络服务器和客户端。它是一个开源项目,最初由JBoss公司开发,现在由社区维护。Netty的…...
小游戏选型(一):游戏化设计助力直播间互动和营收
一、社交直播间小游戏火爆 大家好,作为一个技术宅和游戏迷,今天来聊聊近期爆火的社交直播间小游戏的潮流。喜欢冲浪玩社交产品的小伙伴会发现,近期各大平台都推出了直播间社交小游戏,直播间氛围火爆,小游戏玩法简单&a…...
社区嵌入式服务设施建设为社区居家养老服务供给增加赋能
近年来,沈阳市浑南区委、区政府牢记在辽宁考察时的重要指示精神,认真践行以人民为中心的发展思想,聚集“一老一小”民生关切,统筹推进以社区为骨干结点的养老服务探索实践。围绕“品质养老”民生服务理念,针对社区老年…...
SpringBoot请求参数加密、响应参数解密
SpringBoot请求参数加密、响应参数解密 1.说明 在项目开发工程中,有的项目可能对参数安全要求比较高,在整个http数据传输的过程中都需要对请求参数、响应参数进行加密,也就是说整个请求响应的过程都是加密处理的,不在浏览器上暴…...
Mysql适配国产化数据库人大金仓冲突记录
1、mysql中查询中如果使用双引号,在人大金仓数据库中不支持,需改为单引号 例如: select 字段A,字段B,字段C from tableA where 字段A "1" 改为: select 字段A,字段B,字段…...
在微服务架构中认证和授权的那些事儿
在微服务架构中认证和授权是最基础的服务能力,其中这一块行业类的标准就是OAuth2 和 SSO ,而OAuth2 和 SSO 可以归类为“用户管理和身份验证”工具,OpenID Connect 1.0是 OAuth 2.0 协议之上的一个简单身份层。 Part.1 认识OAuth 2.0 OAuth…...
APK安装器终极指南:3种方法让Windows电脑秒变安卓设备
APK安装器终极指南:3种方法让Windows电脑秒变安卓设备 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK安装器是一款专为Windows用户设计的安卓应用安装工…...
解密Jsxer:如何高效反编译Adobe JSXBIN二进制脚本
解密Jsxer:如何高效反编译Adobe JSXBIN二进制脚本 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer Jsxer是一个快速准确的JSXBIN反编译器,专门用于将Adobe ExtendScript的二进…...
影刀RPA跨境店群运营架构:基于Python的高并发环境隔离与自动化调度系统设计实战
关于我一个曾经死磕底层算法、痴迷于压榨软硬件性能的资深架构师,最后跑去给跨境工作室写店群底层自动化调度系统这件事。 很多以前在技术圈里混的同行,或者是看着我一路从后端重构做到 ImageTransPro 图像处理软件 5.0.3 这种复杂版本迭代的极客朋友们…...
gifuct-js:高性能JavaScript GIF解码器的架构设计与性能优化策略
gifuct-js:高性能JavaScript GIF解码器的架构设计与性能优化策略 【免费下载链接】gifuct-js Fastest javascript .GIF decoder/parser 项目地址: https://gitcode.com/gh_mirrors/gi/gifuct-js gifuct-js是一个专注于高效GIF文件解析与解码的JavaScript库&a…...
为什么你的ElevenLabs马拉雅拉姆文输出失真?5步诊断法+3个预处理Python脚本立即修复
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs马拉雅拉姆文输出失真的根本成因 马拉雅拉姆语(Malayalam)作为印度喀拉拉邦的官方语言,拥有高度复杂的音节结构、连字规则(conjunct consonant…...
PyWxDump:微信数据管理的终极本地解决方案指南
PyWxDump:微信数据管理的终极本地解决方案指南 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 在数字时代,微信聊天记录承载着我们珍贵的回忆和重要信息,但你是否曾担心数据安全、备份困…...
FPGA开发入门:从零开始用Vivado实现LED流水灯项目
1. 项目概述与核心价值最近在后台和社群里,看到不少刚接触FPGA开发的朋友,特别是从单片机或嵌入式软件转过来的,对于如何上手第一个完整的FPGA项目感到有些迷茫。大家常问:“我学了Verilog语法,也跑过仿真了࿰…...
开关电源传导EMI超标?手把手教你用π型滤波器搞定(附SCT2450实测数据)
开关电源传导EMI超标?手把手教你用π型滤波器搞定(附SCT2450实测数据) 在电源设计领域,传导EMI超标是工程师们经常遇到的棘手问题。当你的产品在EMC实验室测试失败时,那种挫败感相信每个硬件工程师都深有体会。传导噪声…...
stm32 FOC从学习开发(七)SVPWM算法MATLAB仿真进阶:从模型搭建到代码生成
1. SVPWM算法仿真与代码生成全流程 搞电机控制的朋友都知道,SVPWM(空间矢量脉宽调制)是FOC(磁场定向控制)的核心算法之一。前几期我们聊过Clark变换、Park变换,也讲过SVPWM的基本原理,今天咱们就…...
pgwatch2监控指标详解:从基础性能到高级洞察
pgwatch2监控指标详解:从基础性能到高级洞察 【免费下载链接】pgwatch2 PostgreSQL metrics monitor/dashboard 项目地址: https://gitcode.com/gh_mirrors/pg/pgwatch2 pgwatch2是一款功能强大的PostgreSQL metrics monitor/dashboard工具,它能够…...
