kovacsvi commited on
Commit
4441b75
·
1 Parent(s): 92c98d1

removed offload disk + added torch memory cleanup

Browse files
interfaces/cap.py CHANGED
@@ -11,7 +11,7 @@ from huggingface_hub import HfApi
11
 
12
  from label_dicts import CAP_NUM_DICT, CAP_LABEL_NAMES
13
 
14
- from .utils import is_disk_full
15
 
16
  HF_TOKEN = os.environ["hf_read"]
17
 
@@ -86,7 +86,7 @@ def build_huggingface_path(language: str, domain: str):
86
  #@spaces.GPU
87
  def predict(text, model_id, tokenizer_id):
88
  device = torch.device("cpu")
89
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN).to(device)
90
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
91
 
92
  inputs = tokenizer(text,
@@ -98,6 +98,7 @@ def predict(text, model_id, tokenizer_id):
98
 
99
  with torch.no_grad():
100
  logits = model(**inputs).logits
 
101
 
102
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
103
  output_pred = {f"[{CAP_NUM_DICT[i]}] {CAP_LABEL_NAMES[CAP_NUM_DICT[i]]}": probs[i] for i in np.argsort(probs)[::-1]}
 
11
 
12
  from label_dicts import CAP_NUM_DICT, CAP_LABEL_NAMES
13
 
14
+ from .utils import is_disk_full, free_gpu_memory
15
 
16
  HF_TOKEN = os.environ["hf_read"]
17
 
 
86
  #@spaces.GPU
87
  def predict(text, model_id, tokenizer_id):
88
  device = torch.device("cpu")
89
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN).to(device)
90
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
91
 
92
  inputs = tokenizer(text,
 
98
 
99
  with torch.no_grad():
100
  logits = model(**inputs).logits
101
+ free_gpu_memory(model, model_id)
102
 
103
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
104
  output_pred = {f"[{CAP_NUM_DICT[i]}] {CAP_LABEL_NAMES[CAP_NUM_DICT[i]]}": probs[i] for i in np.argsort(probs)[::-1]}
interfaces/cap_media_demo.py CHANGED
@@ -10,7 +10,7 @@ from huggingface_hub import HfApi
10
 
11
  from label_dicts import CAP_MEDIA_NUM_DICT, CAP_MEDIA_LABEL_NAMES
12
 
13
- from .utils import is_disk_full
14
 
15
  HF_TOKEN = os.environ["hf_read"]
16
 
@@ -35,7 +35,7 @@ def build_huggingface_path(language: str, domain: str):
35
 
36
  def predict(text, model_id, tokenizer_id):
37
  device = torch.device("cpu")
38
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN)
39
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
40
 
