Open Kleinpenny opened 4 months ago
查看可被训练的Target Modules的方法: (1): import torch from transformers import Conv1D
def get_specific_layer_names(model):
layer_names = []
# Recursively visit all modules and submodules
for name, module in model.named_modules():
# Check if the module is an instance of the specified layers
if isinstance(module, (torch.nn.Linear, torch.nn.Embedding, torch.nn.Conv2d, Conv1D)):
# model name parsing
layer_names.append('.'.join(name.split('.')[4:]).split('.')[0])
return layer_names
list(set(get_specific_layer_names(model)))
可以得到:
查看可被训练的Target Modules的方法: (2): model = AutoModelForCausalLM.from_pretrained("some-model-checkpoint") print(model) 可以得到以下输出:
其中Linear的都是可以训练的。
我们可以将LoRa应用于nn中任意的权重矩阵之间
输入层到隐藏层的权重矩阵:这个权重矩阵用来连接输入层和隐藏层,它的大小是由输入特征的维度和隐藏层神经元的数量决定的。每一行对应一个隐藏层神经元,每一列对应输入层的一个特征。这个权重矩阵用来将输入特征线性组合成隐藏层的输出。
隐藏层到输出层的权重矩阵:这个权重矩阵用来连接隐藏层和输出层,它的大小是由隐藏层神经元的数量和输出层的维度(任务的类型)决定的。每一行对应一个输出层的神经元,每一列对应隐藏层的一个神经元。这个权重矩阵用来将隐藏层的输出线性组合成最终的输出。
查询权重矩阵(Query Matrix):用于将输入向量映射到查询向量空间,以便计算注意力分数。
键权重矩阵(Key Matrix):用于将输入向量映射到键向量空间,以便计算注意力分数。
值权重矩阵(Value Matrix):用于将输入向量映射到值向量空间,以便计算加权和的值。
输出权重矩阵(Output Matrix):用于将注意力加权和的值向量映射回原始特征空间,以生成最终的输出。