Skip to content

Commit f609ca7

Browse files
authored
Merge pull request #2 from dongyang0122/fix/contrastive-pretraining-oom
Reduce peak memory in mid_cnn fusion and load checkpoints to CPU first.
2 parents 33e8e9c + 3e711a9 commit f609ca7

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

contrastive-pretraining/mr_rate/mr_rate/mr_rate.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,9 +275,11 @@ def _encode_visual_tokens(self, image, real_volume_mask, vis_proj_layer,
275275
merged = vis_proj_layer(enc)
276276

277277
elif self.fusion_mode == "mid_cnn":
278-
flat_img = rearrange(image, 'b r c d h w -> (b r) c d h w')
279-
cnn_features = self.run_checkpoint(self.visual_transformer.forward_cnn, flat_img)
280-
cnn_features = rearrange(cnn_features, '(b r) t h w d -> b r t h w d', r=r)
278+
cnn_list = []
279+
for i in range(r):
280+
feat_i = self.run_checkpoint(self.visual_transformer.forward_cnn, image[:, i])
281+
cnn_list.append(feat_i)
282+
cnn_features = torch.stack(cnn_list, dim=1)
281283
m = real_volume_mask.view(b, r, 1, 1, 1, 1).to(cnn_features.dtype)
282284
merged = (cnn_features * m).sum(1) / m.sum(1).clamp(min=1.0)
283285
enc = self.run_checkpoint(self.visual_transformer.forward_transformer, merged)
@@ -347,7 +349,7 @@ def load_state_dict(self, *args, **kwargs):
347349
def load(self, path):
348350
path = Path(path)
349351
assert path.exists()
350-
pt = torch.load(str(path))
352+
pt = torch.load(str(path), map_location="cpu")
351353
clean_state = {}
352354
for k, v in pt.items():
353355
if k.startswith("module."):

0 commit comments

Comments
 (0)