Skip to content

Instantly share code, notes, and snippets.

@celsowm
Last active May 14, 2025 01:03
Show Gist options
  • Save celsowm/848b8b69f9a1fc40009f9a3717651125 to your computer and use it in GitHub Desktop.
Save celsowm/848b8b69f9a1fc40009f9a3717651125 to your computer and use it in GitHub Desktop.
start_llama_cpp_server.bat
@echo off
REM ==========================================================
REM start_llama_server.bat – Escolhe modelo .gguf por número
REM + opção mmproj/offload
REM ==========================================================
setlocal EnableDelayedExpansion
cd /d "%~dp0"
echo.
echo ==========================================================
echo Diretório atual: %CD%
echo ==========================================================
echo.
:: ---------- 1. Verifica se há modelos ----------------------
if not exist *.gguf (
echo [ERRO] Nenhum arquivo .gguf encontrado em %CD%
pause
exit /b 1
)
:: ---------- 2. Lista modelos disponíveis com número -------
echo Modelos .gguf disponíveis:
set i=0
for %%M in (*.gguf) do (
set /a i+=1
echo !i!. %%M
set "MODEL!i!=%%M"
)
echo.
:: ---------- 3. Seleção por número -------------------------
set /p choice="Escolha o numero do modelo [1]: "
if not defined choice set choice=1
:: Valida se a escolha é um inteiro
set /a dummy=%choice% >nul 2>&1
if errorlevel 1 (
echo [ERRO] Selecao invalida: "%choice%" nao e um numero.
pause
exit /b 1
)
:: Valida intervalo
if %choice% LSS 1 (
echo [ERRO] Selecao invalida: "%choice%" menor que 1.
pause
exit /b 1
)
if %choice% GTR %i% (
echo [ERRO] Selecao invalida: "%choice%" maior que %i%.
pause
exit /b 1
)
:: Recupera o nome do arquivo escolhido
call set "MODELFILE=%%MODEL%choice%%%"
if not defined MODELFILE (
echo [ERRO] Variavel MODEL%choice% nao definida.
pause
exit /b 1
)
:: ---------- 4. Parâmetros opcionais -----------------------
set /p CTXSIZE="Tamanho da janela de contexto (ctx-size) [Default: 7000]: "
if not defined CTXSIZE set CTXSIZE=7000
set /p NGL="Numero de camadas na GPU (n-gpu-layers) [Default: 99]: "
if not defined NGL set NGL=99
set /p GPU_IDS="IDs do(s) device(s) a usar (ex: 0 ou 0,1) [Default: usar padrao]: "
if defined GPU_IDS (
set "DEVICE_PARAM=--device %GPU_IDS%"
) else (
set "DEVICE_PARAM="
)
set /p PARALLEL="Parallel [Default: 1]: "
if not defined PARALLEL set PARALLEL=1
set /p PORT="Porta para o servidor [Default: 8081]: "
if not defined PORT set PORT=8081
:: ----- 4A. Parâmetro mmproj / offload -----------------------
set "MM_PARAM=--no-mmproj-offload"
set mm_count=0
for %%F in (*mmproj*.gguf) do (
set /a mm_count+=1
call set "MM_FILE%%mm_count%%=%%F"
)
if %mm_count% GTR 0 (
echo.
echo Opções de parâmetro MMProj:
echo 1. --no-mmproj-offload (padrão)
for /L %%i in (1,1,%mm_count%) do (
set /a opt=%%i+1
call echo %%opt%%. %%MM_FILE%%i%%
)
echo.
set /p mm_choice="Escolha a opção para mmproj [1]: "
if not defined mm_choice set mm_choice=1
set /a mm_choice+=0 & rem força numérico
if !mm_choice! GTR 1 (
rem índice do arquivo = opção-1
set /a mm_idx=mm_choice-1
rem monta MM_PARAM direto
call set "MM_PARAM=--mmproj %%MM_FILE!mm_idx!%%"
)
)
:: ---------- 5. Exibe configuração ------------------------
echo.
echo ==========================================================
echo Configuracao:
echo Modelo = %MODELFILE%
echo ctx-size = %CTXSIZE%
echo n-gpu-layers = %NGL%
echo device param = %DEVICE_PARAM%
echo parallel = %PARALLEL%
echo port = %PORT%
echo mmproj param = %MM_PARAM%
echo ==========================================================
echo.
:: ---------- 6. Inicia o servidor -------------------------
llama-server.exe ^
--flash-attn ^
--ctx-size %CTXSIZE% ^
--n-gpu-layers %NGL% ^
%DEVICE_PARAM% ^
--parallel %PARALLEL% ^
--port %PORT% ^
--model "%MODELFILE%" ^
%MM_PARAM%
pause
endlocal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment