arcisvlm / scripts /launch_training.sh
Hardik Sanghvi
feat: integrate Gemma 4 E2B backbone for production-quality VLM inference
7a564e3
Raw
History Blame Contribute Delete
2.87 kB
#!/bin/bash
# ==========================================================================
# ArcisVLM Full Training Pipeline — 8x A100 DDP
#
# Runs all stages sequentially:
# Stage 0: Train 32K BPE tokenizer
# Stage 1: JEPA Alignment (~2.5 hrs)
# Stage 2: Instruction Tuning (~1.5 hrs)
# Stage 3: Domain Fine-Tuning (~30 min)
#
# Usage:
# bash scripts/launch_training.sh
# ==========================================================================
set -e
CONFIG=configs/scale_1.3b.yaml
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export OMP_NUM_THREADS=4
export NCCL_IB_DISABLE=0
export NCCL_P2P_LEVEL=NVL
# Change to project root
cd "$(dirname "$0")/.."
echo "=================================================================="
echo "ArcisVLM Training Pipeline"
echo "=================================================================="
echo "Config: $CONFIG"
echo "GPUs: $CUDA_VISIBLE_DEVICES"
echo "Start time: $(date)"
echo "=================================================================="
# ------------------------------------------------------------------
echo ""
echo "=== STAGE 0: TRAIN TOKENIZER ==="
echo "Started: $(date)"
python3 scripts/train_tokenizer_32k.py
echo "Completed: $(date)"
# ------------------------------------------------------------------
echo ""
echo "=== STAGE 1: JEPA ALIGNMENT (~2.5 hrs) ==="
echo "Started: $(date)"
torchrun --nproc_per_node=8 scripts/train_stage1_ddp.py --config $CONFIG
echo "Completed: $(date)"
# ------------------------------------------------------------------
echo ""
echo "=== STAGE 2: INSTRUCTION TUNING (~1.5 hrs) ==="
echo "Started: $(date)"
torchrun --nproc_per_node=8 scripts/train_stage2_ddp.py \
--config $CONFIG \
--stage1_ckpt checkpoints/stage1_final.pt
echo "Completed: $(date)"
# ------------------------------------------------------------------
echo ""
echo "=== STAGE 3: DOMAIN FINE-TUNE (~30 min) ==="
echo "Started: $(date)"
torchrun --nproc_per_node=8 scripts/train_stage3_ddp.py \
--config $CONFIG \
--stage2_ckpt checkpoints/stage2_final.pt
echo "Completed: $(date)"
# ------------------------------------------------------------------
echo ""
echo "=== PUSH CHECKPOINTS ==="
python3 scripts/push_checkpoints.py || echo "[WARN] Push failed, manual push needed"
# ------------------------------------------------------------------
echo ""
echo "=================================================================="
echo "TRAINING COMPLETE"
echo "Finished: $(date)"
echo "=================================================================="
echo ""
echo "Checkpoints:"
ls -lh checkpoints/stage*_final.pt 2>/dev/null || echo " (none found)"
echo ""
echo "Next steps:"
echo " 1. Run benchmarks: python3 scripts/run_benchmarks.py"
echo " 2. Export for ONNX: python3 scripts/export_onnx.py"
echo " 3. Deploy: python3 scripts/deploy.py"