Spaces:
Paused
Paused
| # functions used in the main code execution | |
| function print_highlight() { | |
| local message="${1}" | |
| echo "" && echo "******************************************************" | |
| echo $message | |
| echo "******************************************************" && echo "" | |
| } | |
| function path_sanity_check() { | |
| echo "Path sanity checking" | |
| if [[ $PWD =~ \ ]]; then | |
| print_highlight "This script relies on Miniconda which can't be silently installed under a path with spaces. Please run it from a path without spaces." | |
| exit 1 | |
| fi | |
| } | |
| function deactivate_environment() { | |
| echo "Deactivate existing environment(s)" | |
| # deactivate existing conda envs as needed to avoid conflicts | |
| { conda deactivate && conda deactivate && conda deactivate; } 2>/dev/null | |
| } | |
| function check_conda_existence() { | |
| echo "Check for conda existence" | |
| conda_exists="F" | |
| # figure out whether conda exists | |
| if "$CONDA_ROOT_PREFIX/bin/conda" --version &>/dev/null; then conda_exists="T"; fi | |
| # verify if conda is installed by the main app, if not then raise error | |
| if [ "$conda_exists" == "F" ]; then | |
| # test the conda binary | |
| print_highlight "conda is not installed, seems like the app wasn't installed correctly." | |
| exit | |
| fi | |
| } | |
| function create_conda_environment() { | |
| # create the environment if needed | |
| if [ ! -e "$INSTALL_ENV_DIR" ]; then | |
| echo "Create conda environment" | |
| "$CONDA_ROOT_PREFIX/bin/conda" create -y -k --prefix "$INSTALL_ENV_DIR" python="$PYTHON_VERSION" || { | |
| echo && print_highlight "Conda environment creation failed." && exit 1 | |
| } | |
| fi | |
| # check if conda environment was actually created | |
| if [ ! -e "$INSTALL_ENV_DIR/bin/python" ]; then | |
| print_highlight "Conda environment was not correctly created." | |
| exit 1 | |
| fi | |
| } | |
| function isolate_environment() { | |
| echo "Isolate environment" | |
| export PYTHONNOUSERSITE=1 | |
| unset PYTHONPATH | |
| unset PYTHONHOME | |
| } | |
| function activate_environment() { | |
| echo "Activate conda environment" | |
| source "$CONDA_ROOT_PREFIX/etc/profile.d/conda.sh" # otherwise conda complains about 'shell not initialized' (needed when running in a script) | |
| conda activate "$INSTALL_ENV_DIR" | |
| } | |
| # main code execution | |
| cd "$(dirname "${BASH_SOURCE[0]}")/.." | |
| echo "Changed the current directory to: $(pwd)" | |
| path_sanity_check | |
| deactivate_environment | |
| # config | |
| ENV_NAME="llama-cpp-python-server" | |
| PYTHON_VERSION="3.10" | |
| CONDA_ROOT_PREFIX="$(pwd)/install_dir/conda" | |
| INSTALL_ENV_DIR="$(pwd)/install_dir/server_envs/${ENV_NAME}" | |
| check_conda_existence | |
| create_conda_environment | |
| isolate_environment | |
| activate_environment | |
| # install dependencies | |
| # ver 0.2.56 produces segment error for /embeddings on MacOS | |
| python -m pip install llama-cpp-python[server]==0.2.55 | |
| # start the server with passed params | |
| python -m llama_cpp.server $@ | |
| conda deactivate | |