(module, state_dict, prefix, mp_group=None)
| 154 | module._buffers[name].data.copy_(state_dict[prefix + name]) |
| 155 | |
| 156 | def load(module, state_dict, prefix, mp_group=None): |
| 157 | mp_replace = ReplaceWithTensorSlicing(mp_group=mp_group) |
| 158 | if hasattr(module, 'weight'): |
| 159 | if module.weight.data.is_meta: |
| 160 | # meta tensor cannot be casted or copied to, so we need to replace it with a normal tensor here |
| 161 | module.weight = torch.nn.parameter.Parameter(data=torch.empty_like(module.weight.data, device="cpu"), |
| 162 | requires_grad=module.weight.data.requires_grad) |
| 163 | if 'query_key_value' in prefix: |
| 164 | module.weight = mp_replace.strided_copy(module.weight.data, |
| 165 | state_dict[prefix + 'weight'], |
| 166 | num_splits=3) |
| 167 | else: |
| 168 | module.weight = mp_replace.copy(module.weight.data, state_dict[prefix + 'weight']) |
| 169 | else: |
| 170 | if hasattr(module, 'norm') and hasattr(module.norm, 'weight'): |
| 171 | if module.norm.weight.data.is_meta: |
| 172 | # meta tensor cannot be casted or copied to, so we need to replace it with a normal tensor here |
| 173 | module.norm.weight = torch.nn.parameter.Parameter( |
| 174 | data=torch.empty_like(module.norm.weight.data, device="cpu"), |
| 175 | requires_grad=module.norm.weight.data.requires_grad) |
| 176 | module.norm.weight = mp_replace.copy(module.norm.weight.data, state_dict[prefix + 'weight']) |
| 177 | |
| 178 | if prefix + 'bias' in state_dict.keys(): |
| 179 | if hasattr(module, 'bias'): |
| 180 | if module.bias.data.is_meta: |
| 181 | # meta tensor cannot be casted or copied to, so we need to replace it with a normal tensor here |
| 182 | module.bias = torch.nn.parameter.Parameter(data=torch.empty_like(module.bias.data, device="cpu"), |
| 183 | requires_grad=module.bias.data.requires_grad) |
| 184 | module.bias = mp_replace.copy(module.bias, state_dict[prefix + 'bias']) |
| 185 | else: |
| 186 | if hasattr(module, 'norm') and hasattr(module.norm, 'bias'): |
| 187 | if module.norm.bias.data.is_meta: |
| 188 | # meta tensor cannot be casted or copied to, so we need to replace it with a normal tensor here |
| 189 | module.norm.bias = torch.nn.parameter.Parameter( |
| 190 | data=torch.empty_like(module.norm.bias.data, device="cpu"), |
| 191 | requires_grad=module.norm.bias.data.requires_grad) |
| 192 | module.norm.bias = mp_replace.copy(module.norm.bias, state_dict[prefix + 'bias']) |
| 193 | |
| 194 | |
| 195 | class AutoTP(): |
no test coverage detected