arc-ai-embodied-intelligence / scripts /run_physics_pretrain.sh
tfayiz's picture
Upload scripts/run_physics_pretrain.sh with huggingface_hub
f792540 verified
Raw
History Blame Contribute Delete
3.19 kB
#!/bin/bash
# =============================================================================
# ARC-AI Physics Pretraining Pipeline
# =============================================================================
# Streams THE WELL physics data from HuggingFace → pretrains temporal encoder
# → fine-tunes on robot demonstrations with domain randomization
#
# Requirements:
# pip install torch datasets huggingface_hub pyyaml numpy
# huggingface-cli login (for push_to_hub)
#
# Usage:
# bash scripts/run_physics_pretrain.sh # full pipeline
# bash scripts/run_physics_pretrain.sh --pretrain # pretrain only
# bash scripts/run_physics_pretrain.sh --finetune # finetune only (needs checkpoint)
# =============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
CONFIG="$PROJECT_DIR/configs/physics_pretrain.yaml"
# Environment
export PYTHONPATH="$PROJECT_DIR/src:${PYTHONPATH:-}"
export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:-0}"
export PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True"
echo "============================================="
echo "ARC-AI Physics Pretraining Pipeline"
echo "============================================="
echo "Config: $CONFIG"
echo "GPU: $CUDA_VISIBLE_DEVICES"
echo "Python: $(python3 --version)"
echo ""
# Check dependencies
python3 -c "import torch; print(f'PyTorch {torch.__version__}, CUDA: {torch.cuda.is_available()}')"
python3 -c "import datasets; print(f'HF Datasets {datasets.__version__}')"
MODE="${1:-full}"
case "$MODE" in
--pretrain)
echo "Mode: Pretrain only"
python3 -c "
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
from physics_pretraining import PhysicsPretrainer, PhysicsPretrainConfig
config = PhysicsPretrainConfig()
trainer = PhysicsPretrainer(config)
trainer.train()
"
;;
--finetune)
echo "Mode: Finetune only (requires pretrained checkpoint)"
CHECKPOINT="${2:-checkpoints/physics_pretrain/final.pt}"
echo "Loading: $CHECKPOINT"
python3 -c "
import logging, torch
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
from physics_pretraining import (
PhysicsTemporalEncoder, PhysicsPretrainConfig,
PolicyFinetuner, FinetuneConfig
)
config = PhysicsPretrainConfig()
encoder = PhysicsTemporalEncoder(config)
ckpt = torch.load('$CHECKPOINT', map_location='cpu')
encoder.load_state_dict(ckpt['encoder_state'])
ft_config = FinetuneConfig(pretrained_path='$CHECKPOINT')
finetuner = PolicyFinetuner(encoder, ft_config)
print('Finetuner ready. Provide dataloader via API.')
"
;;
*)
echo "Mode: Full pipeline (pretrain + finetune)"
python3 -c "
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s')
from physics_pretraining import run_physics_pretraining
policy = run_physics_pretraining('$CONFIG')
print('Pipeline complete.')
"
;;
esac
echo ""
echo "============================================="
echo "Done."
echo "============================================="