TRLE-Hackethon / artifacts /export_model.py
Loosebag's picture
feat(model): add huggingface-ready model artifacts and card metadata
b605d24
Raw
History Blame Contribute Delete
1.22 kB
import json
from pathlib import Path
import torch
from traffic_rl.env.traffic_env import TrafficEnv
from traffic_rl.training.trainer import TrainingConfig, train_dqn
from traffic_rl.evaluation.evaluator import evaluate_agent
env_config = {
"max_steps": 120,
"arrival_mode": "stochastic",
"lane_bias": (1.6, 0.8, 1.4, 0.6),
"peak_rates": (3.8, 2.2, 3.4, 1.5),
"offpeak_rates": (1.4, 0.9, 1.2, 0.7),
"peak_duration": 35,
"cycle_duration": 60,
"service_rate": 2,
"ambulance_spawn_prob": 0.08,
"seed": 42,
}
cfg = TrainingConfig(episodes=80, max_steps=120, batch_size=64, target_sync_interval=10, epsilon_decay=0.97)
env = TrafficEnv(config=env_config)
agent, history = train_dqn(env, cfg)
metrics = evaluate_agent(agent=agent, env_config=env_config, episodes=20)
artifacts = Path("artifacts")
artifacts.mkdir(exist_ok=True)
torch.save(agent.q_network.state_dict(), artifacts / "dqn_state_dict.pt")
(artifacts / "model_metrics.json").write_text(json.dumps(metrics, indent=2), encoding="utf-8")
(artifacts / "model_config.json").write_text(json.dumps(env_config, indent=2), encoding="utf-8")
print(json.dumps({"metrics": metrics, "artifact_dir": str(artifacts)}, indent=2))