cmnfriend / o-lora Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
Great work! This repo is built based on the pretrained T5-large model, but I wonder if it could be adapted to Llama2? And which part of this project should be modified? Thanks a lot!
非常好的工作!我想请教下baseline中的MTL是怎么做的呢?是全量微调吗,还是单个LoRA?
I was wondering if there is an typo in lora.py in line 702,
because you once add r_sum
in class Linear
, so I guess there is still an same in parameter in class Linear8bitLt
请问有人遇到过同样的问题吗?明明环境里有datasets这个包,但是一直报这个错误:
Traceback (most recent call last):
File "/home/user/ljl_new/O-LoRA/src/run_uie_lora.py", line 29, in
import datasets
ModuleNotFoundError: No module named 'datasets'
Traceback (most recent call last):
File "/home/user/ljl_new/O-LoRA/src/run_uie_lora.py", line 29, in
import datasets
ModuleNotFoundError: No module named 'datasets'
FileNotFoundError: [Errno 2] No such file or directory: 'G:/code/O-LoRA-main/O-LoRA-main/logs_and_outputs/order_1/outputs/1-dbpedia/29ec996b8e1ae5297860b8d946af1b38/uie_dataset_lora/default-d0dfd2a00d317be8/2.0.0/c490e7f13dec80785fc335819009163a45c86ae2816040c8d81800108e 7e4374/uie_dataset_lora-train-00000-00000-of-NNNNN.arrow'
raise DatasetGenerationError("An error occurred while generating the dataset") from e
datasets.builder.DatasetGenerationError: An error occurred while generating the dataset
请问下我在运行order_1.sh时在数据集加载出现文件No such file or directory,经检查后发现outputs下有默认创建的文件夹,但是没有自动生成uie_dataset_lora-train-00000-00000-of-NNNNN.arrow导致了报错,请问该如何解决,谢谢
你好,非常感谢您杰出的工作。我在阅读您的code的时候有2点疑惑:
比较好奇,但是在文档和论文里又没有找到。User Interface?
感谢作者优秀的工作!想请教一下关于O-LoRA在更challenging的长序列任务上(large number of tasks)性能表现与PerTaskFT和MTL有差距的原因可能有哪些?期待您的回复!
Thanks! Great Projects! Could you please provide the example to finetune llama-3-instruct-8B with O-LoRA?
您的贡献非常的重要,十分感谢呀!但是,我看咱们的论文使用了15个数据集。它使用的是order4,5,6.但是,在咱们的代码中,没有找到order4,order5,order6的脚本,等否分享一下呢?
您好,我想问下在加载PEFTModel之后lora_A的输出维度为什么是0,是在训练lora_new的时候没有让之前的lora输出特征吗,还想请问一下您都在peft的哪些文件上做了修改呢?
作者您好,请问为什么不直接将指令微调时输入样例的非label部分直接填充为-100,而要额外使用一个loss_mask,这样也不需要重载一个LlamaForCausalLM_with_lossmask
类了。是有其他考虑我没注意到吗?感谢~
感谢您的工作!想请问一些小问题。请问SeqLoRA和IncLoRA的区别,是否在于:SeqLoRA在每次训练完一个任务后不会把lora和模型参数合并;而IncLoRA会把lora和模型参数合并,并且使用一个新的lora训练新任务?
此处
O-LoRA/src/uie_trainer_lora.py
Line 91 in ff73694
由于这边是跟没有梯度的lora(old)来计算正交,那直接在上一步把lora(old)save为pth是不是可以避免修改peft库了
import torch
# 假设 self.model 是你的模型
stacked_params = {}
for name, param in self.model.named_parameters():
if "lora_" in name:
stacked_params[name] = param.data.clone() # 使用 clone() 复制参数并避免共享内存
# 保存堆叠的参数到文件
torch.save(stacked_params, "path/to/stacked_params.pth")
然后在trainer类里面加载
# 初始化一个字典来存储匹配的模块和对应的参数
matched_modules = {} #load pth
for name, param in self.model.named_parameters():
if "lora_A" in name:
# 匹配的模块名称和对应的参数
param_ = matched_modules[name]
orthogonal_loss += torch.abs(torch.mm(param, param_.T)).sum() # [r * dim] * [dim * r]
break # target modules have been matched
大致这个意思
是不是就可以避免修改PEFT代码,方便很多?
您好,请问一下,关于实验结果的复现,是直接执行给定的scripts里的文件吗,还是需要调整参数?
感谢作者的工作,提供了一个解决 cl 灾难性遗忘的思路。
我采用 codebase 提供的 llama2 的脚本,跑出来的结果直接坏掉了,这是什么原因呢,跑实验的过程中,有什么要点需要注意么,或者参数设置上需要做些什么调整呢?是 olora 的 lamda 参数设置太小导致过多的遗忘么?下面是我在 tune order2 时的逐 task 结果
***** predict metrics *****
epoch = 1.0
predict_exact_match = 97.6184
predict_exact_match_for_TC = 97.6184
predict_exact_match_for_dbpedia = 97.6184
***** predict metrics *****
epoch = 1.0
predict_exact_match = 43.2171
predict_exact_match_for_SC = 52.9868
predict_exact_match_for_TC = 33.4474
predict_exact_match_for_amazon = 52.9868
predict_exact_match_for_dbpedia = 33.4474
***** predict metrics *****
epoch = 1.0
predict_exact_match = 26.8114
predict_exact_match_for_SC = 3.3289
predict_exact_match_for_TC = 38.5526
predict_exact_match_for_amazon = 3.3289
predict_exact_match_for_dbpedia = 10.2105
predict_exact_match_for_yahoo = 66.8947
***** predict metrics *****
epoch = 0.99
predict_exact_match = 35.3191
predict_exact_match_for_SC = 25.5132
predict_exact_match_for_TC = 38.5877
predict_exact_match_for_agnews = 87.4868
predict_exact_match_for_amazon = 25.5132
predict_exact_match_for_dbpedia = 19.1447
predict_exact_match_for_yahoo = 9.1316
请问一下CL_Benchmark里面是完整数据集吗,我在其他地方下载的数据集和里面的条目不太一样
那个由4个任务组成的benchmark,最近double check了一下发现学习率设得足够小的话,全量微调baseline效果也会非常好(几乎不遗忘),说明这个benchmark对于t5已经没有挑战了,对于后续的大模型同理,所以不建议follow...
想问一下这个方案是如何实现不依赖于task id来分辨任务种类以匹配参数的呢?可不可以理解为如"TC""SC"发挥的就是等价于task id?感谢解答!
感谢您的工作,非常的nice!但还是有几个问题想请教一下:
我还没成功run起代码来,hf被墙很烦,所以这些问题还暂时没有亲手验证,烦请作者帮忙解惑一下啦~
感谢您对工作,不过还有个小疑问想请教一下,如题,为什么只算lora_A的loss,而不算lora_B的呢
如题,支持QLora吗?
作者您好,您的工作非常地好。我看您的论文中使用的是llama-7b,运行的order-1的standard cl的结果是76.8,但是我用llama2运行scripts_llama/order_1.sh
的时候却得到如下的结果:
{
"epoch": 0.99,
"predict_exact_match": 43.2072,
"predict_exact_match_for_SC": 14.9605,
"predict_exact_match_for_TC": 52.6228,
"predict_exact_match_for_agnews": 57.8553,
"predict_exact_match_for_amazon": 14.9605,
"predict_exact_match_for_dbpedia": 59.3553,
"predict_exact_match_for_yahoo": 40.6579,
"predict_gen_len": 420.8973,
"predict_global_step": 62,
"predict_loss": 0.0,
"predict_rouge1": 53.6793,
"predict_rouge1_for_SC": 42.9978,
"predict_rouge1_for_TC": 57.2398,
"predict_rouge1_for_agnews": 57.8553,
"predict_rouge1_for_amazon": 42.9978,
"predict_rouge1_for_dbpedia": 72.6939,
"predict_rouge1_for_yahoo": 41.1703,
"predict_rougeL": 53.6792,
"predict_rougeL_for_SC": 42.9978,
"predict_rougeL_for_TC": 57.2397,
"predict_rougeL_for_agnews": 57.8553,
"predict_rougeL_for_amazon": 42.9978,
"predict_rougeL_for_dbpedia": 72.6939,
"predict_rougeL_for_yahoo": 41.1698,
"predict_runtime": 1397.0294,
"predict_samples": 30400,
"predict_samples_per_second": 21.76,
"predict_steps_per_second": 0.68,
"train_loss": 20.316666218542284,
"train_runtime": 218.6764,
"train_samples": 4000,
"train_samples_per_second": 18.292,
"train_steps_per_second": 0.284
}
似乎没有一个数字和论文中对的上。因此我有两个疑问:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.