Files
fumen-measure-analyze/pipeline/orchestrator.sh
2026-04-20 00:21:53 +09:00

37 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
SAMPLE_DIR=${1:-"sample"}
TRAIN_DIR="$SAMPLE_DIR/training"
VAL_DIR="$SAMPLE_DIR/validation"
MODEL_DIR="$SAMPLE_DIR/model"
DATA_DIR="$SAMPLE_DIR/dataset"
EPOCHS=50
while true; do
echo "--- [준비] 폴더 초기화 ---"
rm -rf "$TRAIN_DIR" "$VAL_DIR" "$DATA_DIR" "sample/output/factorize"
mkdir -p "$TRAIN_DIR" "$VAL_DIR" "$MODEL_DIR" "$DATA_DIR" "sample/output/factorize" "sample/output"
echo "--- [채보 선별] ---"
find tja -name "*.tja" | sort -R > file_list.txt
head -n 200 file_list.txt | xargs -I {} cp {} "$TRAIN_DIR/"
tail -n 50 file_list.txt | xargs -I {} cp {} "$VAL_DIR/"
echo "--- [학습 진행] Epoch: $EPOCHS ---"
./scripts/run_train.sh "$TRAIN_DIR" "$MODEL_DIR" "$DATA_DIR" "$EPOCHS"
echo "--- [검증 및 상수 추론] ---"
bun run scripts/predict_batch.ts "$MODEL_DIR" "$SAMPLE_DIR"
bun run scripts/compare_results.ts "$SAMPLE_DIR"
# 오차 검사
high_error=$(jq 'map(select(.diff != null and (.diff | tonumber | fabs > 0.1))) | length' "$SAMPLE_DIR/comparison.json")
if [ "$high_error" -eq 0 ]; then
echo "목표 달성: 모든 예측 오차가 0.1 이내입니다."
break
else
echo "오차 발생: $high_error 건이 0.1 초과. 학습 강도(Epoch)를 2배로 늘려 재학습합니다."
EPOCHS=$((EPOCHS * 2))
fi
done