Non-interactive mode, new warning, new default config for accel
We now warn the user with a nicely formatted message if they have less than 10Gb space free and offer a 10s window to cancel operations. We now try to configure accelerate with no user input by default, but allow an override.
This commit is contained in:
parent
ee1ac64034
commit
71c9459db2
@ -85,10 +85,11 @@ Options:
|
|||||||
-d DIR, --dir=DIR The full path you want kohya_ss installed to.
|
-d DIR, --dir=DIR The full path you want kohya_ss installed to.
|
||||||
-g, --git_repo You can optionally provide a git repo to checkout for runpod installation. Useful for custom forks.
|
-g, --git_repo You can optionally provide a git repo to checkout for runpod installation. Useful for custom forks.
|
||||||
-r, --runpod Forces a runpod installation. Useful if detection fails for any reason.
|
-r, --runpod Forces a runpod installation. Useful if detection fails for any reason.
|
||||||
|
-i, --interactive Interactively configure accelerate instead of using default config file.
|
||||||
-h, --help Show this screen.
|
-h, --help Show this screen.
|
||||||
```
|
```
|
||||||
|
|
||||||
During the accelerate config screen after running the script answer "This machine", "None", "No" for the remaining questions.
|
If you are using the interactive mode, our default values for the accelerate config screen after running the script answer "This machine", "None", "No" for the remaining questions.
|
||||||
These are the same answers as the Windows install.
|
These are the same answers as the Windows install.
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
22
config_files/accelerate/default_config.yaml
Normal file
22
config_files/accelerate/default_config.yaml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
command_file: null
|
||||||
|
commands: null
|
||||||
|
compute_environment: LOCAL_MACHINE
|
||||||
|
deepspeed_config: {}
|
||||||
|
distributed_type: 'NO'
|
||||||
|
downcast_bf16: 'no'
|
||||||
|
dynamo_backend: 'NO'
|
||||||
|
fsdp_config: {}
|
||||||
|
gpu_ids: all
|
||||||
|
machine_rank: 0
|
||||||
|
main_process_ip: null
|
||||||
|
main_process_port: null
|
||||||
|
main_training_function: main
|
||||||
|
megatron_lm_config: {}
|
||||||
|
mixed_precision: 'no'
|
||||||
|
num_machines: 1
|
||||||
|
num_processes: 1
|
||||||
|
rdzv_backend: static
|
||||||
|
same_network: true
|
||||||
|
tpu_name: null
|
||||||
|
tpu_zone: null
|
||||||
|
use_cpu: false
|
53
setup.sh
53
setup.sh
@ -18,6 +18,7 @@ Options:
|
|||||||
-d DIR, --dir=DIR The full path you want kohya_ss installed to.
|
-d DIR, --dir=DIR The full path you want kohya_ss installed to.
|
||||||
-g, --git_repo You can optionally provide a git repo to checkout for runpod installation. Useful for custom forks.
|
-g, --git_repo You can optionally provide a git repo to checkout for runpod installation. Useful for custom forks.
|
||||||
-r, --runpod Forces a runpod installation. Useful if detection fails for any reason.
|
-r, --runpod Forces a runpod installation. Useful if detection fails for any reason.
|
||||||
|
-i, --interactive Interactively configure accelerate instead of using default config file.
|
||||||
-h, --help Show this screen.
|
-h, --help Show this screen.
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
@ -27,8 +28,9 @@ DIR="/workspace/kohya_ss"
|
|||||||
BRANCH="master"
|
BRANCH="master"
|
||||||
GIT_REPO="https://github.com/bmaltais/kohya_ss.git"
|
GIT_REPO="https://github.com/bmaltais/kohya_ss.git"
|
||||||
RUNPOD=false
|
RUNPOD=false
|
||||||
|
INTERACTIVE=false
|
||||||
|
|
||||||
while getopts "b:d:g:r-:" opt; do
|
while getopts "b:d:g:ir-:" opt; do
|
||||||
# support long options: https://stackoverflow.com/a/28466267/519360
|
# support long options: https://stackoverflow.com/a/28466267/519360
|
||||||
if [ "$opt" = "-" ]; then # long option: reformulate OPT and OPTARG
|
if [ "$opt" = "-" ]; then # long option: reformulate OPT and OPTARG
|
||||||
opt="${OPTARG%%=*}" # extract long option name
|
opt="${OPTARG%%=*}" # extract long option name
|
||||||
@ -39,6 +41,7 @@ while getopts "b:d:g:r-:" opt; do
|
|||||||
b | branch) BRANCH="$OPTARG" ;;
|
b | branch) BRANCH="$OPTARG" ;;
|
||||||
d | dir) DIR="$OPTARG" ;;
|
d | dir) DIR="$OPTARG" ;;
|
||||||
g | git-repo) GIT_REPO="$OPTARG" ;;
|
g | git-repo) GIT_REPO="$OPTARG" ;;
|
||||||
|
i | interactive) INTERACTIVE=true ;;
|
||||||
r | runpod) RUNPOD=true ;;
|
r | runpod) RUNPOD=true ;;
|
||||||
h) display_help && exit 0 ;;
|
h) display_help && exit 0 ;;
|
||||||
*) display_help && exit 0 ;;
|
*) display_help && exit 0 ;;
|
||||||
@ -116,10 +119,29 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# This checks for free space on the installation drive and returns that in Gb.
|
||||||
|
size_available() {
|
||||||
|
local FREESPACEINKB="$(df -Pk "$DIR" | sed 1d | grep -v used | awk '{ print $4 "\t" }')"
|
||||||
|
local FREESPACEINGB=$((FREESPACEINKB / 1024 / 1024))
|
||||||
|
echo "$FREESPACEINGB"
|
||||||
|
}
|
||||||
|
|
||||||
if env_var_exists RUNPOD_POD_ID || env_var_exists RUNPOD_API_KEY; then
|
if env_var_exists RUNPOD_POD_ID || env_var_exists RUNPOD_API_KEY; then
|
||||||
RUNPOD=true
|
RUNPOD=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Offer a warning and opportunity to cancel the installation if < 10Gb of Free Space detected
|
||||||
|
if [ "$(size_available)" -lt 10 ]; then
|
||||||
|
echo "You have less than 10Gb of free space. This installation may fail."
|
||||||
|
MSGTIMEOUT=10 # In seconds
|
||||||
|
MESSAGE="Continuing in..."
|
||||||
|
echo "Press control-c to cancel the installation."
|
||||||
|
for ((i = $MSGTIMEOUT; i >= 0; i--)); do
|
||||||
|
printf "\r${MESSAGE} %ss. " "${i}"
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
# This is the pre-install work for a kohya installation on a runpod
|
# This is the pre-install work for a kohya installation on a runpod
|
||||||
if [ "$RUNPOD" = true ]; then
|
if [ "$RUNPOD" = true ]; then
|
||||||
if [ -d "$VENV_DIR" ]; then
|
if [ -d "$VENV_DIR" ]; then
|
||||||
@ -221,6 +243,33 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$VENV_DIR/lib/python3.10/site-packages/tensorrt/"
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$VENV_DIR/lib/python3.10/site-packages/tensorrt/"
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$VENV_DIR/lib/python3.10/site-packages/nvidia/cuda_runtime/lib/"
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$VENV_DIR/lib/python3.10/site-packages/nvidia/cuda_runtime/lib/"
|
||||||
|
|
||||||
|
# Attempt to non-interactively install a default accelerate config file unless specified otherwise.
|
||||||
|
# Documentation for order of precedence locations for configuration file for automated installation:
|
||||||
|
# https://huggingface.co/docs/accelerate/basic_tutorials/launch#custom-configurations
|
||||||
|
if [ "$INTERACTIVE" = true ]; then
|
||||||
|
accelerate config
|
||||||
|
else
|
||||||
|
if env_var_exists HF_HOME; then
|
||||||
|
if [ ! -f "$HF_HOME/accelerate/default_config.yaml" ]; then
|
||||||
|
mkdir -p "$HF_HOME/accelerate/" &&
|
||||||
|
cp ./config_files/accelerate/default_config.yaml "$HF_HOME/accelerate/default_config.yaml"
|
||||||
|
fi
|
||||||
|
elif env_var_exists XDG_CACHE_HOME; then
|
||||||
|
if [ ! -f "$XDG_CACHE_HOME/huggingface/accelerate" ]; then
|
||||||
|
mkdir -p "$XDG_CACHE_HOME/huggingface/accelerate" &&
|
||||||
|
cp ./config_files/accelerate/default_config.yaml "$XDG_CACHE_HOME/huggingface/accelerate/default_config.yaml"
|
||||||
|
fi
|
||||||
|
elif env_var_exists HOME; then
|
||||||
|
if [ ! -f "$HOME/.cache/huggingface/accelerate" ]; then
|
||||||
|
mkdir -p "$HOME/.cache/huggingface/accelerate" &&
|
||||||
|
cp ./config_files/accelerate/default_config.yaml "$HOME/.cache/huggingface/accelerate/default_config.yaml"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Could not place the accelerate configuration file. Please configure manually."
|
||||||
|
accelerate config
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# This is a non-interactive environment, so just directly call gui.sh after all setup steps are complete.
|
# This is a non-interactive environment, so just directly call gui.sh after all setup steps are complete.
|
||||||
if command -v bash >/dev/null; then
|
if command -v bash >/dev/null; then
|
||||||
bash "$DIR"/gui.sh
|
bash "$DIR"/gui.sh
|
||||||
@ -230,8 +279,6 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
accelerate config
|
|
||||||
|
|
||||||
echo -e "Setup finished! Run \e[0;92m./gui.sh\e[0m to start."
|
echo -e "Setup finished! Run \e[0;92m./gui.sh\e[0m to start."
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
# The initial setup script to prep the environment on macOS
|
# The initial setup script to prep the environment on macOS
|
||||||
|
Loading…
Reference in New Issue
Block a user