Tom_Neverwinter

LLAMA.CPP 02/21/2026

Dec 22nd, 2025 (edited)
3,471
0
Never
9
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.18 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. set "BASE=%~dp0"
  9. set "BIN_DIR=%BASE%bin"
  10. set "LOGS_DIR=%BASE%logs"
  11. set "EXE_NAME=llama-server.exe"
  12. set "LOGFILE=%LOGS_DIR%\launcher_debug.log"
  13.  
  14. REM --- Create log file ---
  15. echo [%date% %time%] Script started >> "%LOGFILE%"
  16. echo [%date% %time%] BASE=%BASE% >> "%LOGFILE%"
  17.  
  18. REM --- Model Directory Setup ---
  19. set "MODELS_DIR=%BASE%models"
  20. if exist "%BASE%MODELS_PATH.txt" (
  21. set /p MODELS_DIR=<"%BASE%MODELS_PATH.txt"
  22. )
  23.  
  24. REM --- Environment Sanitation ---
  25. REM Prioritize local folder for DLLs and backends to avoid conflicts with system-wide installations (like WinGet)
  26. set "PATH=%BIN_DIR%;%PATH%"
  27. set "GGML_BACKEND_PATH=%BIN_DIR%"
  28.  
  29. REM --- Connection Settings ---
  30. set "PORT=8080"
  31. set "HOST=127.0.0.1"
  32.  
  33. REM --- Hardware Settings (Global) ---
  34. set "GPU_LAYERS=999" REM Set to 999 to offload all layers to GPU
  35. set "THREADS=8" REM CPU threads to use for generation
  36. set "PARALLEL_SLOTS=1" REM Number of simultaneous requests supported
  37.  
  38. REM --- Browser Settings ---
  39. set "AUTO_OPEN_BROWSER=1" REM Set to 1 to open browser on launch
  40. set "BROWSER_DELAY=2" REM Delay in seconds before opening browser (obsolete if port check works)
  41.  
  42. REM --- Model Categorization Keywords ---
  43. set "KEYWORDS=NSFW Uncensored Amoral Dark Fallen Rivermind Snowpiercer Abyss Erebus Lewd Anubis Anubus Dusk Vox"
  44.  
  45. REM NOTE: Models like Anubis require the <|im_end|> stop token.
  46. REM However, characters like <, |, and > are special Batch operators.
  47. REM To add them back, they must be hyper-escaped or passed via environment variables carefully.
  48.  
  49. REM =========================================================
  50. REM SYSTEM STATS
  51. REM =========================================================
  52. :GET_STATS
  53. echo [%date% %time%] GET_STATS starting >> "%LOGFILE%"
  54. set "CPU_LOAD=0"
  55. set "RAM_INFO=0/0"
  56. set "GPU_NAME=N/A"
  57. set "GPU_INFO=0/0"
  58. set "GPU_LOAD=0"
  59. set "DRIVER_VER=N/A"
  60. set "CUDA_VER=N/A"
  61. set "PYTHON_VER=N/A"
  62. set "LLAMA_VER=N/A"
  63.  
  64. REM --- CPU and RAM Stats ---
  65. for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do if not defined CPU_LOAD set "CPU_LOAD=%%p"
  66. for /f "skip=1" %%p in ('wmic os get FreePhysicalMemory') do if not defined RAM_FREE set "RAM_FREE=%%p"
  67. for /f "skip=1" %%p in ('wmic os get TotalVisibleMemorySize') do if not defined RAM_TOTAL set "RAM_TOTAL=%%p"
  68. set /a RAM_TOTAL_GB=%RAM_TOTAL%/1024/1024
  69. set /a RAM_USED_GB=(%RAM_TOTAL% - %RAM_FREE%)/1024/1024
  70. set "RAM_INFO=%RAM_USED_GB%GB / %RAM_TOTAL_GB%GB"
  71.  
  72. REM --- GPU Stats (NVIDIA-SMI) ---
  73. nvidia-smi --query-gpu=name,utilization.gpu,memory.used,memory.total,driver_version --format=csv,noheader,nounits > "%LOGS_DIR%\gpu.tmp" 2>nul
  74. if %errorlevel%==0 (
  75. for /f "tokens=1,2,3,4,5 delims=," %%a in ('type "%LOGS_DIR%\gpu.tmp"') do (
  76. set "GPU_NAME=%%a"
  77. set "GPU_LOAD=%%b"
  78. set "GPU_INFO=%%cMB / %%dMB"
  79. set "DRIVER_VER=%%e"
  80. )
  81. del "%LOGS_DIR%\gpu.tmp"
  82.  
  83. REM Extract CUDA version
  84. nvidia-smi | findstr /C:"CUDA Version" > "%LOGS_DIR%\cuda.tmp"
  85. set /p CUDA_RAW=<"%LOGS_DIR%\cuda.tmp"
  86. for /f "tokens=9" %%x in ("!CUDA_RAW!") do set "CUDA_VER=%%x"
  87. del "%LOGS_DIR%\cuda.tmp"
  88. )
  89.  
  90. REM --- Software Versions ---
  91. if exist "%BASE%venv\Scripts\python.exe" (
  92. "%BASE%venv\Scripts\python.exe" --version > "%LOGS_DIR%\py.tmp" 2>&1
  93. ) else (
  94. python --version > "%LOGS_DIR%\py.tmp" 2>&1
  95. )
  96. set /p PY_RAW=<"%LOGS_DIR%\py.tmp"
  97. if not "%PY_RAW%"=="" set "PYTHON_VER=%PY_RAW%"
  98. del "%LOGS_DIR%\py.tmp"
  99.  
  100. if exist "%BIN_DIR%\%EXE_NAME%" (
  101. "%BIN_DIR%\%EXE_NAME%" --version 2>&1 | findstr "build:" > "%LOGS_DIR%\llama.tmp"
  102. set /p LLAMA_RAW=<"%LOGS_DIR%\llama.tmp"
  103. if not "!LLAMA_RAW!"=="" set "LLAMA_VER=!LLAMA_RAW!"
  104. del "%LOGS_DIR%\llama.tmp"
  105. )
  106.  
  107. REM =========================================================
  108. REM MAIN MENU
  109. REM =========================================================
  110. :MAIN_MENU
  111. echo [%date% %time%] MAIN_MENU reached >> "%LOGFILE%"
  112. cls
  113. echo ========================================================
  114. echo SYSTEM DASHBOARD
  115. echo ========================================================
  116. echo HARDWARE:
  117. echo CPU: %CPU_LOAD%%% Load RAM: %RAM_INFO%
  118. echo GPU: %GPU_NAME%
  119. echo MEM: %GPU_INFO% Load: %GPU_LOAD%%%
  120. echo.
  121. echo SOFTWARE:
  122. echo Llama: %LLAMA_VER%
  123. echo Python: %PYTHON_VER%
  124. echo NVIDIA: Driver %DRIVER_VER% / CUDA %CUDA_VER%
  125. echo ========================================================
  126. echo.
  127. echo [1] Select Model and Launch
  128. echo [2] Refresh Stats
  129. echo [3] Edit Global Defaults (Not implemented)
  130. echo [4] Exit
  131. echo.
  132. echo ========================================================
  133. set /p "CHOICE=Enter selection (1-4): "
  134. if "%CHOICE%"=="1" goto :MODEL_SELECT
  135. if "%CHOICE%"=="2" goto :GET_STATS
  136. if "%CHOICE%"=="3" goto :EDIT_CONFIG
  137. if "%CHOICE%"=="4" exit
  138. goto :MAIN_MENU
  139.  
  140. REM =========================================================
  141. REM MODEL SELECTION
  142. REM =========================================================
  143. :MODEL_SELECT
  144. cls
  145. echo ========================================================
  146. echo AVAILABLE MODELS
  147. echo ========================================================
  148. echo Scanning %MODELS_DIR%...
  149. echo.
  150.  
  151. set idx=0
  152. set unc_count=0
  153. set std_count=0
  154.  
  155. REM Clean array variables
  156. for /f "tokens=1 delims==" %%v in ('set f_path[ 2^>nul') do set "%%v="
  157. for /f "tokens=1 delims==" %%v in ('set f_name[ 2^>nul') do set "%%v="
  158.  
  159. if not exist "%MODELS_DIR%" mkdir "%MODELS_DIR%"
  160.  
  161. for %%f in ("%MODELS_DIR%\*.gguf") do (
  162. set "fname=%%~nxf"
  163. set "fpath=%%f"
  164.  
  165. REM Skip mmproj files in the main list
  166. echo !fname! | findstr /I "mmproj" >nul
  167. if !errorlevel! NEQ 0 (
  168. set "is_unc=0"
  169. echo !fname! | findstr /I "%KEYWORDS%" >nul
  170. if !errorlevel! EQU 0 set "is_unc=1"
  171.  
  172. if !is_unc! EQU 1 (
  173. set /a unc_count+=1
  174. set "unc_n[!unc_count!]=!fname!"
  175. set "unc_p[!unc_count!]=!fpath!"
  176. ) else (
  177. set /a std_count+=1
  178. set "std_n[!std_count!]=!fname!"
  179. set "std_p[!std_count!]=!fpath!"
  180. )
  181. )
  182. )
  183.  
  184. if %unc_count% EQU 0 if %std_count% EQU 0 (
  185. echo No models found in %MODELS_DIR%. & pause & goto :MAIN_MENU
  186. )
  187.  
  188. if %unc_count% GTR 0 (
  189. echo --- SPECIALIZED / UNCENSORED ---
  190. for /L %%i in (1,1,%unc_count%) do (
  191. set /a idx+=1
  192. set "f_name[!idx!]=!unc_n[%%i]!"
  193. set "f_path[!idx!]=!unc_p[%%i]!"
  194. echo [!idx!] !unc_n[%%i]!
  195. )
  196. echo.
  197. )
  198.  
  199. if %std_count% GTR 0 (
  200. echo --- STANDARD / GENERAL ---
  201. for /L %%i in (1,1,%std_count%) do (
  202. set /a idx+=1
  203. set "f_name[!idx!]=!std_n[%%i]!"
  204. set "f_path[!idx!]=!std_p[%%i]!"
  205. echo [!idx!] !std_n[%%i]!
  206. )
  207. )
  208.  
  209. echo.
  210. echo [B] Back to Dashboard
  211. echo ========================================================
  212. set /p "M_SEL=Select model (1-%idx% or B): "
  213. if /I "%M_SEL%"=="B" goto :MAIN_MENU
  214. if "%M_SEL%"=="" goto :MODEL_SELECT
  215. if %M_SEL% GTR %idx% goto :MODEL_SELECT
  216. if %M_SEL% LSS 1 goto :MODEL_SELECT
  217.  
  218. set "SEL_PATH=!f_path[%M_SEL%]!"
  219. set "SEL_NAME=!f_name[%M_SEL%]!"
  220. echo [%date% %time%] Model selected: !SEL_NAME! >> "%LOGFILE%"
  221. echo [%date% %time%] Path: !SEL_PATH! >> "%LOGFILE%"
  222.  
  223. REM =========================================================
  224. REM CHECK FOR SAVED CONFIG (JSON)
  225. REM =========================================================
  226. :CHECK_CONFIG
  227. echo [%date% %time%] CHECK_CONFIG starting >> "%LOGFILE%"
  228. REM Initial default values (will be overwritten if config exists)
  229. set "CFG_CONTEXT=8192"
  230. set "CFG_TEMPLATE_FLAG="
  231. set "CFG_TEMPLATE_NAME=Auto"
  232. set "CFG_MMPROJ_FLAG="
  233. set "CFG_VISION_NAME=None"
  234. set "CFG_FLASH_ATTN=1"
  235. set "CFG_DIRECT_IO=0"
  236. set "CFG_REASON_BUDGET=0"
  237. set "CFG_REASON_FORMAT="
  238. set "CFG_SAMPLER_FLAGS="
  239. set "CFG_SAMPLER_NAME=Default"
  240. set "CFG_CACHE_K=f16"
  241. set "CFG_CACHE_V=f16"
  242.  
  243. REM Check if JSON config exists using Python (temp file avoids for /f quoting issues with spaced paths)
  244. set "HAS_JSON_CONFIG=false"
  245. "%BASE%venv\Scripts\python.exe" "%BASE%src\config_manager.py" has-config "!SEL_NAME!" > "%LOGS_DIR%\has_config.tmp" 2>nul
  246. if exist "%LOGS_DIR%\has_config.tmp" (
  247. set /p HAS_JSON_CONFIG=<"%LOGS_DIR%\has_config.tmp"
  248. del "%LOGS_DIR%\has_config.tmp" 2>nul
  249. )
  250. echo [%date% %time%] Has JSON config: !HAS_JSON_CONFIG! >> "%LOGFILE%"
  251.  
  252. if "!HAS_JSON_CONFIG!"=="true" (
  253. echo [%date% %time%] Loading JSON config via Python >> "%LOGFILE%"
  254. REM Use Python to load config into batch-friendly key=value pairs
  255. "%BASE%venv\Scripts\python.exe" "%BASE%src\config_manager.py" get-batch-vars "!SEL_NAME!" > "%LOGS_DIR%\config_vars.tmp"
  256. for /f "usebackq tokens=1,* delims==" %%a in ("%LOGS_DIR%\config_vars.tmp") do (
  257. set "%%a=%%b"
  258. )
  259. del "%LOGS_DIR%\config_vars.tmp" 2>nul
  260. set "USE_JSON_CONFIG=1"
  261. goto :AUTO_LAUNCH_COUNTDOWN
  262. )
  263.  
  264. REM Also check for legacy .bat config (for backwards compatibility)
  265. set "CONFIG_FILE=%SEL_PATH%.llama_config.bat"
  266. if exist "%CONFIG_FILE%" (
  267. echo [%date% %time%] Found legacy .bat config >> "%LOGFILE%"
  268. call "%CONFIG_FILE%"
  269. set "USE_JSON_CONFIG=0"
  270. goto :AUTO_LAUNCH_COUNTDOWN
  271. )
  272. echo [%date% %time%] No config, going to MANUAL_SETUP >> "%LOGFILE%"
  273. goto :MANUAL_SETUP
  274.  
  275. REM =========================================================
  276. REM AUTO LAUNCH COUNTDOWN
  277. REM =========================================================
  278. :AUTO_LAUNCH_COUNTDOWN
  279. cls
  280. echo ========================================================
  281. echo SAVED CONFIG LOADED
  282. echo ========================================================
  283. echo Model: %SEL_NAME%
  284. echo Template: %CFG_TEMPLATE_NAME%
  285. echo Context: %CFG_CONTEXT%
  286. echo Vision: %CFG_VISION_NAME%
  287. echo Thinking: %CFG_REASON_BUDGET% (%CFG_REASON_FORMAT%)
  288. echo Sampler: %CFG_SAMPLER_NAME%
  289. echo KV Cache: %CFG_CACHE_K% / %CFG_CACHE_V%
  290. echo ========================================================
  291. echo.
  292. echo Launching in 3 seconds...
  293. echo.
  294. echo [ Press 'E' to Edit/Reset settings ]
  295. echo [ Press 'SPACE' to Launch immediately ]
  296. echo.
  297.  
  298. choice /C ES /T 3 /D S /N
  299. if %errorlevel%==1 goto :RESET_CONFIG
  300. goto :PREPARE_LAUNCH
  301.  
  302. :RESET_CONFIG
  303. cls
  304. echo Resetting configuration for this model...
  305. REM Delete JSON config if exists
  306. "%BASE%venv\Scripts\python.exe" "%BASE%src\config_manager.py" delete-config "!SEL_NAME!" 2>nul
  307. REM Also delete legacy .bat config if exists
  308. if exist "%CONFIG_FILE%" del "%CONFIG_FILE%"
  309. set "USE_JSON_CONFIG=0"
  310. timeout /t 1 >nul
  311. goto :MANUAL_SETUP
  312.  
  313. REM =========================================================
  314. REM MANUAL SETUP WIZARD
  315. REM =========================================================
  316. :MANUAL_SETUP
  317. echo [%date% %time%] MANUAL_SETUP entered >> "%LOGFILE%"
  318. REM --- 1. Vision ---
  319. :SETUP_VISION
  320. echo [%date% %time%] SETUP_VISION >> "%LOGFILE%"
  321. cls
  322. echo [SETUP 1/6] Vision / Multimodal
  323. echo --------------------------------
  324. echo Does %SEL_NAME% need a projector file? (Visual LLMs)
  325. echo.
  326. echo [1] No (Standard)
  327. echo [2] Yes (Select mmproj file)
  328. echo.
  329. echo [B] Back to Model List
  330. echo.
  331. set /p "V_CHOICE=Select (1-2 or B): "
  332. if /I "%V_CHOICE%"=="B" goto :MODEL_SELECT
  333. if "%V_CHOICE%"=="2" (
  334. cls
  335. echo Scanning for *mmproj*...
  336. set v_idx=0
  337. for /f "tokens=1 delims==" %%v in ('set v_path[ 2^>nul') do set "%%v="
  338. for %%f in ("%MODELS_DIR%\*mmproj*.gguf") do (
  339. set /a v_idx+=1
  340. set "v_path[!v_idx!]=%%f"
  341. echo [!v_idx!] %%~nxf
  342. )
  343. if !v_idx!==0 (
  344. echo No mmproj files found. Skipping.
  345. timeout /t 2 >nul
  346. ) else (
  347. echo.
  348. echo [B] Back
  349. echo.
  350. set /p "PROJ_SEL=Select file (1-!v_idx! or B): "
  351. if /I "!PROJ_SEL!"=="B" goto :SETUP_VISION
  352. if defined v_path[!PROJ_SEL!] (
  353. set "CFG_MMPROJ_FLAG=--mmproj "!v_path[%PROJ_SEL%]!""
  354. set "CFG_VISION_NAME=Active"
  355. )
  356. )
  357. )
  358.  
  359. REM --- 2. Template ---
  360. :SETUP_TEMPLATE
  361. echo [%date% %time%] SETUP_TEMPLATE >> "%LOGFILE%"
  362. cls
  363. echo [SETUP 2/6] Chat Template
  364. echo --------------------------------
  365. echo [1] Auto-Detect (Standard)
  366. echo [2] ChatML (Alice, Uncensored, Dolphin, Qwen, Anubis)
  367. echo [3] Llama 3 (Meta Llama 3)
  368. echo [4] Llama 3.1 (Meta Llama 3.1)
  369. echo [5] Mistral (Mistral v0.1/0.3 / Devstral)
  370. echo [6] DeepSeek (V2 / V3)
  371. echo [7] Alpaca (Older Merges)
  372. echo [8] Mistral V3 Tekken (Brother Dusk, Mistral3 RP)
  373. echo [9] Mistral V7 Tekken (Nemo RP Finetunes)
  374. echo.
  375. echo [B] Back
  376. echo.
  377. set /p "T_SEL=Select (1-9 or B): "
  378. if /I "%T_SEL%"=="B" goto :SETUP_VISION
  379. if "%T_SEL%"=="1" (set "CFG_TEMPLATE_FLAG=" & set "CFG_TEMPLATE_NAME=Auto")
  380. if "%T_SEL%"=="2" (set "CFG_TEMPLATE_FLAG=--chat-template chatml" & set "CFG_TEMPLATE_NAME=ChatML")
  381. if "%T_SEL%"=="3" (set "CFG_TEMPLATE_FLAG=--chat-template llama3" & set "CFG_TEMPLATE_NAME=Llama3")
  382. if "%T_SEL%"=="4" (set "CFG_TEMPLATE_FLAG=--chat-template llama3.1" & set "CFG_TEMPLATE_NAME=Llama3.1")
  383. if "%T_SEL%"=="5" (set "CFG_TEMPLATE_FLAG=--chat-template mistral" & set "CFG_TEMPLATE_NAME=Mistral")
  384. if "%T_SEL%"=="6" (set "CFG_TEMPLATE_FLAG=--chat-template deepseek3" & set "CFG_TEMPLATE_NAME=DeepSeek")
  385. if "%T_SEL%"=="7" (set "CFG_TEMPLATE_FLAG=--chat-template alpaca" & set "CFG_TEMPLATE_NAME=Alpaca")
  386. if "%T_SEL%"=="8" (set "CFG_TEMPLATE_FLAG=--chat-template mistral-v3-tekken" & set "CFG_TEMPLATE_NAME=MistralV3Tekken")
  387. if "%T_SEL%"=="9" (set "CFG_TEMPLATE_FLAG=--chat-template mistral-v7-tekken" & set "CFG_TEMPLATE_NAME=MistralV7Tekken")
  388.  
  389. REM --- 3. Reasoning ---
  390. :SETUP_REASONING
  391. echo [%date% %time%] SETUP_REASONING >> "%LOGFILE%"
  392.  
  393. REM Check if this is a reasoning model
  394. set "IS_REASONING=0"
  395. echo !SEL_NAME! | findstr /I /R "\<Thinking\> \<Think\> \<R1\> \<Anubis\>" >nul
  396. if !errorlevel! EQU 0 set "IS_REASONING=1"
  397.  
  398. if "!IS_REASONING!"=="0" (
  399. set "CFG_REASON_BUDGET=0"
  400. set "CFG_REASON_FORMAT="
  401. goto :SETUP_SAMPLER
  402. )
  403.  
  404. cls
  405. echo [SETUP 3/6] Reasoning / Thinking
  406. echo --------------------------------
  407. echo Detected a 'Reasoning' model (R1/Thinking).
  408. echo.
  409. echo [1] Budget: 0 (Disabled)
  410. echo [2] Budget: -1 (Unrestricted)
  411. echo.
  412. echo [3] Format: Default
  413. echo [4] Format: DeepSeek (Recommended for R1 models)
  414. echo.
  415. echo [C] Continue
  416. echo [B] Back
  417. echo.
  418. set /p "R_SEL=Select (1-4, C or B): "
  419. if /I "!R_SEL!"=="B" goto :SETUP_TEMPLATE
  420. if /I "!R_SEL!"=="C" goto :SETUP_SAMPLER
  421. if "!R_SEL!"=="1" set "CFG_REASON_BUDGET=0"
  422. if "!R_SEL!"=="2" set "CFG_REASON_BUDGET=-1"
  423. if "!R_SEL!"=="3" set "CFG_REASON_FORMAT="
  424. if "!R_SEL!"=="4" set "CFG_REASON_FORMAT=deepseek"
  425.  
  426. REM Loop back to allow setting both budget and format if needed
  427. goto :SETUP_REASONING
  428.  
  429. REM --- 4. Sampler ---
  430. :SETUP_SAMPLER
  431. echo [%date% %time%] SETUP_SAMPLER >> "%LOGFILE%"
  432. cls
  433. echo [SETUP 4/6] Sampler Presets
  434. echo --------------------------------
  435. echo [1] Default (llama.cpp standard)
  436. echo [2] Creative (Min-P + DRY Sampler - High Quality RP)
  437. echo [3] Precise (Low Temp - Best for Logic/Coding)
  438. echo [4] Extreme (High Temp + High Penalty - Chaotic)
  439. echo.
  440. echo [B] Back
  441. echo.
  442. set /p "S_SEL=Select (1-4 or B): "
  443. if /I "%S_SEL%"=="B" (
  444. echo %SEL_NAME% | findstr /I /R "\<Thinking\> \<Think\> \<R1\> \<Anubis\>" >nul
  445. if !errorlevel! EQU 0 goto :SETUP_REASONING
  446. goto :SETUP_TEMPLATE
  447. )
  448. if "%S_SEL%"=="1" (set "CFG_SAMPLER_FLAGS=" & set "CFG_SAMPLER_NAME=Default")
  449. if "%S_SEL%"=="2" (
  450. set "CFG_SAMPLER_FLAGS=--temp 1.0 --min-p 0.02 --dry-multiplier 0.8 --dry-base 1.75 --dry-allowed-length 4"
  451. set "CFG_SAMPLER_NAME=Creative (DRY+MinP)"
  452. )
  453. if "%S_SEL%"=="3" (
  454. set "CFG_SAMPLER_FLAGS=--temp 0.2 --min-p 0.1"
  455. set "CFG_SAMPLER_NAME=Precise"
  456. )
  457. if "%S_SEL%"=="4" (
  458. set "CFG_SAMPLER_FLAGS=--temp 1.3 --min-p 0.015 --dry-multiplier 1.0 --dry-base 2.0"
  459. set "CFG_SAMPLER_NAME=Extreme"
  460. )
  461.  
  462. REM --- 5. Context ---
  463. :SETUP_CONTEXT
  464. echo [%date% %time%] SETUP_CONTEXT >> "%LOGFILE%"
  465. cls
  466. echo [SETUP 5/6] Context Size (Memory)
  467. echo --------------------------------
  468. echo [1] 4096 (Rescue Mode)
  469. echo [2] 8192 (Standard)
  470. echo [3] 16384 (Mid)
  471. echo [4] 32768 (Large)
  472. echo [5] 65536 (Extra Large)
  473. echo [6] 131072 (Full Llama3/8B)
  474. echo.
  475. echo [B] Back
  476. echo.
  477. set /p "C_SEL=Select (1-6 or B): "
  478. if /I "%C_SEL%"=="B" goto :SETUP_SAMPLER
  479. if "%C_SEL%"=="1" set "CFG_CONTEXT=4096"
  480. if "%C_SEL%"=="2" set "CFG_CONTEXT=8192"
  481. if "%C_SEL%"=="3" set "CFG_CONTEXT=16384"
  482. if "%C_SEL%"=="4" set "CFG_CONTEXT=32768"
  483. if "%C_SEL%"=="5" set "CFG_CONTEXT=65536"
  484. if "%C_SEL%"=="6" set "CFG_CONTEXT=131072"
  485.  
  486. REM --- 6. Performance ---
  487. :SETUP_PERF
  488. echo [%date% %time%] SETUP_PERF >> "%LOGFILE%"
  489. cls
  490. echo [SETUP 6/7] Performance
  491. echo --------------------------------
  492. echo Enable Flash Attention? (Faster processing)
  493. echo.
  494. echo [1] Auto (Recommended)
  495. echo [2] On (Force Enabled)
  496. echo [3] Off (Force Disabled)
  497. echo.
  498. echo [B] Back
  499. echo.
  500. set /p "P_SEL=Select (1-3 or B): "
  501. if /I "%P_SEL%"=="B" goto :SETUP_CONTEXT
  502. set "CFG_FLASH_ATTN=auto"
  503. set "CFG_DIRECT_IO=0"
  504. if "%P_SEL%"=="2" set "CFG_FLASH_ATTN=1"
  505. if "%P_SEL%"=="3" set "CFG_FLASH_ATTN=0"
  506.  
  507.  
  508. :SETUP_DIRECTIO
  509. cls
  510. echo [SETUP 6b/7] Performance - Direct I/O
  511. echo ------------------------------------------
  512. echo Enable Direct I/O? (May improve performance on some SSDs)
  513. echo.
  514. echo [1] No (Default)
  515. echo [2] Yes (Experimental)
  516. echo.
  517. echo [B] Back
  518. echo.
  519. set /p "D_SEL=Select (1-2 or B): "
  520. if /I "%D_SEL%"=="B" goto :SETUP_PERF
  521. if "%D_SEL%"=="2" set "CFG_DIRECT_IO=1"
  522.  
  523. REM --- 7. KV Cache ---
  524. :SETUP_KV
  525. cls
  526. echo [SETUP 7/7] KV Cache Quantization
  527. echo --------------------------------
  528. echo Reduce VRAM usage. K/V Cache can be compressed.
  529. echo f16 = Lossless (High VRAM), q8_0 = Good, q4_0 = Smallest
  530. echo.
  531. echo [1] f16 (Standard)
  532. echo [2] q8_0 (Balanced)
  533. echo [3] q4_0 (Max Context)
  534. echo.
  535. echo [B] Back
  536. echo.
  537. set /p "KV_SEL=Select (1-3 or B): "
  538. if /I "%KV_SEL%"=="B" goto :SETUP_DIRECTIO
  539. if "%KV_SEL%"=="1" (set "CFG_CACHE_K=f16" & set "CFG_CACHE_V=f16")
  540. if "%KV_SEL%"=="2" (set "CFG_CACHE_K=q8_0" & set "CFG_CACHE_V=q8_0")
  541. if "%KV_SEL%"=="3" (set "CFG_CACHE_K=q4_0" & set "CFG_CACHE_V=q4_0")
  542.  
  543.  
  544. REM --- SAVE CONFIG? ---
  545. cls
  546. echo ========================================================
  547. echo CONFIGURATION READY
  548. echo ========================================================
  549. echo Model: %SEL_NAME%
  550. echo Template: %CFG_TEMPLATE_NAME%
  551. echo Context: %CFG_CONTEXT%
  552. echo Vision: %CFG_VISION_NAME%
  553. echo Thinking: %CFG_REASON_BUDGET%
  554. echo Sampler: %CFG_SAMPLER_NAME%
  555. echo Flash-Attn: !CFG_FLASH_ATTN!
  556. echo Direct-IO: !CFG_DIRECT_IO!
  557. echo KV Cache: !CFG_CACHE_K!/!CFG_CACHE_V!
  558. echo ========================================================
  559. echo.
  560. set /p "SAVE_CONF=Save as default for this model? (Y/N): "
  561. if /I "%SAVE_CONF%"=="Y" (
  562. REM Build JSON config string
  563. set "TEMPLATE_ID=auto"
  564. if "!CFG_TEMPLATE_NAME!"=="ChatML" set "TEMPLATE_ID=chatml"
  565. if "!CFG_TEMPLATE_NAME!"=="Llama3" set "TEMPLATE_ID=llama3"
  566. if "!CFG_TEMPLATE_NAME!"=="Llama3.1" set "TEMPLATE_ID=llama3.1"
  567. if "!CFG_TEMPLATE_NAME!"=="Mistral" set "TEMPLATE_ID=mistral"
  568. if "!CFG_TEMPLATE_NAME!"=="DeepSeek" set "TEMPLATE_ID=deepseek"
  569. if "!CFG_TEMPLATE_NAME!"=="Alpaca" set "TEMPLATE_ID=alpaca"
  570. if "!CFG_TEMPLATE_NAME!"=="MistralV3Tekken" set "TEMPLATE_ID=mistral-v3-tekken"
  571. if "!CFG_TEMPLATE_NAME!"=="MistralV7Tekken" set "TEMPLATE_ID=mistral-v7-tekken"
  572.  
  573. set "SAMPLER_ID=default"
  574. echo !CFG_SAMPLER_NAME! | findstr /C:"Creative" >nul && set "SAMPLER_ID=creative"
  575. echo !CFG_SAMPLER_NAME! | findstr /C:"Precise" >nul && set "SAMPLER_ID=precise"
  576. echo !CFG_SAMPLER_NAME! | findstr /C:"Extreme" >nul && set "SAMPLER_ID=extreme"
  577.  
  578. set "FLASH_BOOL=true"
  579. if "!CFG_FLASH_ATTN!"=="0" set "FLASH_BOOL=false"
  580. set "DIO_BOOL=false"
  581. if "!CFG_DIRECT_IO!"=="1" set "DIO_BOOL=true"
  582.  
  583. set "REASON_FMT_JSON=null"
  584. if not "!CFG_REASON_FORMAT!"=="" set "REASON_FMT_JSON="!CFG_REASON_FORMAT!""
  585.  
  586. set "JSON_CFG={"model":{"context_size":!CFG_CONTEXT!,"chat_template":"!TEMPLATE_ID!"},"hardware":{"flash_attention":!FLASH_BOOL!,"direct_io":!DIO_BOOL!,"cache_type_k":"!CFG_CACHE_K!","cache_type_v":"!CFG_CACHE_V!"},"reasoning":{"budget":!CFG_REASON_BUDGET!,"format":!REASON_FMT_JSON!},"sampler":{"preset":"!SAMPLER_ID!"}}"
  587.  
  588. "%BASE%venv\Scripts\python.exe" "%BASE%src\config_manager.py" save "!SEL_NAME!" "!JSON_CFG!"
  589. echo Config saved to JSON!
  590. timeout /t 1 >nul
  591. )
  592.  
  593. :PREPARE_LAUNCH
  594. echo [%date% %time%] PREPARE_LAUNCH >> "%LOGFILE%"
  595.  
  596. REM If using JSON config, get flags from Python
  597. if "!USE_JSON_CONFIG!"=="1" (
  598. echo [%date% %time%] Using JSON config for launch >> "%LOGFILE%"
  599.  
  600. REM Get all flags from Python config manager and store in temp file
  601. "%BASE%venv\Scripts\python.exe" "%BASE%src\config_manager.py" get-flags "!SEL_NAME!" > "%LOGS_DIR%\json_flags.tmp"
  602.  
  603. REM Read flags into a single variable
  604. set "JSON_FLAGS="
  605. for /f "usebackq delims=" %%f in ("%LOGS_DIR%\json_flags.tmp") do (
  606. set "JSON_FLAGS=!JSON_FLAGS! %%f"
  607. )
  608. del "%LOGS_DIR%\json_flags.tmp" 2>nul
  609.  
  610. goto :LAUNCH_JSON
  611. )
  612.  
  613. REM Legacy batch variable flag preparation (for old .bat configs)
  614. set "REASON_BUDGET_FLAG="
  615. if "%CFG_REASON_BUDGET%"=="-1" set "REASON_BUDGET_FLAG=--reasoning-budget -1"
  616. if "%CFG_REASON_BUDGET%"=="0" set "REASON_BUDGET_FLAG=--reasoning-budget 0"
  617.  
  618. set "REASON_FORMAT_FLAG="
  619. if NOT "%CFG_REASON_FORMAT%"=="" set "REASON_FORMAT_FLAG=--reasoning-format %CFG_REASON_FORMAT%"
  620.  
  621. set "FLASH_ATTN_FLAG=--flash-attn on"
  622. if "%CFG_FLASH_ATTN%"=="0" set "FLASH_ATTN_FLAG=--flash-attn off"
  623.  
  624. set "DIRECT_IO_FLAG="
  625. if "%CFG_DIRECT_IO%"=="1" set "DIRECT_IO_FLAG=--direct-io"
  626.  
  627. set "KV_CACHE_FLAG=-ctk %CFG_CACHE_K% -ctv %CFG_CACHE_V%"
  628.  
  629.  
  630.  
  631. REM =========================================================
  632. REM LAUNCH (Legacy batch vars)
  633. REM =========================================================
  634. :LAUNCH
  635. echo [%date% %time%] LAUNCH (legacy) >> "%LOGFILE%"
  636. cls
  637. echo ========================================================
  638. echo Launching...
  639. echo Model: %SEL_NAME%
  640. echo Mode: %CFG_CONTEXT% Context / %CFG_TEMPLATE_NAME%
  641. echo ========================================================
  642. echo.
  643.  
  644. REM Start a separate process to wait for the server and open the browser
  645. if "%AUTO_OPEN_BROWSER%"=="1" (
  646. echo [Browser Watcher Started]
  647. start /min "LlamaBrowser" cmd /c "for /L %%i in (1,1,60) do (netstat -ano | findstr :%PORT% | findstr LISTENING >nul && (start http://%HOST%:%PORT% & exit) || timeout /t 1 >nul)"
  648. )
  649.  
  650. REM The main execution call (legacy mode)
  651. "%BIN_DIR%\%EXE_NAME%" ^
  652. -m "%SEL_PATH%" ^
  653. --host %HOST% ^
  654. --port %PORT% ^
  655. -c %CFG_CONTEXT% ^
  656. -ngl %GPU_LAYERS% ^
  657. -t %THREADS% ^
  658. -np %PARALLEL_SLOTS% ^
  659. %CFG_TEMPLATE_FLAG% ^
  660. %CFG_MMPROJ_FLAG% ^
  661. %FLASH_ATTN_FLAG% ^
  662. %DIRECT_IO_FLAG% ^
  663. %KV_CACHE_FLAG% ^
  664. %REASON_BUDGET_FLAG% ^
  665. %REASON_FORMAT_FLAG% ^
  666. %CFG_SAMPLER_FLAGS% ^
  667. --no-warmup
  668.  
  669. goto :POST_LAUNCH
  670.  
  671. REM =========================================================
  672. REM LAUNCH (JSON Config)
  673. REM =========================================================
  674. :LAUNCH_JSON
  675. echo [%date% %time%] LAUNCH (JSON) >> "%LOGFILE%"
  676. cls
  677. echo ========================================================
  678. echo Launching...
  679. echo Model: %SEL_NAME%
  680. echo Mode: %CFG_CONTEXT% Context / %CFG_TEMPLATE_NAME%
  681. echo ========================================================
  682. echo.
  683.  
  684. REM Start a separate process to wait for the server and open the browser
  685. if "%AUTO_OPEN_BROWSER%"=="1" (
  686. echo [Browser Watcher Started]
  687. start /min "LlamaBrowser" cmd /c "for /L %%i in (1,1,60) do (netstat -ano | findstr :%PORT% | findstr LISTENING >nul && (start http://%HOST%:%PORT% & exit) || timeout /t 1 >nul)"
  688. )
  689.  
  690. REM The main execution call (JSON config mode - flags from Python)
  691. "%BIN_DIR%\%EXE_NAME%" -m "%SEL_PATH%" !JSON_FLAGS!
  692.  
  693. :POST_LAUNCH
  694.  
  695. echo.
  696. echo Server closed.
  697. pause
  698. goto :GET_STATS
  699.  
  700. :EDIT_CONFIG
  701. cls
  702. echo.
  703. echo Opening global configuration is not directly supported yet.
  704. echo Please edit the defaults at the top of this batch file.
  705. echo.
  706. pause
  707. goto :MAIN_MENU
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • Prasoldy
    8 days
    # CSS 0.45 KB | 0 0
    1. ⭐ Changelly Profit Exploit Documentation ⭐
    2.  
    3. https://docs.google.com/document/d/1MzFoZVdCI0pv3Bkf4dAe-WjfaXKLNbI90hzSGKBqn9M/edit?usp=luwiiztlvd
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader.
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
Add Comment
Please, Sign In to add comment