| #!/bin/bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| set -euo pipefail |
|
|
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" |
| CONFIG="$PROJECT_DIR/configs/physics_pretrain.yaml" |
|
|
| |
| 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 "" |
|
|
| |
| 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 "=============================================" |
|
|