Spaces:
Sleeping
Sleeping
IlayMalinyak
commited on
Commit
·
707b3a3
1
Parent(s):
9ff87ee
paths fix
Browse files- tasks/audio.py +29 -5
- tasks/utils/config.yaml +1 -1
- tasks/utils/train.py +8 -3
tasks/audio.py
CHANGED
|
@@ -14,6 +14,11 @@ from .utils.models import DualEncoder
|
|
| 14 |
from .utils.train import Trainer
|
| 15 |
from .utils.data_utils import collate_fn, Container
|
| 16 |
import yaml
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
from dotenv import load_dotenv
|
| 19 |
load_dotenv()
|
|
@@ -60,7 +65,7 @@ async def evaluate_audio(request: AudioEvaluationRequest):
|
|
| 60 |
# Update the code below to replace the random baseline by your model inference within the inference pass where the energy consumption and emissions are tracked.
|
| 61 |
#--------------------------------------------------------------------------------------------
|
| 62 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 63 |
-
args_path = 'utils/config.yaml'
|
| 64 |
data_args = Container(**yaml.safe_load(open(args_path, 'r'))['Data'])
|
| 65 |
model_args = Container(**yaml.safe_load(open(args_path, 'r'))['CNNEncoder'])
|
| 66 |
model_args_f = Container(**yaml.safe_load(open(args_path, 'r'))['CNNEncoder_f'])
|
|
@@ -71,7 +76,13 @@ async def evaluate_audio(request: AudioEvaluationRequest):
|
|
| 71 |
|
| 72 |
model = DualEncoder(model_args, model_args_f, conformer_args)
|
| 73 |
model = model.to(device)
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
|
| 76 |
loss_fn = torch.nn.BCEWithLogitsLoss()
|
| 77 |
optimizer = torch.optim.Adam(model.parameters(), lr=5e-4)
|
|
@@ -83,9 +94,9 @@ async def evaluate_audio(request: AudioEvaluationRequest):
|
|
| 83 |
range_update=None,
|
| 84 |
accumulation_step=1, max_iter=np.inf,
|
| 85 |
exp_name=f"frugal_cnnencoder_inference")
|
| 86 |
-
predictions, acc = trainer.predict(test_dl, device=device)
|
| 87 |
# Make random predictions (placeholder for actual model inference)
|
| 88 |
-
|
| 89 |
|
| 90 |
#--------------------------------------------------------------------------------------------
|
| 91 |
# YOUR MODEL INFERENCE STOPS HERE
|
|
@@ -115,4 +126,17 @@ async def evaluate_audio(request: AudioEvaluationRequest):
|
|
| 115 |
}
|
| 116 |
}
|
| 117 |
|
| 118 |
-
return results
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
from .utils.train import Trainer
|
| 15 |
from .utils.data_utils import collate_fn, Container
|
| 16 |
import yaml
|
| 17 |
+
import asyncio
|
| 18 |
+
from huggingface_hub import login
|
| 19 |
+
from collections import OrderedDict
|
| 20 |
+
|
| 21 |
+
|
| 22 |
|
| 23 |
from dotenv import load_dotenv
|
| 24 |
load_dotenv()
|
|
|
|
| 65 |
# Update the code below to replace the random baseline by your model inference within the inference pass where the energy consumption and emissions are tracked.
|
| 66 |
#--------------------------------------------------------------------------------------------
|
| 67 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 68 |
+
args_path = 'tasks/utils/config.yaml'
|
| 69 |
data_args = Container(**yaml.safe_load(open(args_path, 'r'))['Data'])
|
| 70 |
model_args = Container(**yaml.safe_load(open(args_path, 'r'))['CNNEncoder'])
|
| 71 |
model_args_f = Container(**yaml.safe_load(open(args_path, 'r'))['CNNEncoder_f'])
|
|
|
|
| 76 |
|
| 77 |
model = DualEncoder(model_args, model_args_f, conformer_args)
|
| 78 |
model = model.to(device)
|
| 79 |
+
state_dict = torch.load(model_args.checkpoint_path)
|
| 80 |
+
new_state_dict = OrderedDict()
|
| 81 |
+
for key, value in state_dict.items():
|
| 82 |
+
if key.startswith('module.'):
|
| 83 |
+
key = key[7:]
|
| 84 |
+
new_state_dict[key] = value
|
| 85 |
+
missing, unexpected = model.load_state_dict(new_state_dict)
|
| 86 |
|
| 87 |
loss_fn = torch.nn.BCEWithLogitsLoss()
|
| 88 |
optimizer = torch.optim.Adam(model.parameters(), lr=5e-4)
|
|
|
|
| 94 |
range_update=None,
|
| 95 |
accumulation_step=1, max_iter=np.inf,
|
| 96 |
exp_name=f"frugal_cnnencoder_inference")
|
| 97 |
+
predictions, true_labels, acc = trainer.predict(test_dl, device=device)
|
| 98 |
# Make random predictions (placeholder for actual model inference)
|
| 99 |
+
print("accuracy: ", acc)
|
| 100 |
|
| 101 |
#--------------------------------------------------------------------------------------------
|
| 102 |
# YOUR MODEL INFERENCE STOPS HERE
|
|
|
|
| 126 |
}
|
| 127 |
}
|
| 128 |
|
| 129 |
+
return results
|
| 130 |
+
|
| 131 |
+
# if __name__ == "__main__":
|
| 132 |
+
# with open("../logs//token.txt", "r") as f:
|
| 133 |
+
# api_key = f.read()
|
| 134 |
+
# login(api_key)
|
| 135 |
+
# # Create a sample request object
|
| 136 |
+
# sample_request = AudioEvaluationRequest(
|
| 137 |
+
# dataset_name="rfcx/frugalai", # Replace with actual dataset name
|
| 138 |
+
# test_size=0.2, # Example values
|
| 139 |
+
# test_seed=42
|
| 140 |
+
# )
|
| 141 |
+
#
|
| 142 |
+
# asyncio.run(evaluate_audio(sample_request))
|
tasks/utils/config.yaml
CHANGED
|
@@ -28,7 +28,7 @@ CNNEncoder:
|
|
| 28 |
activation: "silu"
|
| 29 |
sine_w0: 1.0
|
| 30 |
avg_output: True
|
| 31 |
-
checkpoint_path: 'models/frugal_2025-01-10/frugal_cnnencoder_2.pth'
|
| 32 |
|
| 33 |
CNNEncoder_f:
|
| 34 |
# Model
|
|
|
|
| 28 |
activation: "silu"
|
| 29 |
sine_w0: 1.0
|
| 30 |
avg_output: True
|
| 31 |
+
checkpoint_path: 'tasks/models/frugal_2025-01-10/frugal_cnnencoder_2.pth'
|
| 32 |
|
| 33 |
CNNEncoder_f:
|
| 34 |
# Model
|
tasks/utils/train.py
CHANGED
|
@@ -274,7 +274,8 @@ class Trainer(object):
|
|
| 274 |
total = 0
|
| 275 |
all_accs = 0
|
| 276 |
predictions = []
|
| 277 |
-
|
|
|
|
| 278 |
for i,batch in enumerate(pbar):
|
| 279 |
x, fft, y = batch['audio']['array'], batch['audio']['fft'], batch['label']
|
| 280 |
x = x.to(device).float()
|
|
@@ -286,7 +287,11 @@ class Trainer(object):
|
|
| 286 |
probs = torch.sigmoid(y_pred)
|
| 287 |
cls_pred = (probs > 0.5).float()
|
| 288 |
acc = (cls_pred == y).sum()
|
| 289 |
-
predictions.append(cls_pred)
|
|
|
|
| 290 |
all_accs += acc
|
| 291 |
total += len(y)
|
| 292 |
-
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
total = 0
|
| 275 |
all_accs = 0
|
| 276 |
predictions = []
|
| 277 |
+
true_labels = []
|
| 278 |
+
pbar = tqdm(test_dataloader)
|
| 279 |
for i,batch in enumerate(pbar):
|
| 280 |
x, fft, y = batch['audio']['array'], batch['audio']['fft'], batch['label']
|
| 281 |
x = x.to(device).float()
|
|
|
|
| 287 |
probs = torch.sigmoid(y_pred)
|
| 288 |
cls_pred = (probs > 0.5).float()
|
| 289 |
acc = (cls_pred == y).sum()
|
| 290 |
+
predictions.append(cls_pred.cpu().numpy())
|
| 291 |
+
true_labels.append(y.cpu().numpy())
|
| 292 |
all_accs += acc
|
| 293 |
total += len(y)
|
| 294 |
+
pbar.set_description("acc: {:.4f}".format(acc))
|
| 295 |
+
if i > self.max_iter:
|
| 296 |
+
break
|
| 297 |
+
return predictions, true_labels, all_accs/total
|