Files
frankenstallm/data/build_dataset.sh

72 lines
1.8 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# data/build_dataset.sh — Full pipeline: download → tokenizer → .bin
# Usage: bash data/build_dataset.sh [--langs "ko en"] [--ko_max 0] [--en_max 300000]
#
# Steps:
# 1. python data/download.py → data/raw/*.txt
# 2. python tokenizer/train_tokenizer.py → tokenizer/tokenizer.json
# 3. python data/prepare.py → data/train.bin, data/val.bin
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"
# Default params
LANGS="ko en"
KO_MAX=0
EN_MAX=300000
VOCAB_SIZE=32000
# Parse args
while [[ $# -gt 0 ]]; do
case $1 in
--langs) LANGS="$2"; shift 2 ;;
--ko_max) KO_MAX="$2"; shift 2 ;;
--en_max) EN_MAX="$2"; shift 2 ;;
--vocab_size) VOCAB_SIZE="$2"; shift 2 ;;
*) echo "Unknown arg: $1"; exit 1 ;;
esac
done
echo "=============================="
echo " LLM-Bang Dataset Pipeline"
echo "=============================="
echo " langs: $LANGS"
echo " ko_max: $KO_MAX (0=all)"
echo " en_max: $EN_MAX"
echo " vocab_size: $VOCAB_SIZE"
echo ""
# Step 1: Download
echo "[1/3] Downloading data..."
python data/download.py \
--langs $LANGS \
--ko_max $KO_MAX \
--en_max $EN_MAX \
--output_dir data/raw
echo ""
# Step 2: Train tokenizer
echo "[2/3] Training BPE tokenizer..."
python tokenizer/train_tokenizer.py \
--input "data/raw/*.txt" \
--output tokenizer/ \
--vocab_size $VOCAB_SIZE
echo ""
# Step 3: Prepare .bin files
echo "[3/3] Tokenizing and saving .bin files..."
python data/prepare.py \
--input "data/raw/*.txt" \
--output data/train.bin \
--val_output data/val.bin \
--tokenizer tokenizer/tokenizer.json \
--val_split 0.005
echo ""
echo "=============================="
echo " Done! Files:"
ls -lh data/*.bin 2>/dev/null || echo " (no .bin files yet)"
echo "=============================="