mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2024-12-20 21:03:07 +00:00
167 lines
4.9 KiB
Bash
167 lines
4.9 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
echo "L🌟LLMS: Lord of Large Language and Multimodal Systems"
|
||
|
echo "V14 SaÏf"
|
||
|
echo "-----------------"
|
||
|
echo "By ParisNeo"
|
||
|
echo "-----------------"
|
||
|
|
||
|
# Store the current path
|
||
|
ORIGINAL_PATH=$(pwd)
|
||
|
|
||
|
cd "$(dirname "$0")"
|
||
|
|
||
|
echo $(pwd)
|
||
|
|
||
|
# Check if Homebrew is installed
|
||
|
if ! command -v brew &> /dev/null
|
||
|
then
|
||
|
echo "Homebrew is not installed. Installing Homebrew..."
|
||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
|
else
|
||
|
echo "Homebrew is already installed."
|
||
|
fi
|
||
|
|
||
|
# Check if Git is installed
|
||
|
if ! command -v git &> /dev/null
|
||
|
then
|
||
|
echo "Git is not installed. Installing Git using Homebrew..."
|
||
|
brew install git
|
||
|
else
|
||
|
echo "Git is already installed."
|
||
|
fi
|
||
|
|
||
|
LOLLMSENV_DIR="$PWD/lollmsenv"
|
||
|
REPO_URL="https://github.com/ParisNeo/lollms-webui.git"
|
||
|
|
||
|
USE_MASTER=0
|
||
|
if [ "$1" == "--use-master" ]; then
|
||
|
USE_MASTER=1
|
||
|
fi
|
||
|
|
||
|
if [ $USE_MASTER -eq 1 ]; then
|
||
|
echo "--- Using current master repo for LollmsEnv..."
|
||
|
git clone https://github.com/ParisNeo/LollmsEnv.git "$LOLLMSENV_DIR"
|
||
|
cd "$LOLLMSENV_DIR"
|
||
|
bash install.sh --dir "$LOLLMSENV_DIR" -y
|
||
|
cd ..
|
||
|
else
|
||
|
# Download LollmsEnv installer
|
||
|
echo "Downloading LollmsEnv installer..."
|
||
|
curl -O https://github.com/ParisNeo/LollmsEnv/releases/download/V1.4.2/lollmsenv_installer.sh
|
||
|
# Install LollmsEnv
|
||
|
echo "--- Installing lollmsenv"
|
||
|
bash lollmsenv_installer.sh --dir "$LOLLMSENV_DIR" -y
|
||
|
fi
|
||
|
|
||
|
# Check for Metal support (Apple's GPU framework)
|
||
|
echo "--- Checking for Metal support..."
|
||
|
if system_profiler SPDisplaysDataType | grep -q "Metal: Supported"
|
||
|
then
|
||
|
echo "Metal is supported on this Mac."
|
||
|
echo "For optimal performance with Metal, ensure you have the latest version of macOS and Xcode Command Line Tools."
|
||
|
else
|
||
|
echo "Metal support not detected. You may experience reduced performance for GPU-accelerated tasks."
|
||
|
fi
|
||
|
|
||
|
# Check for Xcode Command Line Tools (includes Clang)
|
||
|
if ! command -v clang &> /dev/null
|
||
|
then
|
||
|
echo "Xcode Command Line Tools (including Clang) are not installed. Installing..."
|
||
|
xcode-select --install
|
||
|
else
|
||
|
echo "Xcode Command Line Tools (including Clang) are already installed."
|
||
|
fi
|
||
|
|
||
|
cd "$ORIGINAL_PATH"
|
||
|
echo $(pwd)
|
||
|
|
||
|
# Install Python and create environment
|
||
|
echo "--- creating environment"
|
||
|
"$LOLLMSENV_DIR/bin/lollmsenv" create-env lollms_env
|
||
|
echo "--- activating environment"
|
||
|
# Activate environment
|
||
|
source "$LOLLMSENV_DIR/envs/lollms_env/bin/activate"
|
||
|
echo "$ORIGINAL_PATH"
|
||
|
cd "$ORIGINAL_PATH"
|
||
|
echo "--- cloning lollmw_webui"
|
||
|
|
||
|
# Clone or update repository
|
||
|
if [ -d "lollms-webui" ]; then
|
||
|
cd lollms-webui
|
||
|
git pull
|
||
|
git submodule update --init --recursive
|
||
|
cd ..
|
||
|
else
|
||
|
git clone --depth 1 --recurse-submodules "$REPO_URL"
|
||
|
cd lollms-webui
|
||
|
git submodule update --init --recursive
|
||
|
cd ..
|
||
|
fi
|
||
|
|
||
|
# Install requirements
|
||
|
echo "--- Install requirements"
|
||
|
cd lollms-webui
|
||
|
"$LOLLMSENV_DIR/envs/lollms_env/bin/python" -m pip install -r requirements.txt
|
||
|
"$LOLLMSENV_DIR/envs/lollms_env/bin/python" -m pip install -e lollms_core
|
||
|
cd ..
|
||
|
|
||
|
# Create launcher scripts
|
||
|
echo '#!/bin/bash' > lollms.sh
|
||
|
echo 'source "$LOLLMSENV_DIR/envs/lollms_env/bin/activate"' >> lollms.sh
|
||
|
echo 'cd lollms-webui' >> lollms.sh
|
||
|
echo 'python app.py "$@"' >> lollms.sh
|
||
|
chmod +x lollms.sh
|
||
|
|
||
|
echo '#!/bin/bash' > lollms_terminal.sh
|
||
|
echo 'source "$LOLLMSENV_DIR/envs/lollms_env/bin/activate"' >> lollms_terminal.sh
|
||
|
echo 'cd lollms-webui' >> lollms_terminal.sh
|
||
|
echo 'bash' >> lollms_terminal.sh
|
||
|
chmod +x lollms_terminal.sh
|
||
|
|
||
|
cd lollms-webui
|
||
|
|
||
|
echo "--- current folder $(pwd)"
|
||
|
# Binding selection menu
|
||
|
echo "Select the default binding to be installed:"
|
||
|
echo "1) None (install the binding later)"
|
||
|
echo "2) Local binding - ollama"
|
||
|
echo "3) Local binding - python_llama_cpp"
|
||
|
echo "4) Local binding - bs_exllamav2"
|
||
|
echo "5) Remote binding - groq"
|
||
|
echo "6) Remote binding - open_router"
|
||
|
echo "7) Remote binding - open_ai"
|
||
|
echo "8) Remote binding - mistral_ai"
|
||
|
echo "9) Remote binding - gemini"
|
||
|
echo "10) Remote binding - vllm"
|
||
|
echo "11) Remote binding - xAI"
|
||
|
echo "12) Remote binding - elf"
|
||
|
echo "13) Remote binding - remote lollms"
|
||
|
|
||
|
read -p "Type the number of your choice and press Enter: " choice
|
||
|
|
||
|
# Binding installation logic
|
||
|
case $choice in
|
||
|
1) ;;
|
||
|
2) python zoos/bindings_zoo/ollama/__init__.py ;;
|
||
|
3) python zoos/bindings_zoo/python_llama_cpp/__init__.py ;;
|
||
|
4) python zoos/bindings_zoo/bs_exllamav2/__init__.py ;;
|
||
|
5) python zoos/bindings_zoo/groq/__init__.py ;;
|
||
|
6) python zoos/bindings_zoo/open_router/__init__.py ;;
|
||
|
7) python zoos/bindings_zoo/open_ai/__init__.py ;;
|
||
|
8) python zoos/bindings_zoo/mistral_ai/__init__.py ;;
|
||
|
9) python zoos/bindings_zoo/gemini/__init__.py ;;
|
||
|
10) python zoos/bindings_zoo/vllm/__init__.py ;;
|
||
|
11) python zoos/bindings_zoo/xAI/__init__.py ;;
|
||
|
12) python zoos/bindings_zoo/elf/__init__.py ;;
|
||
|
13) python zoos/bindings_zoo/remote_lollms/__init__.py ;;
|
||
|
esac
|
||
|
|
||
|
echo "Installation complete."
|
||
|
|
||
|
# Restore the original path
|
||
|
cd "$ORIGINAL_PATH"
|
||
|
echo "Restored to original path: $(pwd)"
|
||
|
|
||
|
read -p "Press enter to exit"
|