From 36bfb17edaaa6c9b04e929118cd2946a6fad9650 Mon Sep 17 00:00:00 2001 From: erew123 <35898566+erew123@users.noreply.github.com> Date: Fri, 12 Jan 2024 11:30:12 +0000 Subject: [PATCH] Updated atsetup.sh --- atsetup.sh | 218 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 129 insertions(+), 89 deletions(-) diff --git a/atsetup.sh b/atsetup.sh index 6785cf4..5712b1c 100644 --- a/atsetup.sh +++ b/atsetup.sh @@ -1,9 +1,19 @@ #!/bin/bash # ANSI color codes -RED='\033[1;34m' +RED='\033[1;31m' GREEN='\033[1;32m' YELLOW='\033[1;33m' +BLUE='\033[1;34m' +CYAN='\033[1;36m' +MAGENTA='\033[1;35m' +WHITE='\033[1;37m' +L_RED='\033[1;91m' +L_GREEN='\033[1;92m' +L_YELLOW='\033[1;93m' +L_BLUE='\033[1;94m' +L_CYAN='\033[1;96m' +L_MAGENTA='\033[1;95m' NC='\033[0m' # No Color # Navigate to the script's directory @@ -23,16 +33,15 @@ main_menu() { while true; do clear echo - echo "Welcome to the AllTalk Setup Utility" + echo -e " ${L_BLUE}ALLTALK LINUX SETUP UTILITY${NC}" echo - echo "Please select an option:" + echo " INSTALLATION TYPE" + echo -e " 1) I am using AllTalk as part of ${L_GREEN}Text-generation-webui${NC}" + echo -e " 2) I am using AllTalk as a ${L_GREEN}Standalone Application${NC}" echo - echo " 1) I am using AllTalk as part of Text-generation-webui" - echo " 2) I am using AllTalk as a Standalone Application" + echo -e " 9)${L_RED} Exit/Quit${NC}" echo - echo " 9) Exit/Quit" - echo - read -p "Enter your choice: " user_option + read -p " Enter your choice: " user_option case $user_option in 1) webui_menu ;; @@ -48,21 +57,27 @@ webui_menu() { while true; do clear echo - echo "You have selected Text-generation-webui." + echo -e " ${L_BLUE}TEXT-GENERATION-WEBUI SETUP${NC}" echo - echo -e "Please ensure you have started your Text-generation-webui Python environment." - echo -e "If you have NOT done this, please run ${GREEN}/cmd_linux.sh${NC} in the ${GREEN}text-generation-webui${NC} folder and then re-run this script." + echo -e " Please ensure you have started your Text-generation-webui Python" + echo -e " environment. If you have NOT done this, please run ${L_GREEN}/cmd_linux.sh${NC}" + echo -e " in the ${L_GREEN}text-generation-webui${NC} folder and then re-run this script." echo - echo " 1) Install the requirements for a Nvidia machine." - echo " 2) Install the requirements for an AMD or MAC machine." + echo " BASE REQUIREMENTS" + echo -e " 1) Install the AllTalk requirements for an ${L_GREEN}Nvidia GPU machine.${NC}" + echo -e " 2) Install the AllTalk requirements for an ${L_GREEN}AMD or MAC machine.${NC}" + echo + echo " OPTIONAL" echo " 3) Install the Finetuning requirements." echo " 4) Install DeepSpeed." echo " 5) Uninstall DeepSpeed." + echo + echo " OTHER" echo " 6) Generate a diagnostics file." echo - echo " 9) Back to Main Menu" + echo -e " 9)${L_RED} Exit/Quit${NC}" echo - read -p "Enter your choice: " webui_option + read -p " Enter your choice: " webui_option case $webui_option in 1) install_nvidia_textgen ;; @@ -71,7 +86,7 @@ webui_menu() { 4) install_deepspeed ;; 5) uninstall_deepspeed ;; 6) generate_diagnostics_textgen ;; - 9) break ;; + 9) exit 0 ;; *) echo "Invalid option"; sleep 2 ;; esac done @@ -79,76 +94,90 @@ webui_menu() { install_nvidia_textgen() { local requirements_file="requirements_nvidia.txt" - echo "Installing Finetune requirements from $requirements_file..." + echo " Installing Finetune requirements from $requirements_file..." if ! pip install -r "$requirements_file"; then - echo "There was an error installing the Nvidia requirements." - echo "Please check the output for details." - read -p "Press any key to return to the menu. " -n 1 + echo " There was an error installing the Nvidia requirements." + echo " Please check the output for details." + read -p " Press any key to return to the menu. " -n 1 echo return fi - echo "Nvidia requirements installed successfully." - read -p "Press any key to continue. " -n 1 + echo " Nvidia requirements installed successfully." + read -p " Press any key to continue. " -n 1 echo } install_other_textgen() { local requirements_file="requirements_other.txt" - echo "Installing Other machine requirements from $requirements_file..." + echo " Installing Other machine requirements from $requirements_file..." if ! pip install -r "$requirements_file"; then - echo "There was an error installing the Other requirements." - echo "Please check the output for details." - read -p "Press any key to return to the menu. " -n 1 + echo " There was an error installing the Other requirements." + echo " Please check the output for details." + read -p " Press any key to return to the menu. " -n 1 echo return fi - echo "Other machine requirements installed successfully." - read -p "Press any key to continue. " -n 1 + echo " Other machine requirements installed successfully." + read -p " Press any key to continue. " -n 1 echo } install_finetune_textgen() { local requirements_file="requirements_finetune.txt" - echo "Installing Finetune requirements from $requirements_file..." + echo " Installing Finetune requirements from $requirements_file..." if ! pip install -r "$requirements_file"; then - echo "There was an error installing the Finetune requirements." - echo "Please check the output for details." - read -p "Press any key to return to the menu. " -n 1 + echo " There was an error installing the Finetune requirements." + echo " Please check the output for details." + read -p " Press any key to return to the menu. " -n 1 echo return fi - echo "Finetune requirements installed successfully." - read -p "Press any key to continue. " -n 1 + echo + echo " Finetune base requirements installed successfully." + echo + echo -e " Finetuning requires access to ${GREEN}Cublas${NC} from the ${GREEN}Nvidia CUDA Toolkit${NC}, so will need installing." + echo + echo -e " Instructions can be found here:" + echo -e " ${GREEN}https://github.com/erew123/alltalk_tts?#-finetuning-a-model${NC}" + echo + read -p " Press any key to continue. " -n 1 echo } # Function to install DeepSpeed install_deepspeed() { clear - echo -e "${YELLOW}DeepSpeed Installation Prerequisites:${NC}" echo - echo -e " 1. NVIDIA CUDA Toolkit must be installed from ${GREEN}https://developer.nvidia.com/cuda-toolkit-archive${NC} or your ${GREEN}Linux package manager${NC}." - echo -e " 2. ${GREEN}libaio-dev${NC} must be installed." - echo -e " 3. The environment variable ${GREEN}CUDA_HOME${NC} must be set (e.g. export CUDA_HOME=/usr/local/cuda)." - - echo -e "\n${RED}Please confirm that you have completed these steps before continuing with the DeepSpeed installation.${NC}" + echo -e " ${L_BLUE}DEEPSPEED INSTALLATION REQUIREMENTS${NC}" echo - read -p "Have you completed all the above steps? (y/n): " confirm + echo -e " - NVIDIA CUDA Toolkit must be installed from your ${L_GREEN}Linux package manager${NC}" + echo -e " or ${L_GREEN}https://developer.nvidia.com/cuda-toolkit-archive${NC}" + echo -e " - The environment variable ${L_GREEN}CUDA_HOME${NC} must be set in your Python env" + echo -e " e.g. export CUDA_HOME=/usr/local/cuda." + echo -e " - ${L_GREEN}libaio-dev${NC} must be installed." + echo + echo -e " See the following link for full instructions:" + echo -e " ${L_GREEN}https://github.com/erew123/alltalk_tts?#-deepspeed-installation-options${NC}" + echo + echo -e " ${L_BLUE}Please ${L_RED}confirm${L_BLUE} that you have completed these steps before continuing" + echo -e " with the DeepSpeed installation, or the install ${L_RED}will fail.${NC}" + echo + read -p " Have you completed all the above steps? (y/n): " confirm if [ "$confirm" != "y" ]; then - echo -e "${RED}DeepSpeed installation cannot proceed without completing the prerequisites.${NC}" + echo -e " ${RED}DeepSpeed installation cannot proceed without completing the prerequisites.${NC}" return fi - echo -e "\n${GREEN}Proceeding with DeepSpeed installation...${NC}" + echo -e "\n ${GREEN}Proceeding with DeepSpeed installation...${NC}" pip install deepspeed if [ $? -ne 0 ]; then - echo -e "${RED}There was an error installing DeepSpeed.${NC}" + echo -e " ${RED}There was an error installing DeepSpeed.${NC}" return fi - echo -e "${GREEN}DeepSpeed installed successfully.${NC}" - read -p "Press any key to continue. " -n 1 + echo -e " ${GREEN}DeepSpeed installed successfully.${NC}" + read -p " Press any key to continue. " -n 1 echo } @@ -156,27 +185,27 @@ uninstall_deepspeed() { echo "Uninstalling DeepSpeed..." pip uninstall -y deepspeed if [ $? -ne 0 ]; then - echo "There was an error uninstalling DeepSpeed." - echo "Press any key to return to the menu." + echo " There was an error uninstalling DeepSpeed." + echo " Press any key to return to the menu." read -n 1 return fi - echo "DeepSpeed uninstalled successfully." - echo "Press any key to continue." + echo " DeepSpeed uninstalled successfully." + echo " Press any key to continue." read -n 1 } generate_diagnostics_textgen() { # Run diagnostics if ! python diagnostics.py; then - echo "There was an error running diagnostics." - read -p "Press any key to return to the menu. " -n 1 + echo " There was an error running diagnostics." + read -p " Press any key to return to the menu. " -n 1 echo return fi - echo "Diagnostics completed successfully." - read -p "Press any key to continue. " -n 1 + echo " Diagnostics completed successfully." + read -p " Press any key to continue. " -n 1 echo } @@ -185,17 +214,22 @@ standalone_menu() { while true; do clear echo - echo "You have selected Standalone Application Setup." + echo -e " ${L_BLUE}ALLTALK STANDALONE APPLICATION SETUP${NC}" echo - echo " 1) Install AllTalk's custom Python environment (Setup AllTalk as a standalone Application)" + echo " BASE REQUIREMENTS" + echo " 1) Install AllTalk as a Standalone Application" + echo + echo " OPTIONAL" echo " 2) Delete AllTalk's custom Python environment" echo " 3) Install the Finetuning requirements" echo " 4) Install DeepSpeed." + echo + echo " OTHER" echo " 5) Generate a diagnostics file" echo - echo " 9) Back to Main Menu" + echo -e " 9)${L_RED} Exit/Quit${NC}" echo - read -p "Enter your choice: " standalone_option + read -p " Enter your choice: " standalone_option case $standalone_option in 1) install_custom_standalone ;; @@ -203,7 +237,7 @@ standalone_menu() { 3) install_finetune_standalone ;; 4) install_deepspeed ;; 5) generate_diagnostics_standalone ;; - 9) break ;; + 9) exit 0 ;; *) echo "Invalid option"; sleep 2 ;; esac done @@ -252,12 +286,12 @@ install_custom_standalone() { conda activate "${INSTALL_ENV_DIR}" echo - echo "Choose the type of requirements to install:" + echo -e " ${L_BLUE}Choose the type of requirements to install${NC}" echo - echo " 1. Nvidia graphics card machines" - echo " 2. Other machines (mac, amd, etc)" + echo " 1. Nvidia graphics card machines" + echo " 2. Other machines (mac, amd, etc)" echo - read -p "Enter your choice (1 or 2): " user_choice + read -p " Enter your choice (1 or 2): " user_choice if [ "$user_choice" == "1" ]; then pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --upgrade --force-reinstall --index-url https://download.pytorch.org/whl/cu121 @@ -291,10 +325,10 @@ EOF chmod +x start_alltalk.sh echo echo - echo "start_alltalk.sh has been created." - echo -e "You can now start AllTalk with ${YELLOW}./start_alltalk.sh${NC}" + echo -e " start_alltalk.sh has been created." + echo -e " You can now start AllTalk with ${L_YELLOW}./start_alltalk.sh${NC}" echo - read -p "Press any key to continue. " -n 1 + read -p " Press any key to continue. " -n 1 } @@ -302,25 +336,25 @@ delete_custom_standalone() { local env_dir="$PWD/alltalk_environment" # Check if the alltalk_environment directory exists if [ ! -d "$env_dir" ]; then - echo "\"$env_dir\" directory does not exist. No need to delete." - read -p "Press any key to continue. " -n 1 + echo " \"$env_dir\" directory does not exist. No need to delete." + read -p " Press any key to continue. " -n 1 echo return fi # Check if a Conda environment is active and deactivate it if [ -n "$CONDA_PREFIX" ]; then - echo "Exiting the Conda environment. You may need to start ./atstart.sh again" + echo " Exiting the Conda environment. You may need to start ./atstart.sh again" conda deactivate fi echo "Deleting \"$env_dir\". Please wait." rm -rf "$env_dir" if [ -d "$env_dir" ]; then - echo "Failed to delete \"$env_dir\" folder." - echo "Please make sure it is not in use and try again." + echo " Failed to delete \"$env_dir\" folder." + echo " Please make sure it is not in use and try again." else - echo "Environment \"$env_dir\" deleted successfully." + echo " Environment \"$env_dir\" deleted successfully." fi - read -p "Press any key to continue. " -n 1 + read -p " Press any key to continue. " -n 1 echo } @@ -329,9 +363,9 @@ install_finetune_standalone() { local conda_root_prefix="${env_dir}/conda" local install_env_dir="${env_dir}/env" if [ ! -d "${install_env_dir}" ]; then - echo "The Conda environment at '${install_env_dir}' does not exist." - echo "Please install the environment before proceeding." - read -p "Press any key to return to the menu. " -n 1 + echo " The Conda environment at '${install_env_dir}' does not exist." + echo " Please install the environment before proceeding." + read -p " Press any key to return to the menu. " -n 1 echo return fi @@ -340,39 +374,45 @@ install_finetune_standalone() { local requirements_file="requirements_finetune.txt" echo "Installing Finetune requirements from $requirements_file..." if ! pip install -r "$requirements_file"; then - echo "There was an error installing the Finetune requirements." - echo "Please check the output for details." - read -p "Press any key to return to the menu. " -n 1 + echo " There was an error installing the Finetune requirements." + echo " Please check the output for details." + read -p " Press any key to return to the menu. " -n 1 echo return fi - echo "Finetune requirements installed successfully." - read -p "Press any key to continue. " -n 1 + echo + echo " Finetune base requirements installed successfully." + echo + echo -e " Finetuning requires access to ${GREEN}Cublas${NC} from the ${GREEN}Nvidia CUDA Toolkit${NC}, so will need installing." + echo + echo -e " Instructions can be found here:" + echo -e " ${GREEN}https://github.com/erew123/alltalk_tts?#-finetuning-a-model${NC}" + echo + read -p " Press any key to continue. " -n 1 echo } - generate_diagnostics_standalone() { local env_dir="$PWD/alltalk_environment" local conda_root_prefix="${env_dir}/conda" local install_env_dir="${env_dir}/env" if [ ! -d "${install_env_dir}" ]; then - echo "The Conda environment at '${install_env_dir}' does not exist." - echo "Please install the environment before proceeding." - read -p "Press any key to return to the menu. " -n 1 + echo " The Conda environment at '${install_env_dir}' does not exist." + echo " Please install the environment before proceeding." + read -p " Press any key to return to the menu. " -n 1 echo return fi source "${conda_root_prefix}/etc/profile.d/conda.sh" conda activate "${install_env_dir}" if ! python diagnostics.py; then - echo "There was an error running diagnostics." - read -p "Press any key to return to the menu. " -n 1 + echo " There was an error running diagnostics." + read -p " Press any key to return to the menu. " -n 1 echo return fi - echo "Diagnostics completed successfully." - read -p "Press any key to continue. " -n 1 + echo " Diagnostics completed successfully." + read -p " Press any key to continue. " -n 1 echo }