in optimum/neuron/models/training/transformations_utils.py [0:0]
def get_relevant_parameter_names(self, module_fully_qualified_name: str) -> set[str]:
param_names = ["weight", "bias"] if self.bias else ["weight"]
original_proj_names = [
self.query_projection_name,
self.key_projection_name,
self.value_projection_name,
self.output_projection_name,
]
original_names = {
f"{module_fully_qualified_name}.{proj_name}.{param_name}"
for proj_name in original_proj_names
for param_name in param_names
}
if self.fuse_qkv:
gqa_names = {
f"{module_fully_qualified_name}.{self.gqa_qkv_projection_name}.{param_name}_qkv"
for param_name in param_names
}
else:
gqa_names = {
f"{module_fully_qualified_name}.{self.gqa_qkv_projection_name}.{param_name}_{suffix}"
for param_name in param_names
for suffix in ["q", "k", "v"]
}
lora_param_names = set()
# LoRA for original layers
for param_name in param_names:
for proj_name in original_proj_names:
lora_param_names.add(f"{module_fully_qualified_name}.{proj_name}.lora_A.{param_name}")
lora_param_names.add(f"{module_fully_qualified_name}.{proj_name}.lora_B.{param_name}")
# LoRA for GQA layer
for param_name in param_names:
lora_param_names.add(f"{module_fully_qualified_name}.{self.gqa_qkv_projection_name}.lora_A.{param_name}")
if self.fuse_qkv:
lora_param_names.add(
f"{module_fully_qualified_name}.{self.gqa_qkv_projection_name}.lora_B.{param_name}"
)
else:
lora_param_names.add(
f"{module_fully_qualified_name}.{self.gqa_qkv_projection_name}.lora_B.{param_name}_q"
)
lora_param_names.add(
f"{module_fully_qualified_name}.{self.gqa_qkv_projection_name}.lora_B.{param_name}_k"
)
lora_param_names.add(
f"{module_fully_qualified_name}.{self.gqa_qkv_projection_name}.lora_B.{param_name}_v"
)
return original_names | gqa_names | lora_param_names