abhshkp's picture
Upload folder using huggingface_hub
7772fe6 verified
#!/usr/bin/env python3
"""Temporal Position Bias — Master Runner"""
import argparse
import logging
import os
import sys
from experiments.chronological_vs_reverse import run_all_temporal
from experiments.recency_interaction import run_recency_interaction
from src.utils import save_json
logging.basicConfig(
format="%(asctime)s - %(levelname)s - %(message)s",
level=logging.INFO,
stream=sys.stdout,
)
logger = logging.getLogger(__name__)
def parse_args():
p = argparse.ArgumentParser(description="Temporal Position Bias")
p.add_argument("--model", default="Qwen/Qwen2.5-1.5B-Instruct")
p.add_argument("--output", default="./results")
p.add_argument("--num-events", type=int, default=100)
p.add_argument("--num-examples", type=int, default=30)
return p.parse_args()
def main():
args = parse_args()
model = args.model
out_root = args.output
os.makedirs(out_root, exist_ok=True)
logger.info("\n--- Experiment 1: Temporal Ordering (Chronological vs Reverse vs Scrambled) ---")
temporal_results = run_all_temporal(
model, args.num_events, args.num_examples,
os.path.join(out_root, "exp1_ordering"),
)
logger.info("\n--- Experiment 2: Recency × Position Interaction ---")
recency_results = run_recency_interaction(
model, args.num_events, args.num_examples,
os.path.join(out_root, "exp2_recency"),
)
master = {
"temporal_ordering": temporal_results,
"recency_interaction": recency_results,
}
save_json(os.path.join(out_root, "master_summary.json"), master)
logger.info("\n--- Key Findings ---")
for order, res in temporal_results.items():
depths = list(res["depths"].keys())
accs = list(res["depths"].values())
if len(accs) >= 3:
mid_idx = len(accs) // 2
pbi = (accs[0] + accs[-1]) / 2 - accs[mid_idx]
logger.info(f" {order:15s} PBI={pbi:+.3f}")
if __name__ == "__main__":
main()