wikimovies-transe-rgcn / metrics.json
shikhragimov's picture
Upload wikimovies-transe-rgcn v1 experimental encoder
c0b2208 verified
Raw
History Blame Contribute Delete
6.31 kB
{
"rgcn_link_prediction": {
"validation": {
"mean_reciprocal_rank": 0.0734197945466392,
"hits_at_10": 0.14442630250853494,
"hits_at_1": 0.03933501558557221
},
"testing": {
"mean_reciprocal_rank": 0.07925546916450926,
"hits_at_10": 0.15405164737310775,
"hits_at_1": 0.04407836153161175
},
"split_counts": {
"train": 121266,
"validation": 6737,
"test": 6738
},
"transe_init": true
},
"rollup": {
"recorded_at": "2026-06-05",
"phase2_targets": {
"link_pred_mrr": 0.2,
"source": "TODO.md Phase 2 readiness criterion"
},
"link_prediction_split": {
"train": 121266,
"validation": 6737,
"test": 6738,
"ratios": [
0.9,
0.05,
0.05
],
"seed": 42
},
"transe": {
"config": "data/processed/transe_config.json",
"artifacts": "data/processed/transe_emb.pt",
"hyperparams": {
"embedding_dim": 128,
"learning_rate": 0.001,
"batch_size": 256,
"num_epochs": 200,
"num_negs_per_pos": 10
},
"validation": {
"mean_reciprocal_rank": 0.0688,
"hits_at_10": 0.1718,
"hits_at_1": 0.0056
},
"testing": {
"mean_reciprocal_rank": 0.0684,
"hits_at_10": 0.1702,
"hits_at_1": 0.0045
},
"meets_mrr_target": false
},
"rgcn": {
"config": "data/processed/rgcn_config.json",
"artifacts": "checkpoints/wikimovies_rgcn.pt",
"hyperparams": {
"hidden_dim": 128,
"num_layers": 2,
"num_bases": 4,
"learning_rate": 0.001,
"batch_size": 1024,
"num_epochs": 50,
"num_negs_per_pos": 10,
"transe_init": true,
"frozen_after_train": true
},
"validation": {
"mean_reciprocal_rank": 0.0734,
"hits_at_10": 0.1444,
"hits_at_1": 0.0393
},
"testing": {
"mean_reciprocal_rank": 0.0793,
"hits_at_10": 0.1541,
"hits_at_1": 0.0441
},
"meets_mrr_target": false,
"vs_transe": {
"test_mrr_delta": 0.0109,
"test_hits10_delta": -0.0161,
"note": "MRR slightly up; Hits@10 down vs TransE"
}
},
"hf_publish": {
"model_name": "wikimovies-transe-rgcn",
"version": "v1-experimental",
"status": "staged_locally",
"staging_dir": "models/wikimovies-transe-rgcn",
"upload_script": "scripts/publish_encoder_hf.py",
"note": "Experimental baseline; expect v2 after remediation. Upload requires: hf auth login && python scripts/publish_encoder_hf.py --repo-id USER/wikimovies-transe-rgcn --upload"
},
"encode_api": {
"module": "graph_align/encoders/encoder.py",
"checkpoint": "checkpoints/wikimovies_rgcn.pt",
"benchmark": "results/encode_benchmark.json",
"num_subgraphs": 1000,
"split": "poc_train",
"per_subgraph_ms": {
"cpu_node": 2.98,
"cpu_graph": 2.91,
"mps_node": 40.32,
"mps_graph": 30.86
},
"note": "Sequential per-subgraph forward; MPS slower than CPU on small subgraphs (kernel launch overhead). Use CPU or batched encode_subgraphs for inference."
},
"retrieval": {
"config": "data/processed/config.json",
"hop_max": 3,
"n_max": 500,
"train_samples": 114196,
"answer_in_khop_rate": 1.0,
"answer_in_retrieved_rate": 0.5623,
"meets_retrieval_target": false,
"note": "No formal MRR target; 56% cap coverage is QA bottleneck separate from link-pred MRR"
},
"gaps": [
{
"id": "link_pred_mrr",
"current": 0.079,
"target": 0.2,
"metric": "rgcn test MRR",
"blocks_mvp": false,
"blocks_phase2_criterion": true
},
{
"id": "retrieval_coverage",
"current": 0.562,
"target": null,
"metric": "answer_in_retrieved_rate at N_max=500",
"blocks_mvp": false,
"note": "44% train QA: gold answer outside capped subgraph"
}
],
"remediation": {
"link_pred_mrr": [
{
"priority": 1,
"action": "Stronger KGE init: train ComplEx or RotatE (PyKEEN) on same split; use as R-GCN node init",
"expected": "Often +0.05\u20130.15 MRR on multi-rel KGs vs TransE L1",
"effort": "medium"
},
{
"priority": 2,
"action": "R-GCN hyperparam sweep: 100\u2013200 epochs, lr 5e-4, dropout 0.1, num_bases=9, unfreeze/finetune init",
"expected": "Modest MRR gain; current 50-epoch run under-trained",
"effort": "low"
},
{
"priority": 3,
"action": "Better negative sampling: type-constrained / degree-aware (PyKEEN Bernoulli or LCWA+filtered)",
"expected": "Better ranking tail prediction",
"effort": "medium"
},
{
"priority": 4,
"action": "Add inverse relations (+9 rels) and self-loops in message-passing graph",
"expected": "Improves undirected reachability in conv layers",
"effort": "medium"
},
{
"priority": 5,
"action": "Calibrate eval: run PyKEEN TransE/ComplEx baseline on identical split; verify our eval matches",
"expected": "Rule out eval implementation gap",
"effort": "low"
}
],
"retrieval_coverage": [
{
"priority": 1,
"action": "Raise N_max budget (1000 / 2000) and rebuild subgraphs; re-measure answer_in_retrieved_rate",
"expected": "Direct lift toward 80%+ retrieved; linear cost in subgraph size",
"effort": "low",
"command": "python scripts/build_subgraphs.py --n-max-budget 2000"
},
{
"priority": 2,
"action": "Smarter truncation: hop-first then degree (already); add answer-aware cap ablation for upper bound",
"expected": "Diagnostic only \u2014 sets ceiling for retrieval",
"effort": "low"
}
],
"mvp_path": "Proceed with frozen R-GCN (MRR 0.08) + N_max=500 (56% retrieval): link-pred MRR is init quality; QA accuracy driven mainly by retrieval + projection alignment, not global MRR>0.2."
}
}
}