게시판SGF 기보로 학습하는 바둑 LLM 인공지능예제 소스

예제 소스

SGF 기보로 학습하는 바둑 LLM 인공지능 · 파일 169개

install_mariago_launchd.sh

#!/usr/bin/env bash
# MariaGO 데몬을 launchd에 등록 — Cursor/터미널 없이도 터널·외부점검 유지
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
UID_NUM="$(id -u)"
GUI="gui/$UID_NUM"
LA_DIR="$HOME/Library/LaunchAgents"
SUPPORT="$HOME/Library/Application Support/MariGO"
LOGS="$HOME/Library/Logs/MariGO"

PY="$ROOT/.venv/bin/python"
if [[ ! -x "$PY" ]]; then
  echo "venv python not found: $PY" >&2
  exit 1
fi

mkdir -p "$LA_DIR" "$SUPPORT" "$LOGS" "$ROOT/logs/mariago_launchd"

write_wrapper() {
  local name="$1"
  shift
  local script="$SUPPORT/$name.sh"
  local log="$LOGS/${name}.log"
  cat >"$script" <<EOF
#!/bin/zsh
set -euo pipefail
ROOT="$ROOT"
PY="$PY"
LOG="$log"
PATH_EXTRA="$HOME/.nvm/versions/node/v24.14.1/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

until [[ -d "\$ROOT" ]]; do
  echo "\$(date '+%Y-%m-%d %H:%M:%S') waiting for \$ROOT" >>"\$LOG"
  sleep 30
done
mkdir -p "\$(dirname "\$LOG")"

cd "\$ROOT"
export PYTHONUNBUFFERED=1
export HF_HOME="\$ROOT/vlm_models"
export HF_HUB_CACHE="\$ROOT/vlm_models"
export TOKENIZERS_PARALLELISM=false
export PATH="\$PATH_EXTRA"
exec "\$PY" $* >>"\$LOG" 2>&1
EOF
  chmod +x "$script"
  echo "wrote $script"
}

write_plist() {
  local label="$1"
  local script="$2"
  local out="$LA_DIR/$label.plist"

  cat >"$out" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>${label}</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/zsh</string>
    <string>${script}</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <true/>
  <key>ThrottleInterval</key>
  <integer>15</integer>
  <key>StandardOutPath</key>
  <string>${LOGS}/${label#com.mariago.}.stdout.log</string>
  <key>StandardErrorPath</key>
  <string>${LOGS}/${label#com.mariago.}.stderr.log</string>
</dict>
</plist>
EOF
  echo "wrote $out"
}

stop_label() {
  local label="$1"
  launchctl bootout "$GUI" "$LA_DIR/$label.plist" 2>/dev/null || true
}

start_label() {
  local label="$1"
  launchctl bootstrap "$GUI" "$LA_DIR/$label.plist"
  launchctl enable "$GUI/$label" 2>/dev/null || true
}

echo "== MariaGO launchd install =="
echo "ROOT=$ROOT"
echo "PY=$PY"

# 수동/Cursor 실행 중복 방지
pkill -f 'daemon_ssh_reverse_tunnel.py' 2>/dev/null || true
pkill -f 'daemon_mariago_external_probe.py' 2>/dev/null || true
sleep 2

write_wrapper run-tunnel-watchdog scripts/daemon_ssh_reverse_tunnel.py
write_wrapper run-external-probe scripts/daemon_mariago_external_probe.py --interval 30 --recover
write_wrapper run-vlm-serve -m vlm_server serve --host 127.0.0.1 --port 9319 --model vlm_models/Qwen__Qwen3-VL-8B-Instruct --lora-dir vlm_models/lora_mix_qwen_r5 --text-only-move --board-repr aligned --score-guided --score-min-line 3 --illegal-retry-max 16 --illegal-retry-budget-s 240 --log-jsonl logs/vlm_eval_day/play_r5.jsonl
write_wrapper run-web-watchdog scripts/daemon_mariago_web_watchdog.py

write_plist com.mariago.tunnel-watchdog "$SUPPORT/run-tunnel-watchdog.sh"
write_plist com.mariago.external-probe "$SUPPORT/run-external-probe.sh"
write_plist com.mariago.vlm-serve "$SUPPORT/run-vlm-serve.sh"
write_plist com.mariago.web-watchdog "$SUPPORT/run-web-watchdog.sh"

# 수동/Cursor 중복 워치독 정리
pkill -f 'daemon_mariago_web_watchdog.py' 2>/dev/null || true

for label in com.mariago.tunnel-watchdog com.mariago.external-probe com.mariago.vlm-serve com.mariago.web-watchdog; do
  stop_label "$label"
  start_label "$label"
done

sleep 4
echo ""
echo "== launchd status =="
for label in com.mariago.tunnel-watchdog com.mariago.external-probe com.mariago.vlm-serve com.mariago.web-watchdog; do
  launchctl print "$GUI/$label" 2>/dev/null | grep -E 'state =|pid =|last exit code' || echo "$label: not loaded"
done
echo ""
pgrep -fl 'daemon_ssh_reverse_tunnel|daemon_mariago_external_probe|daemon_mariago_web_watchdog|vlm_server serve|ssh -N.*ethtrade' || true
echo ""
echo "launchd 로그: ~/Library/Logs/MariGO/"
echo "상태: logs/mariago_ssh_tunnel/HEARTBEAT.md"
echo "      logs/mariago_external_probe/HEARTBEAT.md"
echo "      logs/mariago_web_watch/HEARTBEAT.md"