검은 터미널 창을 벗어나 한눈에 모니터링하는 VRAM/RAM 실시간 텔레메트리 및 원클릭 프로세스 제어 센터
포트: localhost:11434
활성 모델: hermes3:8b (대기 1분 후 자동 언로드 설정 적용)
포트: localhost:8188
파이프라인: FLUX GGUF / LTX-Video (--lowvram 모드)
대상: 기출필기 / 기출실기 / 이론 3대 핵심 파일
벡터 서고: C:\ai_workspace\chroma_db
이 웹 대시보드가 실제 윈도우의 VRAM, RAM, CPU 사용률을 읽어오고 버튼 클릭 시 Ollama/ComfyUI 프로세스를 직접 제어할 수 있도록 해주는 초경량 FastAPI 백엔드 스크립트(dashboard_server.py)입니다.
python -m pip install fastapi uvicorn psutil
python C:\ai_workspace\dashboard_server.py
실행 후 브라우저에서 page6_dashboard_webui.php을 열면 3초마다 실제 PC의 하드웨어 수치가 실시간 동기화됩니다.
C:\ai_workspace\dashboard_server.py)import psutil
import subprocess
import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import torch
app = FastAPI(title="Local AI Workspace Dashboard")
# 웹 UI 브라우저 접근 허용 (CORS 활성화)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"]
)
@app.get("/api/telemetry")
def get_telemetry():
# GPU VRAM 수치 계측
vram_used = 0.0
vram_total = 12.0
if torch.cuda.is_available():
vram_used = round(torch.cuda.memory_allocated(0) / (1024**3), 2)
# 시스템 RAM 및 CPU 수치 계측
ram = psutil.virtual_memory()
ram_used = round(ram.used / (1024**3), 2)
ram_total = round(ram.total / (1024**3), 2)
return {
"vram_used": vram_used,
"vram_total": vram_total,
"vram_pct": round((vram_used / vram_total) * 100, 1),
"ram_used": ram_used,
"ram_total": ram_total,
"ram_pct": ram.percent,
"cpu_pct": psutil.cpu_percent()
}
@app.post("/api/service/{name}/{action}")
def control_service(name: str, action: str):
if name == "ollama" and action == "stop":
subprocess.run(["ollama", "stop", "hermes3:8b"], shell=True)
subprocess.run(["ollama", "stop", "student"], shell=True)
elif name == "comfyui" and action == "stop":
# ComfyUI 프로세스 종료 처리 예시
subprocess.run(["taskkill", "/F", "/IM", "python.exe", "/T"], shell=True)
return {"status": "success", "service": name, "action": action}
if __name__ == "__main__":
print("[*] Local AI Dashboard API Server listening on http://127.0.0.1:8000")
uvicorn.run(app, host="127.0.0.1", port=8000)