Tom_Neverwinter

LLAMA BENCHMARK v10 [BATCH] 1/04/2026

Dec 22nd, 2025 (edited)
3,302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.88 KB | None | 0 0
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. title Llama.cpp Configurable Launcher
  4.  
  5. REM =========================================================
  6. REM GLOBAL DEFAULTS
  7. REM =========================================================
  8.  
  9. set "BASE=%~dp0"
  10. set "MODELS_DIR=%BASE%models"
  11. set "EXE_NAME=llama-server.exe"
  12.  
  13. REM --- Browser Settings ---
  14. set BROWSER_DELAY=0
  15. set AUTO_OPEN_BROWSER=1
  16.  
  17. REM --- Hardware Settings (Global) ---
  18. set PORT=8080
  19. set HOST=127.0.0.1
  20. set "GPU_LAYERS=999"
  21. set "THREADS=8"
  22. set "PARALLEL_SLOTS=1"
  23.  
  24. REM --- Model Keywords ---
  25. set "KEYWORDS=NSFW Uncensored Amoral Dark Fallen Rivermind Snowpiercer Abyss Erebus Lewd"
  26.  
  27. REM =========================================================
  28. REM SYSTEM STATS
  29. REM =========================================================
  30. :GET_STATS
  31. set "CPU_USAGE=0"
  32. set "RAM_INFO=0/0"
  33. set "GPU_NAME=N/A"
  34. set "GPU_INFO=0/0"
  35. set "GPU_LOAD=0"
  36. set "DRIVER_VER=N/A"
  37. set "CUDA_VER=N/A"
  38. set "PYTHON_VER=N/A"
  39. set "LLAMA_VER=N/A"
  40.  
  41. REM --- Hardware ---
  42. for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do if not defined CPU_LOAD set "CPU_LOAD=%%p"
  43. for /f "skip=1" %%p in ('wmic os get FreePhysicalMemory') do if not defined RAM_FREE set "RAM_FREE=%%p"
  44. for /f "skip=1" %%p in ('wmic os get TotalVisibleMemorySize') do if not defined RAM_TOTAL set "RAM_TOTAL=%%p"
  45. set /a RAM_TOTAL_GB=%RAM_TOTAL%/1024/1024
  46. set /a RAM_USED_GB=(%RAM_TOTAL% - %RAM_FREE%)/1024/1024
  47. set "RAM_INFO=%RAM_USED_GB%GB / %RAM_TOTAL_GB%GB"
  48.  
  49. nvidia-smi --query-gpu=name,utilization.gpu,memory.used,memory.total,driver_version --format=csv,noheader,nounits > "%BASE%gpu.tmp" 2>nul
  50. if %errorlevel%==0 (
  51. for /f "tokens=1,2,3,4,5 delims=," %%a in ('type "%BASE%gpu.tmp"') do (
  52. set "GPU_NAME=%%a"
  53. set "GPU_LOAD=%%b"
  54. set "GPU_INFO=%%cMB / %%dMB"
  55. set "DRIVER_VER=%%e"
  56. )
  57. del "%BASE%gpu.tmp"
  58. nvidia-smi | findstr /C:"CUDA Version" > "%BASE%cuda.tmp"
  59. set /p CUDA_RAW=<"%BASE%cuda.tmp"
  60. for /f "tokens=9" %%x in ("!CUDA_RAW!") do set "CUDA_VER=%%x"
  61. del "%BASE%cuda.tmp"
  62. )
  63.  
  64. REM --- Software ---
  65. python --version > "%BASE%py.tmp" 2>&1
  66. set /p PY_RAW=<"%BASE%py.tmp"
  67. if not "%PY_RAW%"=="" set "PYTHON_VER=%PY_RAW%"
  68. del "%BASE%py.tmp"
  69.  
  70. if exist "%BASE%%EXE_NAME%" (
  71. "%BASE%%EXE_NAME%" --version 2>&1 | findstr "build:" > "%BASE%llama.tmp"
  72. set /p LLAMA_RAW=<"%BASE%llama.tmp"
  73. if not "!LLAMA_RAW!"=="" set "LLAMA_VER=!LLAMA_RAW!"
  74. del "%BASE%llama.tmp"
  75. )
  76.  
  77. REM =========================================================
  78. REM MAIN MENU
  79. REM =========================================================
  80. :MAIN_MENU
  81. cls
  82. echo ========================================================
  83. echo SYSTEM DASHBOARD
  84. echo ========================================================
  85. echo HARDWARE:
  86. echo CPU: %CPU_LOAD%%% Load RAM: %RAM_INFO%
  87. echo GPU: %GPU_NAME%
  88. echo MEM: %GPU_INFO% Load: %GPU_LOAD%%%
  89. echo.
  90. echo SOFTWARE:
  91. echo Llama: %LLAMA_VER%
  92. echo Python: %PYTHON_VER%
  93. echo NVIDIA: Driver %DRIVER_VER% / CUDA %CUDA_VER%
  94. echo ========================================================
  95. echo.
  96. echo [1] Select Model and Launch
  97. echo [2] Refresh Stats
  98. echo [3] Edit Configuration
  99. echo [4] Exit
  100. echo.
  101. echo ========================================================
  102. set /p "CHOICE=Enter selection (1-4): "
  103.  
  104. if "%CHOICE%"=="1" goto :MODEL_SELECT
  105. if "%CHOICE%"=="2" goto :GET_STATS
  106. if "%CHOICE%"=="3" goto :EDIT_CONFIG
  107. if "%CHOICE%"=="4" exit
  108. goto :MAIN_MENU
  109.  
  110. REM =========================================================
  111. REM MODEL SELECTION
  112. REM =========================================================
  113. :MODEL_SELECT
  114. cls
  115. echo ========================================================
  116. echo AVAILABLE MODELS
  117. echo ========================================================
  118. echo Scanning...
  119. echo.
  120.  
  121. set idx=0
  122. set unc_count=0
  123. set std_count=0
  124.  
  125. for /f "tokens=1 delims==" %%v in ('set f_path[ 2^>nul') do set "%%v="
  126. for /f "tokens=1 delims==" %%v in ('set f_name[ 2^>nul') do set "%%v="
  127.  
  128. if not exist "%MODELS_DIR%" mkdir "%MODELS_DIR%"
  129.  
  130. for %%f in ("%MODELS_DIR%\*.gguf") do (
  131. set "fname=%%~nxf"
  132. set "fpath=%%f"
  133. set "is_unc=0"
  134. echo !fname! | findstr /I "%KEYWORDS%" >nul
  135. if !errorlevel! EQU 0 set "is_unc=1"
  136. if !is_unc! EQU 1 (
  137. set /a unc_count+=1
  138. set "unc_n[!unc_count!]=!fname!"
  139. set "unc_p[!unc_count!]=!fpath!"
  140. ) else (
  141. set /a std_count+=1
  142. set "std_n[!std_count!]=!fname!"
  143. set "std_p[!std_count!]=!fpath!"
  144. )
  145. )
  146.  
  147. if %unc_count% EQU 0 if %std_count% EQU 0 (
  148. echo No models found. & pause & goto :MAIN_MENU
  149. )
  150.  
  151. if %unc_count% GTR 0 (
  152. echo --- SPECIALIZED / UNCENSORED ---
  153. for /L %%i in (1,1,%unc_count%) do (
  154. set /a idx+=1
  155. set "f_name[!idx!]=!unc_n[%%i]!"
  156. set "f_path[!idx!]=!unc_p[%%i]!"
  157. echo [!idx!] !unc_n[%%i]!
  158. )
  159. echo.
  160. )
  161.  
  162. if %std_count% GTR 0 (
  163. echo --- STANDARD / GENERAL ---
  164. for /L %%i in (1,1,%std_count%) do (
  165. set /a idx+=1
  166. set "f_name[!idx!]=!std_n[%%i]!"
  167. set "f_path[!idx!]=!std_p[%%i]!"
  168. echo [!idx!] !std_n[%%i]!
  169. )
  170. )
  171.  
  172. echo.
  173. echo ========================================================
  174. set /p "M_SEL=Select model (1-%idx%): "
  175. if "%M_SEL%"=="" goto :MODEL_SELECT
  176. if %M_SEL% GTR %idx% goto :MODEL_SELECT
  177. if %M_SEL% LSS 1 goto :MODEL_SELECT
  178. set "SEL_PATH=!f_path[%M_SEL%]!"
  179. set "SEL_NAME=!f_name[%M_SEL%]!"
  180.  
  181. REM =========================================================
  182. REM CHECK FOR SAVED CONFIG
  183. REM =========================================================
  184. :CHECK_CONFIG
  185. set "CONFIG_FILE=%SEL_PATH%.llama_config.bat"
  186.  
  187. if exist "%CONFIG_FILE%" (
  188. call "%CONFIG_FILE%"
  189. goto :AUTO_LAUNCH_COUNTDOWN
  190. )
  191. goto :MANUAL_SETUP
  192.  
  193. REM =========================================================
  194. REM AUTO LAUNCH COUNTDOWN
  195. REM =========================================================
  196. :AUTO_LAUNCH_COUNTDOWN
  197. cls
  198. echo ========================================================
  199. echo SAVED CONFIG LOADED
  200. echo ========================================================
  201. echo Model: %SEL_NAME%
  202. echo Template: %CFG_TEMPLATE_NAME%
  203. echo Context: %CFG_CONTEXT%
  204. echo Vision: %CFG_VISION_NAME%
  205. echo ========================================================
  206. echo.
  207. echo Launching in 3 seconds...
  208. echo.
  209. echo [ Press 'E' to Edit/Reset settings ]
  210. echo [ Press 'SPACE' to Launch immediately ]
  211. echo.
  212.  
  213. REM Choice command to handle key input with timeout
  214. choice /C E /T 3 /D E /N >nul 2>&1
  215. if %errorlevel%==1 goto :RESET_CONFIG
  216. REM If timeout (which defaults to E choice in batch workaround, logic below fixes flow)
  217.  
  218. REM Actually, choice /T 3 /D Y (wait 3s, default Y).
  219. REM We use a simpler method: timeout allowing keypress
  220. timeout /t 3
  221. goto :LAUNCH_WITH_CONFIG
  222.  
  223. :RESET_CONFIG
  224. cls
  225. echo Resetting configuration for this model...
  226. del "%CONFIG_FILE%"
  227. goto :MANUAL_SETUP
  228.  
  229. :LAUNCH_WITH_CONFIG
  230. REM Map the CFG variables to runtime variables
  231. set "CONTEXT_SIZE=%CFG_CONTEXT%"
  232. set "TEMPLATE_FLAG=%CFG_TEMPLATE_FLAG%"
  233. set "MMPROJ_FLAG=%CFG_MMPROJ_FLAG%"
  234. set "FLASH_ATTN_FLAG="
  235. if "%CFG_FLASH_ATTN%"=="1" set "FLASH_ATTN_FLAG=-fa"
  236. goto :LAUNCH
  237.  
  238. REM =========================================================
  239. REM MANUAL SETUP WIZARD
  240. REM =========================================================
  241. :MANUAL_SETUP
  242. REM --- 1. Vision ---
  243. cls
  244. echo [SETUP 1/3] Vision / Multimodal
  245. echo --------------------------------
  246. echo Does %SEL_NAME% need a projector file?
  247. echo.
  248. echo [1] No (Standard)
  249. echo [2] Yes (Select mmproj file)
  250. echo.
  251. set /p "V_CHOICE=Select (1-2): "
  252. set "MMPROJ_FLAG="
  253. set "CFG_VISION_NAME=None"
  254.  
  255. if "%V_CHOICE%"=="2" (
  256. cls
  257. echo Scanning for *mmproj*...
  258. set v_idx=0
  259. for /f "tokens=1 delims==" %%v in ('set v_path[ 2^>nul') do set "%%v="
  260. for %%f in ("%MODELS_DIR%\*mmproj*.gguf") do (
  261. set /a v_idx+=1
  262. set "v_path[!v_idx!]=%%f"
  263. echo [!v_idx!] %%~nxf
  264. )
  265. if !v_idx!==0 (
  266. echo No mmproj files found. Skipping.
  267. timeout /t 2 >nul
  268. ) else (
  269. echo.
  270. set /p "PROJ_SEL=Select file: "
  271. if defined v_path[!PROJ_SEL!] (
  272. set "MMPROJ_FLAG=--mmproj "!v_path[%PROJ_SEL%]!""
  273. set "CFG_VISION_NAME=Active"
  274. )
  275. )
  276. )
  277.  
  278. REM --- 2. Template ---
  279. cls
  280. echo [SETUP 2/3] Chat Template
  281. echo --------------------------------
  282. echo [1] Auto-Detect (Standard)
  283. echo [2] ChatML (Alice, Uncensored, Dolphin)
  284. echo [3] Llama 3 (Meta Llama 3)
  285. echo [4] Mistral (Mistral v0.1/0.3)
  286. echo [5] Alpaca (Older Merges)
  287. echo.
  288. set /p "T_SEL=Select (1-5): "
  289. set "TEMPLATE_FLAG="
  290. set "CFG_TEMPLATE_NAME=Auto"
  291. if "%T_SEL%"=="2" (set "TEMPLATE_FLAG=--chat-template chatml" & set "CFG_TEMPLATE_NAME=ChatML")
  292. if "%T_SEL%"=="3" (set "TEMPLATE_FLAG=--chat-template llama3" & set "CFG_TEMPLATE_NAME=Llama3")
  293. if "%T_SEL%"=="4" (set "TEMPLATE_FLAG=--chat-template mistral" & set "CFG_TEMPLATE_NAME=Mistral")
  294. if "%T_SEL%"=="5" (set "TEMPLATE_FLAG=--chat-template alpaca" & set "CFG_TEMPLATE_NAME=Alpaca")
  295.  
  296. REM --- 3. Context Size ---
  297. cls
  298. echo [SETUP 3/3] Context Size (Memory)
  299. echo --------------------------------
  300. echo [1] 8192 (Standard - Best for Q4/Q5 models)
  301. echo [2] 4096 (Rescue Mode - Use if Q6/Q8 models crash/slow)
  302. echo [3] 16384 (High - Needs lots of VRAM)
  303. echo.
  304. set /p "C_SEL=Select (1-3): "
  305. set "CONTEXT_SIZE=8192"
  306. if "%C_SEL%"=="2" set "CONTEXT_SIZE=4096"
  307. if "%C_SEL%"=="3" set "CONTEXT_SIZE=16384"
  308.  
  309. REM --- 4. Performance ---
  310. cls
  311. echo [SETUP 4/4] Performance
  312. echo --------------------------------
  313. echo Enable Flash Attention? (Greatly improves speed on modern GPUs)
  314. echo.
  315. echo [1] Yes (Default)
  316. echo [2] No (If you experience crashes)
  317. echo.
  318. set /p "P_SEL=Select (1-2): "
  319. set "CFG_FLASH_ATTN=1"
  320. if "%P_SEL%"=="2" set "CFG_FLASH_ATTN=0"
  321.  
  322. REM --- SAVE CONFIG? ---
  323. cls
  324. echo ========================================================
  325. echo CONFIGURATION READY
  326. echo ========================================================
  327. echo Model: %SEL_NAME%
  328. echo Template: %CFG_TEMPLATE_NAME%
  329. echo Context: %CONTEXT_SIZE%
  330. echo Vision: %CFG_VISION_NAME%
  331. echo ========================================================
  332. echo.
  333. set /p "SAVE_CONF=Save as default for this model? (Y/N): "
  334. if /I "%SAVE_CONF%"=="Y" (
  335. (
  336. echo set "CFG_CONTEXT=%CONTEXT_SIZE%"
  337. echo set "CFG_TEMPLATE_FLAG=%TEMPLATE_FLAG%"
  338. echo set "CFG_TEMPLATE_NAME=%CFG_TEMPLATE_NAME%"
  339. echo set "CFG_MMPROJ_FLAG=%MMPROJ_FLAG%"
  340. echo set "CFG_VISION_NAME=%CFG_VISION_NAME%"
  341. echo set "CFG_FLASH_ATTN=%CFG_FLASH_ATTN%"
  342. ) > "%CONFIG_FILE%"
  343. echo Config saved!
  344. )
  345.  
  346. set "FLASH_ATTN_FLAG="
  347. if "%CFG_FLASH_ATTN%"=="1" set "FLASH_ATTN_FLAG=-fa"
  348.  
  349. goto :LAUNCH
  350.  
  351. REM =========================================================
  352. REM LAUNCH
  353. REM =========================================================
  354. :LAUNCH
  355. cls
  356. echo ========================================================
  357. echo Launching...
  358. echo Model: %SEL_NAME%
  359. echo Mode: %CONTEXT_SIZE% Context / %CFG_TEMPLATE_NAME%
  360. echo ========================================================
  361. echo.
  362.  
  363. if %AUTO_OPEN_BROWSER%==1 (
  364. if %BROWSER_DELAY% GTR 0 (
  365. echo Opening browser in %BROWSER_DELAY%s...
  366. timeout /t %BROWSER_DELAY% /nobreak >nul
  367. )
  368. REM Attempt to wait for port (simple wait)
  369. timeout /t 2 /nobreak >nul
  370. start http://%HOST%:%PORT%
  371. )
  372.  
  373. "%BASE%%EXE_NAME%" ^
  374. -m "%SEL_PATH%" ^
  375. --host %HOST% ^
  376. --port %PORT% ^
  377. -c %CONTEXT_SIZE% ^
  378. -ngl %GPU_LAYERS% ^
  379. -t %THREADS% ^
  380. -np %PARALLEL_SLOTS% ^
  381. %TEMPLATE_FLAG% ^
  382. %MMPROJ_FLAG% ^
  383. %FLASH_ATTN_FLAG%
  384.  
  385. echo.
  386. echo Server closed.
  387. pause
  388. goto :GET_STATS
  389.  
  390. :EDIT_CONFIG
  391. cls
  392. echo.
  393. echo Please right-click this batch file and select "Edit".
  394. echo.
  395. pause
  396. goto :GET_STATS
Advertisement
Add Comment
Please, Sign In to add comment