Spaces:
Running
Running
kovacsvi
commited on
Commit
·
4441b75
1
Parent(s):
92c98d1
removed offload disk + added torch memory cleanup
Browse files- interfaces/cap.py +3 -2
- interfaces/cap_media_demo.py +3 -2
- interfaces/cap_minor.py +3 -2
- interfaces/cap_minor_media.py +5 -2
- interfaces/emotion.py +3 -2
- interfaces/emotion9.py +2 -1
- interfaces/illframes.py +3 -2
- interfaces/manifesto.py +3 -2
- interfaces/ontolisst.py +5 -2
- interfaces/sentiment.py +3 -2
- interfaces/utils.py +28 -1
- utils.py +1 -2
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",
|
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",
|
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",
|
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",
|
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",
|
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,
|
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",
|
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",
|
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",
|
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",
|
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 |
|