JAM five-task mixed fine-tuning release
This repository contains the requested completed mixed-task adapters for Franka-JAM, Foundation-JAM, and pi-0.5. These are fine-tuned adapters, not merged base models. Each adapter must be loaded with its matching original base and the configuration supplied here.
| Folder | Model | Release |
|---|---|---|
franka/ |
Franka-JAM | Final 20K mixed-task checkpoint |
foundation/ |
Foundation-JAM | Final 20K mixed-task checkpoint |
pi05/ |
pi-0.5 | Completed normalized mixed-task export, preceding the optimizer-group correction |
The dataset is pinned to 24jihoward/gello-franka-jam-demos revision 11176cf1dbdd537218e4ecd2aeb48c9333634f03. It contains 130 demonstrations: 50 for task 4 and 20 for each other task. The split is 117 training and 13 held-out recordings. These mixed checkpoints do not include the later task 5 expansion. New task-specific training runs are separate artifacts.
All three adapters passed finite-tensor checks and offline HTTP inference using the actual GELLO client. This verifies interface compatibility, not physical task success. The final checkpoints did not consistently outperform earlier validation-selected checkpoints. No closed-loop success rate is claimed. VALIDATION.json records the scope and selected offline diagnostics.
Download and serving code
Use a clean checkout of the inference branch at the tested commit:
git clone --branch inference-gello-client https://github.com/lixuan27/JAM-realrobot.git /data/JAM-realrobot
git -C /data/JAM-realrobot checkout b2e77d77d9590798fb0856ee214e8255c32e7ce4
hf download Recharge23/JAM-20K-mix --local-dir /data/JAM-20K-mix
Install the relevant model environment from the pinned GitHub checkout. JAM and pi-0.5 use separate environments. See the model-specific guides below.
Required original bases and tokenizer
Download the original base that matches each adapter. The links below point to the exact revisions used by this release; do not substitute a different model or a newer revision.
| Adapter in this release | Matching original base | Additional required assets |
|---|---|---|
franka/final.safetensors |
Full Franka-JAM checkpoint, 25.30 GB | Franka configuration, normalization, and the JAM tokenizer in the pinned code checkout |
foundation/final.safetensors |
Full Foundation-JAM checkpoint, 25.30 GB | Foundation configuration, normalization, and the JAM tokenizer in the pinned code checkout |
pi05/adapter.safetensors |
Full pi-0.5 base weights, 14.47 GB | Base config, preprocessor config, postprocessor config, PaliGemma tokenizer, and this release's gello_policy.json |
Access and authentication. The JAM base repository is private. Your Hugging Face account must have access granted by its owner; logging in alone does not grant access. The pi-0.5 base is public. The PaliGemma tokenizer repository is gated: request access on its model page and wait for approval. Authenticate on the inference machine with a read token from the account that has the required access. No token is distributed with this release.
# Run in the serving user's environment on the inference machine.
export HF_HOME=/data/huggingface
hf auth login
Use the same HF_HOME for downloading and serving. In particular, the pi-0.5 loader retrieves its tokenizer from the Hugging Face cache, not from --base. Follow the tokenizer cache setup in pi05/README.md.
JAM tokenizer and encoders. Both JAM profiles use the tokenizer files included in the pinned GitHub checkout: spiece.model, tokenizer.json, tokenizer_config.json, and special_tokens_map.json. Keep the complete checkout when preparing the serving root. The full JAM checkpoints linked above contain the text-encoder and VAE weights read by this implementation. The PaliGemma tokenizer is required only for pi-0.5.
Verify the JAM base weights. Both files are pinned to JAM repository revision de03f461ca1d532e1c4aca10decf0e09e3f731cd. After downloading them with the commands below, check the SHA-256 values against franka/identity.json and foundation/identity.json:
| Base file | SHA-256 |
|---|---|
Franka-JAM.safetensors |
bd6317317d5cd0f4f3e27bbc01a2e2388601638cdea1492312b333b5cff772fe |
Foundation-JAM.safetensors |
0dbc71bdc586819f0de404c8e4befc2952d644361f77d215d55d6a7b255a2191 |
sha256sum /data/jam-base/Franka-JAM.safetensors
sha256sum /data/jam-base/Foundation-JAM.safetensors
Run the checksum command for each base you downloaded. The pi-0.5 guide lists its required files and checksums separately. File sizes above refer to base weights only; allow additional disk space for adapters, environments, and runtime caches.
Franka-JAM
The matching full base is Franka-JAM.safetensors in the pinned JAM base repository. Pair it with this release's franka/ adapter and configuration.
hf download JAM-realworld/JAM-realrobot Franka-JAM.safetensors \
--revision de03f461ca1d532e1c4aca10decf0e09e3f731cd --local-dir /data/jam-base
python /data/JAM-20K-mix/prepare_serving_root.py --source /data/JAM-realrobot \
--profile franka --output /data/franka-mix-serving
python /data/JAM-realrobot/tools/serve_resident.py --repo /data/franka-mix-serving \
--prompts-file /data/JAM-20K-mix/prompts.txt -- \
--checkpoint /data/jam-base/Franka-JAM.safetensors \
--adapter /data/JAM-20K-mix/franka/final.safetensors --profile franka --host 127.0.0.1 --port 8000
Franka supervision uses the next achieved flange pose and the next binary gripper command. Its XYZ bounds were expanded using training episodes. The repository's default Franka normalization is different; use the supplied configuration. The preparation helper creates an isolated runtime and checks its hashes without changing your source checkout.
Foundation-JAM
The matching full base is Foundation-JAM.safetensors in the same pinned JAM base repository. Pair it with this release's foundation/ adapter and configuration.
hf download JAM-realworld/JAM-realrobot Foundation-JAM.safetensors \
--revision de03f461ca1d532e1c4aca10decf0e09e3f731cd --local-dir /data/jam-base
python /data/JAM-20K-mix/prepare_serving_root.py --source /data/JAM-realrobot \
--profile foundation --output /data/foundation-mix-serving
python /data/JAM-realrobot/tools/serve_resident.py --repo /data/foundation-mix-serving \
--prompts-file /data/JAM-20K-mix/prompts.txt -- \
--checkpoint /data/jam-base/Foundation-JAM.safetensors \
--adapter /data/JAM-20K-mix/foundation/final.safetensors --profile foundation --host 127.0.0.1 --port 8000
Foundation supervision uses the next commanded flange pose and binary gripper command. Its configuration and normalization are paired with this adapter and must remain unchanged.
pi-0.5
See pi05/README.md for the exact preprocessing contract, base files, serving command, and optimizer-group limitation of this export. The separately running corrected recipe is not represented by these weights.
GELLO interface
Use tools/jam_gello_client.py from the pinned checkout. Requests contain the external-camera RGB image, an unnormalized physical flange pose10, and the exact task instruction from prompts.txt. JAM receives 640×512 RGB with 16 black rows above and below the native 640×480 image; pi-0.5 removes those same borders internally. The response contains 32 absolute targets in the robot base frame: flange XYZ, the first two rotation-matrix columns, and aperture (0 closed, 1 open).
The server binds to localhost. Use the existing SSH tunnel for a remote inference host. Run the client self-test and dry-run with the existing robot configuration before actuation. Camera placement, flange/tool calibration, workspace limits, gripper backend, and execution timing still need to match the physical setup. This release changes none of those controller limits.