41
  inputs = tokenizer(text,
@@ -47,6 +47,7 @@ def predict(text, model_id, tokenizer_id):
47
 
48
  with torch.no_grad():
49
  logits = model(**inputs).logits
 
50
 
51
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
52
  output_pred = {f"[{CAP_MEDIA_NUM_DICT[i]}] {CAP_MEDIA_LABEL_NAMES[CAP_MEDIA_NUM_DICT[i]]}": probs[i] for i in np.argsort(probs)[::-1]}
 
10
 
11
  from label_dicts import CAP_MEDIA_NUM_DICT, CAP_MEDIA_LABEL_NAMES
12
 
13
+ from .utils import is_disk_full, free_gpu_memory
14
 
15
  HF_TOKEN = os.environ["hf_read"]
16
 
 
35
 
36
  def predict(text, model_id, tokenizer_id):
37
  device = torch.device("cpu")
38
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
39
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
40
 
41
  inputs = tokenizer(text,
 
47
 
48
  with torch.no_grad():
49
  logits = model(**inputs).logits
50
+ free_gpu_memory(model, model_id)
51
 
52
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
53
  output_pred = {f"[{CAP_MEDIA_NUM_DICT[i]}] {CAP_MEDIA_LABEL_NAMES[CAP_MEDIA_NUM_DICT[i]]}": probs[i] for i in np.argsort(probs)[::-1]}
interfaces/cap_minor.py CHANGED
@@ -10,7 +10,7 @@ from huggingface_hub import HfApi
10
 
11
  from label_dicts import CAP_MIN_NUM_DICT, CAP_MIN_LABEL_NAMES, CAP_LABEL_NAMES
12
 
13
- from .utils import is_disk_full
14
  from itertools import islice
15
 
16
  def take(n, iterable):
@@ -67,7 +67,7 @@ def build_huggingface_path(language: str, domain: str):
67
 
68
  def predict(text, model_id, tokenizer_id):
69
  device = torch.device("cpu")
70
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN)
71
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
72
 
73
  inputs = tokenizer(text,
@@ -79,6 +79,7 @@ def predict(text, model_id, tokenizer_id):
79
 
80
  with torch.no_grad():
81
  logits = model(**inputs).logits
 
82
 
83
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
84
  output_pred = {f"[{'999' if str(CAP_MIN_NUM_DICT[i]) == '999' else str(CAP_MIN_NUM_DICT[i])[:-2]}]{convert_minor_to_major(CAP_MIN_NUM_DICT[i])} [{CAP_MIN_NUM_DICT[i]}]{CAP_MIN_LABEL_NAMES[CAP_MIN_NUM_DICT[i]]}": probs[i] for i in np.argsort(probs)[::-1]}
 
10
 
11
  from label_dicts import CAP_MIN_NUM_DICT, CAP_MIN_LABEL_NAMES, CAP_LABEL_NAMES
12
 
13
+ from .utils import is_disk_full, free_gpu_memory
14
  from itertools import islice
15
 
16
  def take(n, iterable):
 
67
 
68
  def predict(text, model_id, tokenizer_id):
69
  device = torch.device("cpu")
70
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
71
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
72
 
73
  inputs = tokenizer(text,
 
79
 
80
  with torch.no_grad():
81
  logits = model(**inputs).logits
82
+ free_gpu_memory(model, model_id)
83
 
84
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
85
  output_pred = {f"[{'999' if str(CAP_MIN_NUM_DICT[i]) == '999' else str(CAP_MIN_NUM_DICT[i])[:-2]}]{convert_minor_to_major(CAP_MIN_NUM_DICT[i])} [{CAP_MIN_NUM_DICT[i]}]{CAP_MIN_LABEL_NAMES[CAP_MIN_NUM_DICT[i]]}": probs[i] for i in np.argsort(probs)[::-1]}
interfaces/cap_minor_media.py CHANGED
@@ -15,7 +15,7 @@ from label_dicts import (CAP_MEDIA_NUM_DICT, CAP_MEDIA_LABEL_NAMES,
15
  CAP_MIN_NUM_DICT, CAP_MIN_LABEL_NAMES,
16
  CAP_MIN_MEDIA_NUM_DICT)
17
 
18
- from .utils import is_disk_full
19
 
20
  HF_TOKEN = os.environ["hf_read"]
21
 
@@ -116,6 +116,8 @@ def predict(text, major_model_id, minor_model_id, tokenizer_id, HF_TOKEN=None):
116
  minor_logits = minor_model(**inputs).logits
117
  minor_probs = F.softmax(minor_logits, dim=-1)
118
 
 
 
119
 
120
  print(minor_probs) # debug
121
  # Restrict to valid minor codes
@@ -148,7 +150,7 @@ def predict(text, major_model_id, minor_model_id, tokenizer_id, HF_TOKEN=None):
148
 
149
  def predict_flat(text, model_id, tokenizer_id, HF_TOKEN=None):
150
  device = torch.device("cpu")
151
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN).to(device)
152
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
153
 
154
  inputs = tokenizer(text,
@@ -160,6 +162,7 @@ def predict_flat(text, model_id, tokenizer_id, HF_TOKEN=None):
160
 
161
  with torch.no_grad():
162
  logits = model(**inputs).logits
 
163
 
164
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
165
  top_indices = np.argsort(probs)[::-1][:10]
 
15
  CAP_MIN_NUM_DICT, CAP_MIN_LABEL_NAMES,
16
  CAP_MIN_MEDIA_NUM_DICT)
17
 
18
+ from .utils import is_disk_full, free_gpu_memory
19
 
20
  HF_TOKEN = os.environ["hf_read"]
21
 
 
116
  minor_logits = minor_model(**inputs).logits
117
  minor_probs = F.softmax(minor_logits, dim=-1)
118
 
119
+ free_gpu_memory(major_model, major_model_id)
120
+ free_gpu_memory(minor_model, minor_model_id)
121
 
122
  print(minor_probs) # debug
123
  # Restrict to valid minor codes
 
150
 
151
  def predict_flat(text, model_id, tokenizer_id, HF_TOKEN=None):
152
  device = torch.device("cpu")
153
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN).to(device)
154
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
155
 
156
  inputs = tokenizer(text,
 
162
 
163
  with torch.no_grad():
164
  logits = model(**inputs).logits
165
+ free_gpu_memory(model, model_id)
166
 
167
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
168
  top_indices = np.argsort(probs)[::-1][:10]
interfaces/emotion.py CHANGED
@@ -9,7 +9,7 @@ from huggingface_hub import HfApi
9
 
10
  from label_dicts import MANIFESTO_LABEL_NAMES
11
 
12
- from .utils import is_disk_full
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
@@ -27,7 +27,7 @@ def build_huggingface_path(language: str):
27
 
28
  def predict(text, model_id, tokenizer_id):
29
  device = torch.device("cpu")
30
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN)
31
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
32
  model.to(device)
33
 
@@ -40,6 +40,7 @@ def predict(text, model_id, tokenizer_id):
40
 
41
  with torch.no_grad():
42
  logits = model(**inputs).logits
 
43
 
44
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
45
  output_pred = {model.config.id2label[i]: probs[i] for i in np.argsort(probs)[::-1]}
 
9
 
10
  from label_dicts import MANIFESTO_LABEL_NAMES
11
 
12
+ from .utils import is_disk_full, free_gpu_memory
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
 
27
 
28
  def predict(text, model_id, tokenizer_id):
29
  device = torch.device("cpu")
30
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
31
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
32
  model.to(device)
33
 
 
40
 
41
  with torch.no_grad():
42
  logits = model(**inputs).logits
43
+ free_gpu_memory(model, model_id)
44
 
45
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
46
  output_pred = {model.config.id2label[i]: probs[i] for i in np.argsort(probs)[::-1]}
interfaces/emotion9.py CHANGED
@@ -9,7 +9,7 @@ from huggingface_hub import HfApi
9
 
10
  from label_dicts import EMOTION9_LABEL_NAMES
11
 
12
- from .utils import is_disk_full
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
@@ -38,6 +38,7 @@ def predict(text, model_id, tokenizer_id):
38
 
39
  with torch.no_grad():
40
  logits = model(**inputs).logits
 
41
 
42
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
43
 
 
9
 
10
  from label_dicts import EMOTION9_LABEL_NAMES
11
 
12
+ from .utils import is_disk_full, free_gpu_memory
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
 
38
 
39
  with torch.no_grad():
40
  logits = model(**inputs).logits
41
+ free_gpu_memory(model, model_id)
42
 
43
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
44
 
interfaces/illframes.py CHANGED
@@ -10,7 +10,7 @@ from huggingface_hub import HfApi
10
 
11
  from label_dicts import ILLFRAMES_MIGRATION_LABEL_NAMES, ILLFRAMES_COVID_LABEL_NAMES, ILLFRAMES_WAR_LABEL_NAMES
12
 
13
- from .utils import is_disk_full
14
 
15
  HF_TOKEN = os.environ["hf_read"]
16
 
@@ -59,7 +59,7 @@ def build_huggingface_path(domain: str):
59
  def predict(text, model_id, tokenizer_id, label_names):
60
  device = torch.device("cpu")
61
  try:
62
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, offload_folder="offload", device_map="auto", token=HF_TOKEN)
63
  except:
