routing-agent / eval_with_timing.py
Ugas's picture
Upload routing agent adapters and source code
975dbdd verified
Raw History Blame Contribute Delete
1.53 kB
import os
import sys
import time
import traceback
import pandas as pd
# Ensure local package imports work
ROOT = os.path.dirname(__file__)
if ROOT not in sys.path:
sys.path.insert(0, ROOT)
import run_inference as ri
def predict_and_time(input_csv: str, output_csv: str):
df = pd.read_csv(input_csv)
results = []
for idx, row in df.iterrows():
q = row.get('question')
ground = row.get('action_label')
try:
start = time.perf_counter()
# fast routing-only prediction using loaded embedder + model
with ri.torch.no_grad():
emb = ri.embedder.encode(q, convert_to_tensor=True).to(ri.DEVICE)
action, log_prob, _ = ri.model.get_action(emb)
pred_idx = int(action.item())
end = time.perf_counter()
elapsed = end - start
except Exception:
pred_idx = None
elapsed = None
traceback.print_exc()
results.append({
'question': q,
'ground_truth': ground,
'predicted_label': pred_idx,
'time_took': elapsed,
})
out_df = pd.DataFrame(results)
out_df.to_csv(output_csv, index=False)
print(f"Wrote results to {output_csv} ({len(out_df)} rows)")
if __name__ == '__main__':
inp = os.path.join(ROOT, 'eval_queries.csv')
out = os.path.join(ROOT, 'eval_with_timing_results.csv')
print(f"Input: {inp}\nOutput: {out}\nDevice: {ri.DEVICE}")
predict_and_time(inp, out)