kotaemon/scripts/server_llamacpp_windows.bat
ian_Cin df12dec732 Feat/local endpoint llm (#148)
* serve local model in a different process from the app
---------

Co-authored-by: albert <albert@cinnamon.is>
Co-authored-by: trducng <trungduc1992@gmail.com>
2024-03-15 16:17:33 +07:00

116 lines
2.9 KiB
Batchfile

@echo off
@rem main code execution
call :print_highlight "Starting inference server for llama-cpp"
cd /D "%~dp0\.."
echo "Change the current directory to: %cd%"
call :path_sanity_check
call :deactivate_environment
@rem config
set ENV_NAME=llama-cpp-python-server
set PYTHON_VERSION=3.10
set CONDA_ROOT_PREFIX=%cd%\install_dir\conda
set INSTALL_ENV_DIR=%cd%\install_dir\server_envs\%ENV_NAME%
echo "Python version: %PYTHON_VERSION%"
echo "Conda prefix: %CONDA_ROOT_PREFIX%"
echo "Environment path: %INSTALL_ENV_DIR%"
@rem handle conda environment
call :check_conda_existence
call :create_conda_environment
call :isolate_environment
call :activate_environment
@rem install dependencies
@rem ver 0.2.56 produces segment error for /embeddings on MacOS
call python -m pip install llama-cpp-python[server]!=0.2.56
@REM @rem start the server with passed params
call python -m llama_cpp.server %*
call conda deactivate
goto :end
@rem the end of main code execution
@rem below are the functions used in the above execution
:print_highlight
echo.
echo ******************************************************
echo %~1
echo ******************************************************
echo.
goto :eof
:path_sanity_check
echo "Path sanity checking"
echo "%cd%"| findstr /C:" " >nul ^
&& (call :print_highlight "This script relies on Miniconda which can not be silently installed under a path with spaces." ^
&& goto :end)
goto :eof
:deactivate_environment
echo "Deactivate existing environment(s)"
(call conda deactivate && call conda deactivate && call conda deactivate) 2>nul
goto :eof
:check_conda_existence
echo "Check for conda existence"
set conda_exists=F
@rem figure out whether conda exists
call "%CONDA_ROOT_PREFIX%\_conda.exe" --version >nul 2>&1
if "%ERRORLEVEL%" EQU "0" set conda_exists=T
@rem verify if conda is installed by the main app, if not then raise error
if "%conda_exists%" == "F" (
call :print_highlight "conda is not installed, seems like the app wasn't installed correctly."
goto :end
)
goto :eof
:create_conda_environment
@rem create the environment if needed
if not exist "%INSTALL_ENV_DIR%" (
echo "Create conda environment"
call "%CONDA_ROOT_PREFIX%\_conda.exe" create ^
--no-shortcuts -y -k --prefix "%INSTALL_ENV_DIR%" python="%PYTHON_VERSION%" || ^
( echo. && call :print_highlight "Conda environment creation failed." && goto :end )
)
@rem check if conda environment was actually created
if not exist "%INSTALL_ENV_DIR%\python.exe" (
call :print_highlight "Conda environment was not correctly created."
goto :end
)
goto :eof
:isolate_environment
echo "Isolate environment"
set PYTHONNOUSERSITE=1
set PYTHONPATH=
set PYTHONHOME=
goto :eof
:activate_environment
echo "Activate conda environment"
call "%CONDA_ROOT_PREFIX%\condabin\conda.bat" activate "%INSTALL_ENV_DIR%" || ^
( echo. && call :print_highlight "Miniconda hook not found." && goto :end )
goto :eof
:end