64
  disk_space = get_disk_space('/data/')
65
  print("Disk Space Error:")
@@ -80,6 +80,7 @@ def predict(text, model_id, tokenizer_id, label_names):
80
 
81
  with torch.no_grad():
82
  logits = model(**inputs).logits
 
83
 
84
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
85
 
 
10
 
11
  from label_dicts import ILLFRAMES_MIGRATION_LABEL_NAMES, ILLFRAMES_COVID_LABEL_NAMES, ILLFRAMES_WAR_LABEL_NAMES
12
 
13
+ from .utils import is_disk_full, free_gpu_memory
14
 
15
  HF_TOKEN = os.environ["hf_read"]
16
 
 
59
  def predict(text, model_id, tokenizer_id, label_names):
60
  device = torch.device("cpu")
61
  try:
62
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
63
  except:
64
  disk_space = get_disk_space('/data/')
65
  print("Disk Space Error:")
 
80
 
81
  with torch.no_grad():
82
  logits = model(**inputs).logits
83
+ free_gpu_memory(model, model_id)
84
 
85
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
86
 
interfaces/manifesto.py CHANGED
@@ -9,7 +9,7 @@ from huggingface_hub import HfApi
9
 
10
  from label_dicts import MANIFESTO_LABEL_NAMES
11
 
