-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path4.py
More file actions
66 lines (49 loc) · 1.57 KB
/
4.py
File metadata and controls
66 lines (49 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import gc
import os
import torch.nn as nn
from utils import (
ITERATIONS,
MODELS,
ctype_memory_release,
get_hf_models,
get_memory_usage,
plot_memory_usage,
save_csv,
)
def clean_model(model: nn.Module):
model.cpu()
for param in model.parameters():
if hasattr(param, "grad"):
param.grad = None
del param
for buffer in model.buffers():
del buffer
for _, module in model.named_modules():
del module
# モデル自体を削除
del model
def main():
models = []
metrics = []
metrics.append(get_memory_usage("initial"))
for iter_idx in range(ITERATIONS):
prefix = f"[{iter_idx:2d}] "
metrics.append(get_memory_usage(prefix + "before get models"))
for i, model_name in enumerate(MODELS["hf"]):
models.append(get_hf_models(model_name))
metrics.append(get_memory_usage(prefix + f"after get models[{i}]"))
metrics.append(get_memory_usage(prefix + "after get models"))
for i in range(len(models)):
clean_model(models[0])
del models[0]
gc.collect()
ctype_memory_release()
metrics.append(get_memory_usage(prefix + f"after del models[{i}]"))
metrics.append(get_memory_usage(prefix + "after del all models"))
metrics.append(get_memory_usage("final"))
output = "figs/memory_usage_4.png"
plot_memory_usage(metrics, output, keys=["psutil"])
os.chmod(output, 0o777)
save_csv(metrics, "csv/memory_usage_4.csv")
if __name__ == "__main__":
main()