amsks's picture
docs: expand model card with usage; strip local paths from manifest
64b64db verified
|
Raw
History Blame Contribute Delete
4.88 kB
---
license: mit
library_name: pytorch
tags:
- reinforcement-learning
- offline-rl
- zero-shot-rl
- ogbench
- forward-backward
- successor-measure
- gciql
- manipulation
---
# FB / GC-IQL Bridge — Checkpoints
Model checkpoints from a study of **future-reachability representations** (Forward–Backward /
successor-measure methods, GC-IQL, contrastive RL, PSM/RLDP, TD-MPC2) on **OGBench** cube
manipulation, antmaze, and scene. The collection backs the "bridge" analysis of *why*
successor-measure objectives underperform scalar Bellman supervision on manipulation, and the
proposed **Bellman-supervised FB** and **centered-measure** variants.
- **2,529 checkpoints** (`.pt` torch, `.pkl` jax flax params), all training save-intervals.
- **~253 GB**, spanning 2 frameworks × many methods × tasks × seeds.
- Every run's original training config travels with it, and a top-level
[`checkpoint_manifest.json`](./checkpoint_manifest.json) indexes everything.
> **Datasets are not included.** These are trained agents, not data. The offline datasets are the
> public **OGBench** releases — obtain them from OGBench, not here.
## Repository layout
```
checkpoints/
<framework>/ # torch | jax
<method>/ # e.g. fb-flowbc, RGFB-Cube-Single-State-d50-v0, tdmpc2
<task>__s<seed>__<run>/
step_200000.pt (torch) or params_500000.pkl (jax)
... ...
config.yaml (torch: the run's .hydra/config.yaml)
flags.json (jax: the run's flags.json)
checkpoint_manifest.json # full index (see below)
```
Labels (`method`, `task`, `seed`) are read from each run's **authoritative config**, not parsed
from paths.
## What's inside
| Framework | Files | Notes |
|---|---|---|
| `torch` (`.pt`) | 1,530 | FB / FlowBC, PSM-FlowBC, RLDP-FlowBC, CRL-FlowBC, TD-MPC2 |
| `jax` (`.pkl`) | 999 | GC-IQL flow variants: bilinear, centered-measure, RG-FB, HIQL/GCIVL |
Representative methods: `fb-flowbc`, `psm-flowbc`, `rldp-flowbc`, `tdmpc2`,
`RGFB-Cube-Single-State-d50-v0` (Bellman-supervised FB), `GCIQL-State-Flow-CenteredMeasure-{Aux,Only}-d50`
(centered successor measure), `GCIQL-State-Flow-Bilinear-*`, `HIQL-AntMaze-Medium-*`.
Tasks: `cube-single-play-v0` (state & pixels), `antmaze-medium-navigate-v0`, `scene-play-v0`.
## The manifest
`checkpoint_manifest.json` is a JSON array with one record per checkpoint:
```json
{
"repo_path": "checkpoints/jax/RGFB-Cube-Single-State-d50-v0/cube-single-play-v0__s0__rgfb_v0_s0/params_500000.pkl",
"framework": "jax",
"method": "RGFB-Cube-Single-State-d50-v0",
"task": "cube-single-play-v0",
"seed": 0,
"step": "500000",
"size": 89070661
}
```
## Downloading
Grab a single checkpoint (only that file is fetched):
```python
from huggingface_hub import hf_hub_download
path = hf_hub_download(
repo_id="amsks/bilinear-checkpoints",
filename="checkpoints/jax/RGFB-Cube-Single-State-d50-v0/"
"cube-single-play-v0__s0__rgfb_v0_s0/params_500000.pkl",
)
```
Find checkpoints by filtering the manifest:
```python
import json
from huggingface_hub import hf_hub_download
manifest = json.load(open(hf_hub_download("amsks/bilinear-checkpoints",
"checkpoint_manifest.json")))
# e.g. every RG-FB seed
rgfb = [r for r in manifest if r["method"] == "RGFB-Cube-Single-State-d50-v0"]
for r in rgfb:
ckpt = hf_hub_download("amsks/bilinear-checkpoints", r["repo_path"])
```
Download an entire method/run folder:
```python
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="amsks/bilinear-checkpoints",
allow_patterns="checkpoints/jax/RGFB-Cube-Single-State-d50-v0/*",
)
```
## Loading a checkpoint
Checkpoints are training-state artifacts, not standalone modules — construct the matching agent
from the training code, then load the weights. Each run folder ships the exact config used to
train it.
- **jax (`params_*.pkl`)** — pickled flax parameter pytree for the GC-IQL flow agent. Build the
agent from the co-located `flags.json`, then restore the params.
- **torch (`.pt`)** — a `torch.load`-able state dict for the FB / FlowBC / TD-MPC2 agent. Build the
agent from the co-located `config.yaml` (`.hydra`), then `load_state_dict`.
The agent definitions and loaders live in the **Factored-FB** codebase
(`tools/wandb_mode_shim/gciql_flow.py` for jax GC-IQL; `agents/fb/…` for torch FB). See that
repository for exact construction.
## Provenance & reproducibility
- `step` is the training step of the save; multiple steps per run are included so training
trajectories can be reconstructed.
- Configs are byte-for-byte the ones used at train time (`config.yaml` / `flags.json`).
- Three identical duplicate backups were de-duplicated; no run is lost.
## License
MIT.