File size: 3,740 Bytes
48ecd01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | #!/usr/bin/env bash
# =============================================================================
# deploy_ollama.sh β FRANKENSTALLM 3B GGUF β Ollama μν΄λ¦ λ°°ν¬
#
# Usage:
# bash scripts/deploy_ollama.sh # κΈ°λ³Έ (Q4_K_M)
# bash scripts/deploy_ollama.sh --quant Q8_0 # Q8_0 μμν
# bash scripts/deploy_ollama.sh --skip_convert # GGUF μ΄λ―Έ μ‘΄μ¬ μ
#
# Pipeline:
# 1. [μ ν] GGUF λ³ν + μμν (convert_3b_gguf.sh)
# 2. Ollama μ€μΉ νμΈ / μλ² μμ
# 3. Modelfile.3bλ‘ λͺ¨λΈ λ±λ‘
# 4. μλ ν
μ€νΈ (5κ° ν둬ννΈ)
# 5. λ°λ³΅λ₯ κ²μ¦ (15κ° ν둬ννΈ)
# =============================================================================
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 "=================================================================="
# ---- Step 1: GGUF λ³ν (νμ μ) ----
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)"
# ---- Step 2: Ollama μ€μΉ νμΈ ----
if ! command -v ollama &>/dev/null; then
echo ""
echo "[Step 2] Ollama λ―Έμ€μΉ β μ€μΉ μ€ ..."
curl -fsSL https://ollama.com/install.sh | sh
fi
# Ollama μλ² μμ
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
# ---- Step 3: λͺ¨λΈ λ±λ‘ ----
echo ""
echo "[Step 3] Ollama λͺ¨λΈ λ±λ‘: $MODEL_NAME"
ollama create "$MODEL_NAME" -f "$MODELFILE"
echo " [OK] λ±λ‘ μλ£"
# ---- Step 4: μλ ν
μ€νΈ ----
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
# ---- Step 5: λ°λ³΅λ₯ κ²μ¦ ----
echo "[Step 5] λ°λ³΅λ₯ κ²μ¦ (15κ° ν둬ννΈ) ..."
python3 scripts/test_ollama_repetition.py --model "$MODEL_NAME"
echo ""
echo "=================================================================="
echo " λ°°ν¬ μλ£!"
echo " μ¬μ©λ²: ollama run $MODEL_NAME"
echo "=================================================================="
|