12
- from .utils import is_disk_full
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
@@ -26,7 +26,7 @@ def build_huggingface_path(language: str):
26
 
27
  def predict(text, model_id, tokenizer_id):
28
  device = torch.device("cpu")
29
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN)
30
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
31
 
32
  inputs = tokenizer(text,
@@ -38,6 +38,7 @@ def predict(text, model_id, tokenizer_id):
38
 
39
  with torch.no_grad():
40
  logits = model(**inputs).logits
 
41
 
42
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
43
  output_pred = {f"[{model.config.id2label[i]}] {MANIFESTO_LABEL_NAMES[int(model.config.id2label[i])]}": probs[i] for i in np.argsort(probs)[::-1]}
 
9
 
10
  from label_dicts import MANIFESTO_LABEL_NAMES
11
 
12
+ from .utils import is_disk_full, free_gpu_memory
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
 
26
 
27
  def predict(text, model_id, tokenizer_id):
28
  device = torch.device("cpu")
29
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
30
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
31
 
32
  inputs = tokenizer(text,
 
38
 
39
  with torch.no_grad():
40
  logits = model(**inputs).logits
41
+ free_gpu_memory(model, model_id)
42
 
43
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
44
  output_pred = {f"[{model.config.id2label[i]}] {MANIFESTO_LABEL_NAMES[int(model.config.id2label[i])]}": probs[i] for i in np.argsort(probs)[::-1]}
interfaces/ontolisst.py CHANGED
@@ -15,7 +15,7 @@ languages = [
15
 
16
  from label_dicts import ONTOLISST_LABEL_NAMES
17
 
18
- from .utils import is_disk_full
19
 
20
  # --- DEBUG ---
21
  import shutil
@@ -41,9 +41,10 @@ def get_disk_space(path="/"):
41
  def build_huggingface_path(language: str):
42
  return "poltextlab/xlm-roberta-large_ontolisst_v1"
43
 
 
44
  def predict(text, model_id, tokenizer_id):
45
  device = torch.device("cpu")
46
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN)
47
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
48
 
49
  # --- DEBUG ---
@@ -66,6 +67,7 @@ def predict(text, model_id, tokenizer_id):
66
 
67
  with torch.no_grad():
68
  logits = model(**inputs).logits
 
69
 
70
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
71
  predicted_class_id = probs.argmax()
@@ -78,6 +80,7 @@ def predict(text, model_id, tokenizer_id):
78
  output_info = f'<p style="text-align: center; display: block">Prediction was made using the <a href="https://huggingface.co/{model_id}">{model_id}</a> model.</p>'
79
  return output_pred, output_info
80
 
 
81
  def predict_cap(text, language):
82
  model_id = build_huggingface_path(language)
83
  tokenizer_id = "xlm-roberta-large"
 
15
 
16
  from label_dicts import ONTOLISST_LABEL_NAMES
17
 
18
+ from .utils import is_disk_full, free_gpu_memory
19
 
20
  # --- DEBUG ---
21
  import shutil
 
41
  def build_huggingface_path(language: str):
42
  return "poltextlab/xlm-roberta-large_ontolisst_v1"
43
 
44
+
45
  def predict(text, model_id, tokenizer_id):
46
  device = torch.device("cpu")
47
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
48
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
49
 
50
  # --- DEBUG ---
 
67
 
68
  with torch.no_grad():
69
  logits = model(**inputs).logits
70
+ free_gpu_memory(model, model_id)
71
 
72
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
73
  predicted_class_id = probs.argmax()
 
80
  output_info = f'<p style="text-align: center; display: block">Prediction was made using the <a href="https://huggingface.co/{model_id}">{model_id}</a> model.</p>'
81
  return output_pred, output_info
82
 
83
+
84
  def predict_cap(text, language):
85
  model_id = build_huggingface_path(language)
86
  tokenizer_id = "xlm-roberta-large"
interfaces/sentiment.py CHANGED
@@ -9,7 +9,7 @@ from huggingface_hub import HfApi
9
 
10
  from label_dicts import MANIFESTO_LABEL_NAMES
11
 
12
- from .utils import is_disk_full
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
@@ -30,7 +30,7 @@ def build_huggingface_path(language: str):
30
 
31
  def predict(text, model_id, tokenizer_id):
32
  device = torch.device("cpu")
33
- model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload", token=HF_TOKEN)
34
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
35
  model.to(device)
36
 
@@ -43,6 +43,7 @@ def predict(text, model_id, tokenizer_id):
43
 
44
  with torch.no_grad():
45
  logits = model(**inputs).logits
 
46
 
47
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
48
  predicted_class_id = probs.argmax()
 
9
 
10
  from label_dicts import MANIFESTO_LABEL_NAMES
11
 
12
+ from .utils import is_disk_full, free_gpu_memory
13
 
14
  HF_TOKEN = os.environ["hf_read"]
15
 
 
30
 
31
  def predict(text, model_id, tokenizer_id):
32
  device = torch.device("cpu")
33
+ model = AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
34
  tokenizer = AutoTokenizer.from_pretrained(tokenizer_id)
35
  model.to(device)
36
 
 
43
 
44
  with torch.no_grad():
45
  logits = model(**inputs).logits
46
+ free_gpu_memory(model, model_id)
47
 
48
  probs = torch.nn.functional.softmax(logits, dim=1).cpu().numpy().flatten()
49
  predicted_class_id = probs.argmax()
interfaces/utils.py CHANGED
@@ -1,4 +1,7 @@
1
  import shutil
 
 
 
2
 
3
  def is_disk_full(min_free_space_in_GB=10):
4
  total, used, free = shutil.disk_usage("/")
@@ -9,4 +12,28 @@ def is_disk_full(min_free_space_in_GB=10):
9
  return False
10
  else:
11
  print('clean up!')
12
- return True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import shutil
2
+ import torch
3
+ import gc
4
+
5
 
6
  def is_disk_full(min_free_space_in_GB=10):
7
  total, used, free = shutil.disk_usage("/")
 
12
  return False
13
  else:
14
  print('clean up!')
15
+ return True
16
+
17
+
18
+ def free_gpu_memory(obj=None, label='Object'):
19
+ """
20
+ Frees GPU memory by deleting the passed object, collecting garbage,
21
+ and clearing PyTorch's CUDA cache.
22
+
23
+ Args:
24
+ obj (optional): The model or pipeline to delete.
25
+ label (str): Label for logging (e.g., 'model', 'pipeline').
26
+ """
27
+ if torch.cuda.is_available():
28
+ print(f"\n[{label}] Before deletion: {torch.cuda.memory_allocated() / 1e6:.2f} MB")
29
+
30
+ if obj is not None:
31
+ del obj
32
+
33
+ gc.collect()
34
+ torch.cuda.empty_cache()
35
+
36
+ if torch.cuda.is_available():
37
+ print(f"[{label}] After deletion: {torch.cuda.memory_allocated() / 1e6:.2f} MB\n")
38
+
39
+
utils.py CHANGED
@@ -54,8 +54,7 @@ tokenizers = ["xlm-roberta-large"]
54
 
55
  def download_hf_models():
56
  for model_id in models:
57
- AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", offload_folder="offload",
58
- token=HF_TOKEN)
59
  for tokenizer_id in tokenizers:
60
  AutoTokenizer.from_pretrained(tokenizer_id)
61
 
 
54
 
55
  def download_hf_models():
56
  for model_id in models:
57
+ AutoModelForSequenceClassification.from_pretrained(model_id, low_cpu_mem_usage=True, device_map="auto", token=HF_TOKEN)
 
58
  for tokenizer_id in tokenizers:
59
  AutoTokenizer.from_pretrained(tokenizer_id)
60