Tom_Neverwinter icon

LLAMA BENCHMARK v10 [BATCH] 1/04/2026

Tom_Neverwinter | PRO | 01/04/26 05:04:10 AM UTC (Edited) | 0 ⭐ | 3257 👁️ | Never ⏰ | []
text |

11.88 KB

|

None

|

0 👍

/

0 👎

@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

Comments