Skip to content

Commit 02e0016

Browse files
authored
Merge pull request #1322 from gzrp/dev-postgresql
Update the LinearLoRALayer Class
2 parents a11b5ec + 4f1cb1c commit 02e0016

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

  • examples/singa_peft/src/singa_peft/tuners/linear_lora

examples/singa_peft/src/singa_peft/tuners/linear_lora/layer.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,43 @@ def freeze_pretrained_weight(self, freeze: bool = True):
8787
if self.base_layer.b is not None:
8888
self.base_layer.b.requires_grad = not freeze
8989
self.base_layer.b.stores_grad = not freeze
90+
91+
def forward(self, x):
92+
# forward
93+
if not self.merged:
94+
y1 = self.base_layer(x)
95+
y2 = autograd.dropout(x, self.lora_dropout)
96+
y2 = autograd.matmul(y2, autograd.transpose(self.lora_A, (1, 0)))
97+
y2 = autograd.matmul(y2, autograd.transpose(self.lora_B, (1, 0)))
98+
y2 = autograd.mul(y2, self.scaling)
99+
y = autograd.add(y1, y2)
100+
return y
101+
else:
102+
y = self.base_layer(x)
103+
return y
104+
105+
def merge_weights(self, mode: bool = True):
106+
# Merge the weights
107+
if mode:
108+
if not self.merged:
109+
# Merge the weights and mark it
110+
delta = tensor.mult(self.lora_A.transpose((1, 0)), self.lora_B.transpose((1, 0))) * self.scaling
111+
self.base_layer.W.data += delta.data
112+
self.merged = True
113+
else:
114+
if self.merged:
115+
# Make sure that the weights are not merged
116+
delta = tensor.mult(self.lora_A.transpose((1, 0)), self.lora_B.transpose((1, 0))) * self.scaling
117+
self.base_layer.W.data -= delta.data
118+
self.merged = False
119+
120+
def get_params(self):
121+
params = self.base_layer.get_params()
122+
params[self.lora_A.name] = self.lora_A
123+
params[self.lora_B.name] = self.lora_B
124+
return params
125+
126+
def set_params(self, parameters):
127+
self.base_layer.set_params(parameters)
128+
self.lora_A.copy_from(parameters[self.lora_A.name])
129+
self.lora_B.copy_from(parameters[self.lora_B.name])

0 commit comments

Comments
 (0)