Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- SETLOCAL ENABLEDELAYEDEXPANSION
- title Llama.cpp Configurable Launcher
- REM =========================================================
- REM GLOBAL DEFAULTS
- REM =========================================================
- set "BASE=%~dp0"
- set "MODELS_DIR=%BASE%models"
- set "EXE_NAME=llama-server.exe"
- REM --- Browser Settings ---
- set BROWSER_DELAY=0
- set AUTO_OPEN_BROWSER=1
- REM --- Hardware Settings (Global) ---
- set PORT=8080
- set HOST=127.0.0.1
- set "GPU_LAYERS=999"
- set "THREADS=8"
- set "PARALLEL_SLOTS=1"
- REM --- Model Keywords ---
- set "KEYWORDS=NSFW Uncensored Amoral Dark Fallen Rivermind Snowpiercer Abyss Erebus Lewd"
- REM =========================================================
- REM SYSTEM STATS
- REM =========================================================
- :GET_STATS
- set "CPU_USAGE=0"
- set "RAM_INFO=0/0"
- set "GPU_NAME=N/A"
- set "GPU_INFO=0/0"
- set "GPU_LOAD=0"
- set "DRIVER_VER=N/A"
- set "CUDA_VER=N/A"
- set "PYTHON_VER=N/A"
- set "LLAMA_VER=N/A"
- REM --- Hardware ---
- for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do if not defined CPU_LOAD set "CPU_LOAD=%%p"
- for /f "skip=1" %%p in ('wmic os get FreePhysicalMemory') do if not defined RAM_FREE set "RAM_FREE=%%p"
- for /f "skip=1" %%p in ('wmic os get TotalVisibleMemorySize') do if not defined RAM_TOTAL set "RAM_TOTAL=%%p"
- set /a RAM_TOTAL_GB=%RAM_TOTAL%/1024/1024
- set /a RAM_USED_GB=(%RAM_TOTAL% - %RAM_FREE%)/1024/1024
- set "RAM_INFO=%RAM_USED_GB%GB / %RAM_TOTAL_GB%GB"
- nvidia-smi --query-gpu=name,utilization.gpu,memory.used,memory.total,driver_version --format=csv,noheader,nounits > "%BASE%gpu.tmp" 2>nul
- if %errorlevel%==0 (
- for /f "tokens=1,2,3,4,5 delims=," %%a in ('type "%BASE%gpu.tmp"') do (
- set "GPU_NAME=%%a"
- set "GPU_LOAD=%%b"
- set "GPU_INFO=%%cMB / %%dMB"
- set "DRIVER_VER=%%e"
- )
- del "%BASE%gpu.tmp"
- nvidia-smi | findstr /C:"CUDA Version" > "%BASE%cuda.tmp"
- set /p CUDA_RAW=<"%BASE%cuda.tmp"
- for /f "tokens=9" %%x in ("!CUDA_RAW!") do set "CUDA_VER=%%x"
- del "%BASE%cuda.tmp"
- )
- REM --- Software ---
- python --version > "%BASE%py.tmp" 2>&1
- set /p PY_RAW=<"%BASE%py.tmp"
- if not "%PY_RAW%"=="" set "PYTHON_VER=%PY_RAW%"
- del "%BASE%py.tmp"
- if exist "%BASE%%EXE_NAME%" (
- "%BASE%%EXE_NAME%" --version 2>&1 | findstr "build:" > "%BASE%llama.tmp"
- set /p LLAMA_RAW=<"%BASE%llama.tmp"
- if not "!LLAMA_RAW!"=="" set "LLAMA_VER=!LLAMA_RAW!"
- del "%BASE%llama.tmp"
- )
- REM =========================================================
- REM MAIN MENU
- REM =========================================================
- :MAIN_MENU
- cls
- echo ========================================================
- echo SYSTEM DASHBOARD
- echo ========================================================
- echo HARDWARE:
- echo CPU: %CPU_LOAD%%% Load RAM: %RAM_INFO%
- echo GPU: %GPU_NAME%
- echo MEM: %GPU_INFO% Load: %GPU_LOAD%%%
- echo.
- echo SOFTWARE:
- echo Llama: %LLAMA_VER%
- echo Python: %PYTHON_VER%
- echo NVIDIA: Driver %DRIVER_VER% / CUDA %CUDA_VER%
- echo ========================================================
- echo.
- echo [1] Select Model and Launch
- echo [2] Refresh Stats
- echo [3] Edit Configuration
- echo [4] Exit
- echo.
- echo ========================================================
- set /p "CHOICE=Enter selection (1-4): "
- if "%CHOICE%"=="1" goto :MODEL_SELECT
- if "%CHOICE%"=="2" goto :GET_STATS
- if "%CHOICE%"=="3" goto :EDIT_CONFIG
- if "%CHOICE%"=="4" exit
- goto :MAIN_MENU
- REM =========================================================
- REM MODEL SELECTION
- REM =========================================================
- :MODEL_SELECT
- cls
- echo ========================================================
- echo AVAILABLE MODELS
- echo ========================================================
- echo Scanning...
- echo.
- set idx=0
- set unc_count=0
- set std_count=0
- for /f "tokens=1 delims==" %%v in ('set f_path[ 2^>nul') do set "%%v="
- for /f "tokens=1 delims==" %%v in ('set f_name[ 2^>nul') do set "%%v="
- if not exist "%MODELS_DIR%" mkdir "%MODELS_DIR%"
- for %%f in ("%MODELS_DIR%\*.gguf") do (
- set "fname=%%~nxf"
- set "fpath=%%f"
- set "is_unc=0"
- echo !fname! | findstr /I "%KEYWORDS%" >nul
- if !errorlevel! EQU 0 set "is_unc=1"
- if !is_unc! EQU 1 (
- set /a unc_count+=1
- set "unc_n[!unc_count!]=!fname!"
- set "unc_p[!unc_count!]=!fpath!"
- ) else (
- set /a std_count+=1
- set "std_n[!std_count!]=!fname!"
- set "std_p[!std_count!]=!fpath!"
- )
- )
- if %unc_count% EQU 0 if %std_count% EQU 0 (
- echo No models found. & pause & goto :MAIN_MENU
- )
- if %unc_count% GTR 0 (
- echo --- SPECIALIZED / UNCENSORED ---
- for /L %%i in (1,1,%unc_count%) do (
- set /a idx+=1
- set "f_name[!idx!]=!unc_n[%%i]!"
- set "f_path[!idx!]=!unc_p[%%i]!"
- echo [!idx!] !unc_n[%%i]!
- )
- echo.
- )
- if %std_count% GTR 0 (
- echo --- STANDARD / GENERAL ---
- for /L %%i in (1,1,%std_count%) do (
- set /a idx+=1
- set "f_name[!idx!]=!std_n[%%i]!"
- set "f_path[!idx!]=!std_p[%%i]!"
- echo [!idx!] !std_n[%%i]!
- )
- )
- echo.
- echo ========================================================
- set /p "M_SEL=Select model (1-%idx%): "
- if "%M_SEL%"=="" goto :MODEL_SELECT
- if %M_SEL% GTR %idx% goto :MODEL_SELECT
- if %M_SEL% LSS 1 goto :MODEL_SELECT
- set "SEL_PATH=!f_path[%M_SEL%]!"
- set "SEL_NAME=!f_name[%M_SEL%]!"
- REM =========================================================
- REM CHECK FOR SAVED CONFIG
- REM =========================================================
- :CHECK_CONFIG
- set "CONFIG_FILE=%SEL_PATH%.llama_config.bat"
- if exist "%CONFIG_FILE%" (
- call "%CONFIG_FILE%"
- goto :AUTO_LAUNCH_COUNTDOWN
- )
- goto :MANUAL_SETUP
- REM =========================================================
- REM AUTO LAUNCH COUNTDOWN
- REM =========================================================
- :AUTO_LAUNCH_COUNTDOWN
- cls
- echo ========================================================
- echo SAVED CONFIG LOADED
- echo ========================================================
- echo Model: %SEL_NAME%
- echo Template: %CFG_TEMPLATE_NAME%
- echo Context: %CFG_CONTEXT%
- echo Vision: %CFG_VISION_NAME%
- echo ========================================================
- echo.
- echo Launching in 3 seconds...
- echo.
- echo [ Press 'E' to Edit/Reset settings ]
- echo [ Press 'SPACE' to Launch immediately ]
- echo.
- REM Choice command to handle key input with timeout
- choice /C E /T 3 /D E /N >nul 2>&1
- if %errorlevel%==1 goto :RESET_CONFIG
- REM If timeout (which defaults to E choice in batch workaround, logic below fixes flow)
- REM Actually, choice /T 3 /D Y (wait 3s, default Y).
- REM We use a simpler method: timeout allowing keypress
- timeout /t 3
- goto :LAUNCH_WITH_CONFIG
- :RESET_CONFIG
- cls
- echo Resetting configuration for this model...
- del "%CONFIG_FILE%"
- goto :MANUAL_SETUP
- :LAUNCH_WITH_CONFIG
- REM Map the CFG variables to runtime variables
- set "CONTEXT_SIZE=%CFG_CONTEXT%"
- set "TEMPLATE_FLAG=%CFG_TEMPLATE_FLAG%"
- set "MMPROJ_FLAG=%CFG_MMPROJ_FLAG%"
- set "FLASH_ATTN_FLAG="
- if "%CFG_FLASH_ATTN%"=="1" set "FLASH_ATTN_FLAG=-fa"
- goto :LAUNCH
- REM =========================================================
- REM MANUAL SETUP WIZARD
- REM =========================================================
- :MANUAL_SETUP
- REM --- 1. Vision ---
- cls
- echo [SETUP 1/3] Vision / Multimodal
- echo --------------------------------
- echo Does %SEL_NAME% need a projector file?
- echo.
- echo [1] No (Standard)
- echo [2] Yes (Select mmproj file)
- echo.
- set /p "V_CHOICE=Select (1-2): "
- set "MMPROJ_FLAG="
- set "CFG_VISION_NAME=None"
- if "%V_CHOICE%"=="2" (
- cls
- echo Scanning for *mmproj*...
- set v_idx=0
- for /f "tokens=1 delims==" %%v in ('set v_path[ 2^>nul') do set "%%v="
- for %%f in ("%MODELS_DIR%\*mmproj*.gguf") do (
- set /a v_idx+=1
- set "v_path[!v_idx!]=%%f"
- echo [!v_idx!] %%~nxf
- )
- if !v_idx!==0 (
- echo No mmproj files found. Skipping.
- timeout /t 2 >nul
- ) else (
- echo.
- set /p "PROJ_SEL=Select file: "
- if defined v_path[!PROJ_SEL!] (
- set "MMPROJ_FLAG=--mmproj "!v_path[%PROJ_SEL%]!""
- set "CFG_VISION_NAME=Active"
- )
- )
- )
- REM --- 2. Template ---
- cls
- echo [SETUP 2/3] Chat Template
- echo --------------------------------
- echo [1] Auto-Detect (Standard)
- echo [2] ChatML (Alice, Uncensored, Dolphin)
- echo [3] Llama 3 (Meta Llama 3)
- echo [4] Mistral (Mistral v0.1/0.3)
- echo [5] Alpaca (Older Merges)
- echo.
- set /p "T_SEL=Select (1-5): "
- set "TEMPLATE_FLAG="
- set "CFG_TEMPLATE_NAME=Auto"
- if "%T_SEL%"=="2" (set "TEMPLATE_FLAG=--chat-template chatml" & set "CFG_TEMPLATE_NAME=ChatML")
- if "%T_SEL%"=="3" (set "TEMPLATE_FLAG=--chat-template llama3" & set "CFG_TEMPLATE_NAME=Llama3")
- if "%T_SEL%"=="4" (set "TEMPLATE_FLAG=--chat-template mistral" & set "CFG_TEMPLATE_NAME=Mistral")
- if "%T_SEL%"=="5" (set "TEMPLATE_FLAG=--chat-template alpaca" & set "CFG_TEMPLATE_NAME=Alpaca")
- REM --- 3. Context Size ---
- cls
- echo [SETUP 3/3] Context Size (Memory)
- echo --------------------------------
- echo [1] 8192 (Standard - Best for Q4/Q5 models)
- echo [2] 4096 (Rescue Mode - Use if Q6/Q8 models crash/slow)
- echo [3] 16384 (High - Needs lots of VRAM)
- echo.
- set /p "C_SEL=Select (1-3): "
- set "CONTEXT_SIZE=8192"
- if "%C_SEL%"=="2" set "CONTEXT_SIZE=4096"
- if "%C_SEL%"=="3" set "CONTEXT_SIZE=16384"
- REM --- 4. Performance ---
- cls
- echo [SETUP 4/4] Performance
- echo --------------------------------
- echo Enable Flash Attention? (Greatly improves speed on modern GPUs)
- echo.
- echo [1] Yes (Default)
- echo [2] No (If you experience crashes)
- echo.
- set /p "P_SEL=Select (1-2): "
- set "CFG_FLASH_ATTN=1"
- if "%P_SEL%"=="2" set "CFG_FLASH_ATTN=0"
- REM --- SAVE CONFIG? ---
- cls
- echo ========================================================
- echo CONFIGURATION READY
- echo ========================================================
- echo Model: %SEL_NAME%
- echo Template: %CFG_TEMPLATE_NAME%
- echo Context: %CONTEXT_SIZE%
- echo Vision: %CFG_VISION_NAME%
- echo ========================================================
- echo.
- set /p "SAVE_CONF=Save as default for this model? (Y/N): "
- if /I "%SAVE_CONF%"=="Y" (
- (
- echo set "CFG_CONTEXT=%CONTEXT_SIZE%"
- echo set "CFG_TEMPLATE_FLAG=%TEMPLATE_FLAG%"
- echo set "CFG_TEMPLATE_NAME=%CFG_TEMPLATE_NAME%"
- echo set "CFG_MMPROJ_FLAG=%MMPROJ_FLAG%"
- echo set "CFG_VISION_NAME=%CFG_VISION_NAME%"
- echo set "CFG_FLASH_ATTN=%CFG_FLASH_ATTN%"
- ) > "%CONFIG_FILE%"
- echo Config saved!
- )
- set "FLASH_ATTN_FLAG="
- if "%CFG_FLASH_ATTN%"=="1" set "FLASH_ATTN_FLAG=-fa"
- goto :LAUNCH
- REM =========================================================
- REM LAUNCH
- REM =========================================================
- :LAUNCH
- cls
- echo ========================================================
- echo Launching...
- echo Model: %SEL_NAME%
- echo Mode: %CONTEXT_SIZE% Context / %CFG_TEMPLATE_NAME%
- echo ========================================================
- echo.
- if %AUTO_OPEN_BROWSER%==1 (
- if %BROWSER_DELAY% GTR 0 (
- echo Opening browser in %BROWSER_DELAY%s...
- timeout /t %BROWSER_DELAY% /nobreak >nul
- )
- REM Attempt to wait for port (simple wait)
- timeout /t 2 /nobreak >nul
- start http://%HOST%:%PORT%
- )
- "%BASE%%EXE_NAME%" ^
- -m "%SEL_PATH%" ^
- --host %HOST% ^
- --port %PORT% ^
- -c %CONTEXT_SIZE% ^
- -ngl %GPU_LAYERS% ^
- -t %THREADS% ^
- -np %PARALLEL_SLOTS% ^
- %TEMPLATE_FLAG% ^
- %MMPROJ_FLAG% ^
- %FLASH_ATTN_FLAG%
- echo.
- echo Server closed.
- pause
- goto :GET_STATS
- :EDIT_CONFIG
- cls
- echo.
- echo Please right-click this batch file and select "Edit".
- echo.
- pause
- goto :GET_STATS
Advertisement
Add Comment
Please, Sign In to add comment