|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -euo pipefail |
| 3 | + |
| 4 | +# Train the small UniXcoder-style RoBERTa baseline on raw CodeSearchNet Python |
| 5 | +# function/docstring pairs. This intentionally does not consume JEPA triples. |
| 6 | + |
| 7 | +PYTHON_BIN="${PYTHON_BIN:-python}" |
| 8 | +TOKENIZER_DIR="${TOKENIZER_DIR:-assets/tokenizers/codesearchnet-python/bpe16k}" |
| 9 | +OUTPUT_DIR="${OUTPUT_DIR:-runs/pretrain-unixcoder-raw}" |
| 10 | + |
| 11 | +DATASET_NAME="${DATASET_NAME:-code_search_net}" |
| 12 | +DATASET_CONFIG="${DATASET_CONFIG:-python}" |
| 13 | +SPLIT="${SPLIT:-train}" |
| 14 | +LOCAL_DATASET_DIR="${LOCAL_DATASET_DIR:-}" |
| 15 | +DATA_FILES="${DATA_FILES:-}" |
| 16 | +STREAMING="${STREAMING:-1}" |
| 17 | + |
| 18 | +STEPS="${STEPS:-200000}" |
| 19 | +DURATION_HOURS="${DURATION_HOURS:-0}" |
| 20 | +MAX_LEN="${MAX_LEN:-256}" |
| 21 | +BATCH_SIZE="${BATCH_SIZE:-128}" |
| 22 | +LR="${LR:-2e-5}" |
| 23 | +WARMUP_STEPS="${WARMUP_STEPS:-2000}" |
| 24 | +MLM_PROBABILITY="${MLM_PROBABILITY:-0.15}" |
| 25 | +CONTRASTIVE_WEIGHT="${CONTRASTIVE_WEIGHT:-0.1}" |
| 26 | +TEMPERATURE="${TEMPERATURE:-0.05}" |
| 27 | +PRECISION="${PRECISION:-bf16}" |
| 28 | +SAVE_EVERY="${SAVE_EVERY:-5000}" |
| 29 | +EVAL_EVERY="${EVAL_EVERY:-1000}" |
| 30 | +EVAL_BATCHES="${EVAL_BATCHES:-20}" |
| 31 | +SEED="${SEED:-123456}" |
| 32 | +GPU="${GPU:-0}" |
| 33 | +DRY_RUN_BATCHES="${DRY_RUN_BATCHES:-0}" |
| 34 | + |
| 35 | +mkdir -p "$OUTPUT_DIR" |
| 36 | + |
| 37 | +ARGS=( |
| 38 | + scripts/train_small_unixcoder_raw.py |
| 39 | + --output-dir "$OUTPUT_DIR" |
| 40 | + --model-name "$TOKENIZER_DIR" |
| 41 | + --dataset-name "$DATASET_NAME" |
| 42 | + --dataset-config "$DATASET_CONFIG" |
| 43 | + --split "$SPLIT" |
| 44 | + --max-len "$MAX_LEN" |
| 45 | + --batch-size "$BATCH_SIZE" |
| 46 | + --steps "$STEPS" |
| 47 | + --duration-hours "$DURATION_HOURS" |
| 48 | + --lr "$LR" |
| 49 | + --warmup-steps "$WARMUP_STEPS" |
| 50 | + --mlm-probability "$MLM_PROBABILITY" |
| 51 | + --contrastive-weight "$CONTRASTIVE_WEIGHT" |
| 52 | + --temperature "$TEMPERATURE" |
| 53 | + --precision "$PRECISION" |
| 54 | + --eval-every "$EVAL_EVERY" |
| 55 | + --eval-batches "$EVAL_BATCHES" |
| 56 | + --save-every "$SAVE_EVERY" |
| 57 | + --seed "$SEED" |
| 58 | +) |
| 59 | + |
| 60 | +if [[ "$STREAMING" != "1" ]]; then |
| 61 | + ARGS+=(--no-streaming) |
| 62 | +fi |
| 63 | + |
| 64 | +if [[ -n "$LOCAL_DATASET_DIR" ]]; then |
| 65 | + ARGS+=(--local-dataset-dir "$LOCAL_DATASET_DIR") |
| 66 | +fi |
| 67 | + |
| 68 | +if [[ -n "$DATA_FILES" ]]; then |
| 69 | + # shellcheck disable=SC2206 |
| 70 | + files=($DATA_FILES) |
| 71 | + ARGS+=(--data-files "${files[@]}") |
| 72 | +fi |
| 73 | + |
| 74 | +if [[ "$DRY_RUN_BATCHES" != "0" ]]; then |
| 75 | + ARGS+=(--dry-run-batches "$DRY_RUN_BATCHES") |
| 76 | +fi |
| 77 | + |
| 78 | +CUDA_VISIBLE_DEVICES="$GPU" "$PYTHON_BIN" "${ARGS[@]}" |
| 79 | + |
| 80 | +echo "Done. Checkpoint:" |
| 81 | +echo " $OUTPUT_DIR/latest.pt" |
0 commit comments