(layer, name, new_module)
| 17 | return {name: m for name, m in module.named_modules() if isinstance(m, nn.Linear)} |
| 18 | |
| 19 | def set_op_by_name(layer, name, new_module): |
| 20 | levels = name.split('.') |
| 21 | if len(levels) > 1: |
| 22 | mod_ = layer |
| 23 | for l_idx in range(len(levels)-1): |
| 24 | if levels[l_idx].isdigit(): |
| 25 | mod_ = mod_[int(levels[l_idx])] |
| 26 | else: |
| 27 | mod_ = getattr(mod_, levels[l_idx]) |
| 28 | setattr(mod_, levels[-1], new_module) |
| 29 | else: |
| 30 | setattr(layer, name, new_module) |
| 31 | |
| 32 | def get_blocks(model): |
| 33 | if model.__class__.__name__ == 'LlamaForCausalLM': |
no outgoing calls
no test coverage detected