Inspiration
After a landslide or a flood, the question on site is rarely "what is in this picture". It is "what do I still need to see, and from where". Today a human answers that, then flies again. We wanted the aircraft to answer it on board, where the link is thin, the battery is short, and nobody is waiting to approve each turn.
What it does
Tancho is a 2.44B parameter on-board model fine-tuned from NVIDIA Cosmos 3 Edge. One checkpoint carries two roles:
- Reasoner reads the captured frame against an observation goal and says whether the goal is met, or what is missing and why.
- Viewpoint readout proposes the next viewpoint, as a direction and a distance inside a volume that was approved before takeoff.
Everything that must not be guessed is deterministic. A compiler turns the proposed viewpoint into a flight path and checks it against the approved volume, altitude limits, obstacle clearance, dwell time and the required pixels on target. A path that violates any of them is rejected before the aircraft moves. The loop is: capture, judge, propose, compile, fly, re-capture, judge again.
The target use is disaster response: road blockage, slope failure, and retrieving an instrument that a river has carried downstream.
How we used Nebius and NVIDIA
- NVIDIA Cosmos 3 Edge is the parent model, trained through NVIDIA's cosmos-framework. It is the NVIDIA open source model this project is built on, not an add-on.
- Nebius AI Cloud Serverless Jobs run the training and the frozen evaluation on
gpu-h100-sxm(1gpu-16vcpu-200gb). The job image is pinned by digest in Nebius Container Registry, and a Nebius compute filesystem holds the parent weights and the exported checkpoints, so a run is reproducible from the recorded job input alone. - Nebius Token Factory serves NVIDIA Nemotron, which turns a free-text tasking ("check whether the road under the slope is passable") into the structured observation goal the on-board model is given.
- The resulting weights are published openly on Hugging Face, so anyone can reproduce the evaluation from the same revision.
What we measured
- The frozen synthetic final scores 104/104, and re-running it from the published revision reproduced all 104 raw outputs byte for byte. A token-free download matched all 487 files.
- On eight pre-fixed unseen simulated scenes, the full loop (capture, Reasoner, viewpoint, compiler, flight, re-capture, completion judgment, return) completed 7 of 8 under a one-attempt rule, and 8 of 8 after one post-hoc rerun that followed a simulator telemetry fault.
- 10 of 12 release gate groups pass. The independent real-image final and the Jetson Orin NX measurement are not done, so this is not flight-qualified and we do not claim it is.
Challenges
- An early set of scores had to be withdrawn. The context ID in the prompt named the image variant, so the model could score well without using the image. We found it, recorded it, redesigned the completion step so the Reasoner judges the re-captured image, and re-measured.
- The free-form generator kept proposing geometrically invalid paths (altitude 14.39 m against a 12 m limit, pitch -44.8 degrees against a requested -40). We stopped asking the model for coordinates and moved to a candidate readout plus a deterministic compiler.
- Our first Nebius job died in 0.4 seconds. Repeated
--argsonnebius ai job createis last-wins, so the-cofpython -cwas dropped and the container failed before training started. We rebuilt the launcher to inject a gzipped bootstrap file instead, under the 48 KiB limit on injected files. - A vision-language model is not the inner loop. Measured against the same labels, an off-the-shelf COCO detector beat the parent model at finding people and vehicles from the air without any tuning. We moved detection and area extraction out of the model and kept the model for the thing only it does: deciding what to observe next.
What we learned
The value of a large model on a drone is not perception. Detection, geometry and limit checking are better done by small deterministic components that can be audited. What the model is for is the judgment in between: is this enough, and if not, where should the aircraft go. Keeping that boundary made the system both cheaper and safer to argue about.
What's next
The Jetson Orin NX 16 GB measurement of the outer loop, and the real-image final with agreement bars that were fixed before annotation started.