Varaha
Varaha is a high-fidelity OpenEnv wildfire logistics benchmark for long-horizon agent training and evaluation.
Core trick
PPO and LLM-planner tracks train a 3D drone on wildfire delivery missions with battery limits and ground-responder coordination.
Description
Varaha is a high-fidelity OpenEnv wildfire logistics benchmark for long-horizon agent training and evaluation. In this 3D environment, an autonomous drone must complete multi-step delivery missions while navigating dynamic fire hazards, dense obstacle fields, battery constraints, and mission-level tool interactions. In interacts with responder agents on the ground to complete its mission with their help.
The project supports both continuous-control RL (PPO) and LLM-based planning (Unsloth), with reproducible metrics, reward tracking, and held-out generalization scenarios that expose both strengths and failure modes. Built for serious post-training research, Varaha turns safety-critical coordination into a measurable, scalable environment for next-generation agent capabilities.
README excerpt
# Varaha Training Paths This repo now has two runnable training tracks: 1. PPO (continuous-control RL, Stable-Baselines3) 2. Unsloth SFT (LLM planner for long-horizon instruction mode) ## PPO (existing path) Default hardcore training: ```bash python train_ppo.py --timesteps 50000000 --n-envs 64 --save-dir ./results_hardcore ``` Quick ~15-minute training pass: ```bash python train_ppo.py --quick-15m --hard-mix --device cuda --require-cuda ``` Ultra-hard V2: ```bash python train_ppo.py --v2 ``` Train on a custom render/trace/object world JSON: ```bash python train_ppo.py --world-json ./sample_render_state.json --timesteps 10000000 --n-envs 32 ``` `--world-json` accepts: - `env.get_trace()` JSON (top-level `world`) - `env.render_state()` JSON - A scene export with top-level `objects` (box/cylinder style entries) ## Unsloth (new long-horizon planning path) Install deps: ```bash pip install -r requirements-unsloth.txt ``` Run a minimal end-to-end Unsloth training + reward eval: ```bash python train_unsloth.py \ --output-dir ./results_unsloth \ --dataset-episodes 12 \ --dataset-max-records 3000 \ --train-steps 120 \ --eval-episodes 3 ``` Artifacts: - `results_unsloth/unsloth_sft_dataset.jsonl` - `results_unsloth/adapter/` - `results_unsloth/unsloth_metrics.json` - `results_unsloth/reward_improvement.png` To train/eval Unsloth on a render-derived world: ```bash python train_unsloth.py --world-json ./sample_render_state.json ``` ## Colab notebook (minim