d0rj's picture
feat: Initial commit
cf03b98
Raw
History Blame Contribute Delete
2.13 kB
#!/bin/bash
set -euo pipefail
MODEL="${MODEL:-google/t5gemma-2-1b-1b}"
MIXTURE="${MIXTURE:-t5gemma2_200k}"
DATASET="${DATASET:-}"
DATA_DIR="${DATA_DIR:-$HOME/dflash-output/t5gemma2_mixture_200k}"
OUTPUT_DIR="${OUTPUT_DIR:-../dflash-output/dflare_t5gemma2_mixture_200k}"
LOG_DIR="${LOG_DIR:-$HOME/dflash-output/tensorboard/t5gemma2_mixture_200k}"
RUN_NAME="${RUN_NAME:-dflare_t5gemma2_mixture_200k}"
MAX_SAMPLES="${MAX_SAMPLES:-200000}"
SEED="${SEED:-42}"
T5GEMMA_ONLINE_EXTRACTOR_BATCH_SIZE="${T5GEMMA_ONLINE_EXTRACTOR_BATCH_SIZE:-32}"
# DFlare benefits from a wider set of verifier states because each draft layer
# learns its own fusion over these layers. Keep these explicit for reproducible
# training and vLLM hidden-state extraction.
TARGET_LAYER_IDS=(2 5 8 11 14 17 20 22)
if [[ ! -f "$DATA_DIR/dataset_info.json" ]]; then
PREPARE_ARGS=(
scripts/prepare_t5gemma_data.py
--model "$MODEL"
--output "$DATA_DIR"
--max-samples "$MAX_SAMPLES"
--seed "$SEED"
--encoder-seq-length 2048
--decoder-seq-length 1024
)
if [[ -n "$MIXTURE" ]]; then
PREPARE_ARGS+=(--mixture "$MIXTURE")
else
PREPARE_ARGS+=(--data "$DATASET")
fi
python "${PREPARE_ARGS[@]}"
else
echo "Prepared dataset already exists at $DATA_DIR; reusing it."
fi
PYTORCH_ALLOC_CONF=expandable_segments:True \
TORCHDYNAMO_DISABLE=1 \
T5GEMMA_ONLINE_EXTRACTOR_BATCH_SIZE="$T5GEMMA_ONLINE_EXTRACTOR_BATCH_SIZE" \
python scripts/train_t5gemma_online.py \
--verifier-name-or-path "$MODEL" \
--data-path "$DATA_DIR" \
--save-path "$OUTPUT_DIR/checkpoints" \
--draft-vocab-size 32000 \
--speculator-type dflare \
--draft-arch llama \
--draft-hidden-act silu \
--draft-attn-impl eager \
--block-size 8 \
--max-anchors 256 \
--num-layers 6 \
--target-layer-ids "${TARGET_LAYER_IDS[@]}" \
--total-seq-len 2048 \
--epochs 6 \
--lr 6e-4 \
--loss-fn kl_div \
--logger tensorboard \
--log-dir "$LOG_DIR" \
--run-name "$RUN_NAME" \
--on-missing raise \
--num-workers 0 \
--prefetch-factor 1