| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| set -euo pipefail |
|
|
| QUANT="${QUANT:-Q4_K_M}" |
| MODEL_NAME="frankenstallm-3b" |
| SKIP_CONVERT=false |
|
|
| while [[ $# -gt 0 ]]; do |
| case "$1" in |
| --quant) QUANT="$2"; shift 2 ;; |
| --skip_convert) SKIP_CONVERT=true; shift ;; |
| -h|--help) |
| grep '^#' "$0" | head -20 | sed 's/^# \{0,1\}//' |
| exit 0 ;; |
| *) echo "ERROR: μ μ μλ μ΅μ
: $1"; exit 1 ;; |
| esac |
| done |
|
|
| PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
| cd "$PROJECT_DIR" |
|
|
| GGUF_PATH="outputs/gguf/frankenstallm-3b-${QUANT}.gguf" |
| MODELFILE="Modelfile.3b" |
|
|
| echo "==================================================================" |
| echo " FRANKENSTALLM 3B Ollama λ°°ν¬" |
| echo " μμν : $QUANT" |
| echo " GGUF : $GGUF_PATH" |
| echo " Modelfile: $MODELFILE" |
| echo "==================================================================" |
|
|
| |
| if [[ "$SKIP_CONVERT" == "false" ]]; then |
| if [[ ! -f "$GGUF_PATH" ]]; then |
| echo "" |
| echo "[Step 1] GGUF λ³ν μ€ν μ€ ..." |
| bash scripts/convert_3b_gguf.sh \ |
| --input_dir checkpoints/korean_3b_orpo_v1/checkpoint-9840 |
| else |
| echo "[Step 1] GGUF νμΌ μ΄λ―Έ μ‘΄μ¬ β λ³ν 건λλ" |
| fi |
| else |
| echo "[Step 1] λ³ν 건λλ (--skip_convert)" |
| fi |
|
|
| if [[ ! -f "$GGUF_PATH" ]]; then |
| echo "ERROR: GGUF νμΌ μμ: $GGUF_PATH" |
| exit 1 |
| fi |
|
|
| echo " GGUF ν¬κΈ°: $(du -sh "$GGUF_PATH" | cut -f1)" |
|
|
| |
| if ! command -v ollama &>/dev/null; then |
| echo "" |
| echo "[Step 2] Ollama λ―Έμ€μΉ β μ€μΉ μ€ ..." |
| curl -fsSL https://ollama.com/install.sh | sh |
| fi |
|
|
| |
| if ! ollama list &>/dev/null 2>&1; then |
| echo "[Step 2] Ollama μλ² μμ μ€ ..." |
| ollama serve &>/tmp/ollama_serve.log & |
| for i in $(seq 1 15); do |
| if ollama list &>/dev/null 2>&1; then |
| echo " [OK] Ollama μλ² μ€λΉ (${i}μ΄)" |
| break |
| fi |
| sleep 1 |
| done |
| fi |
|
|
| |
| echo "" |
| echo "[Step 3] Ollama λͺ¨λΈ λ±λ‘: $MODEL_NAME" |
| ollama create "$MODEL_NAME" -f "$MODELFILE" |
| echo " [OK] λ±λ‘ μλ£" |
|
|
| |
| echo "" |
| echo "[Step 4] μλ ν
μ€νΈ ..." |
| declare -a QUICK_TESTS=( |
| "λνλ―Όκ΅μ μλλ?" |
| "μΈκ³΅μ§λ₯μ΄λ 무μμΈκ°μ?" |
| "νκ΅μ μ ν΅ μμ μ€μμ κΉμΉμ λν΄ μ€λͺ
ν΄μ£ΌμΈμ." |
| ) |
|
|
| for prompt in "${QUICK_TESTS[@]}"; do |
| echo " Q: $prompt" |
| RESP=$(timeout 60 ollama run "$MODEL_NAME" "$prompt" 2>&1 || echo "[TIMEOUT/ERROR]") |
| echo " A: ${RESP:0:200}" |
| echo "" |
| done |
|
|
| |
| echo "[Step 5] λ°λ³΅λ₯ κ²μ¦ (15κ° ν둬ννΈ) ..." |
| python3 scripts/test_ollama_repetition.py --model "$MODEL_NAME" |
|
|
| echo "" |
| echo "==================================================================" |
| echo " λ°°ν¬ μλ£!" |
| echo " μ¬μ©λ²: ollama run $MODEL_NAME" |
| echo "==================================================================" |
|
|