sheepit scripts for vast ai
This commit is contained in:
File diff suppressed because it is too large
Load Diff
211
Sheepit-Script.sh
Normal file
211
Sheepit-Script.sh
Normal file
@@ -0,0 +1,211 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
script_version=0.3.1
|
||||
echo "Script Version: $script_version"
|
||||
#default stuff
|
||||
username=""
|
||||
renderkey=""
|
||||
autosettings=""
|
||||
gpu_cores=""
|
||||
client_name=""
|
||||
run_cpu_client="n"
|
||||
bypass_confirm="n"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
key="$1"
|
||||
case $key in
|
||||
-username)
|
||||
username="$2"
|
||||
shift 2;;
|
||||
-renderkey)
|
||||
renderkey="$2"
|
||||
shift 2;;
|
||||
-autosettings)
|
||||
autosettings="$2"
|
||||
shift 2;;
|
||||
-gpucores)
|
||||
gpu_cores="$2"
|
||||
shift 2;;
|
||||
-clientname)
|
||||
client_name="$2"
|
||||
shift 2;;
|
||||
-cores)
|
||||
cpu_cores="$2"
|
||||
shift 2;;
|
||||
-cpu)
|
||||
if [ "$2" == "y" ]; then
|
||||
run_cpu_client="y"
|
||||
else
|
||||
run_cpu_client="n"
|
||||
fi
|
||||
shift 2;;
|
||||
-y)
|
||||
bypass_confirm="y"
|
||||
shift 1;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
line_thing="------------------------------------"
|
||||
amount_of_gpus=$(nvidia-smi -L | wc -l)
|
||||
amount_of_ram=$(free -h | awk '/^Mem:/ {print $7}' | sed 's/[^0-9]*//g')
|
||||
cpu_cores_fixed=$(nproc)
|
||||
|
||||
echo "$line_thing"
|
||||
echo "Welcome to the Vast.ai Sheepit setup script! Please follow the on-screen instructions to continue."
|
||||
echo "$line_thing"
|
||||
|
||||
if [ -z "$username" ]; then
|
||||
read -r -p "Enter your username: " username < /dev/tty
|
||||
fi
|
||||
if [ -z "$renderkey" ]; then
|
||||
read -r -p "Enter your render key: " renderkey < /dev/tty
|
||||
fi
|
||||
if [ -z "$autosettings" ]; then
|
||||
read -r -p "Do you want to use auto settings? (y/n): " autosettings < /dev/tty
|
||||
fi
|
||||
if [ -z "$client_name" ]; then
|
||||
read -r -p "Enter client name (no spaces): " client_name < /dev/tty
|
||||
fi
|
||||
|
||||
|
||||
if [[ "$autosettings" =~ ^[Yy]$ ]]; then
|
||||
echo "$line_thing"
|
||||
echo "Auto settings enabled."
|
||||
num_gpus=$amount_of_gpus
|
||||
gpu_rec_amount_ram=$(( amount_of_ram / num_gpus ))
|
||||
RAM=$gpu_rec_amount_ram
|
||||
if [ -z "$gpu_cores" ]; then
|
||||
gpu_cores=2
|
||||
fi
|
||||
else
|
||||
echo "$line_thing"
|
||||
echo "There are $amount_of_gpus NVIDIA GPUs in this machine."
|
||||
while true; do
|
||||
read -r -p "Enter the number of GPUs you would like to use for sheepit (1-$amount_of_gpus): " num_gpus < /dev/tty
|
||||
if [[ "$num_gpus" =~ ^[1-9][0-9]*$ && "$num_gpus" -le "$amount_of_gpus" ]]; then
|
||||
break
|
||||
else
|
||||
echo "Please enter a valid positive integer for the number of GPUs (1-$amount_of_gpus)."
|
||||
fi
|
||||
done
|
||||
gpu_rec_amount_ram=$(( amount_of_ram / num_gpus ))
|
||||
amount_of_gpus1=$(( num_gpus + 1 ))
|
||||
cpu_rec_amount_ram=$(( amount_of_ram / amount_of_gpus1 ))
|
||||
echo "$line_thing"
|
||||
echo "This machine has ${amount_of_ram}GB RAM available."
|
||||
echo "It is recommended to use ${gpu_rec_amount_ram}GB of RAM per GPU client, or ${cpu_rec_amount_ram}GB if also running a CPU client."
|
||||
read -r -p "Enter amount of RAM for each client in GB: " RAM < /dev/tty
|
||||
RAM="${RAM//[^0-9]/}"
|
||||
while true; do
|
||||
read -r -p "Enter number of cores for each GPU client: " gpu_cores < /dev/tty
|
||||
if [[ "$gpu_cores" =~ ^[1-9][0-9]*$ ]]; then
|
||||
break
|
||||
else
|
||||
echo "Please enter a valid positive integer."
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ "$run_cpu_client" == "y" ]]; then
|
||||
WANT_CPU="y"
|
||||
else
|
||||
if [[ "$autosettings" =~ ^[Yy]$ ]]; then
|
||||
WANT_CPU="n"
|
||||
else
|
||||
read -r -p "Do you want to run a CPU client as well? (y/n): " WANT_CPU < /dev/tty
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$WANT_CPU" =~ ^[Yy]$ ]]; then
|
||||
cores_used_for_gpu=$(( num_gpus * gpu_cores ))
|
||||
cores_left=$(( cpu_cores_fixed - cores_used_for_gpu ))
|
||||
if [[ "$autosettings" =~ ^[Yy]$ ]]; then
|
||||
cpu_cores=$cores_left
|
||||
else
|
||||
|
||||
echo "This machine has $cpu_cores_fixed CPU cores."
|
||||
echo "With GPU clients using $cores_used_for_gpu cores, there are $cores_left cores available for the CPU client."
|
||||
while true; do
|
||||
read -r -p "Enter number of cores for the CPU client: " cpu_cores < /dev/tty
|
||||
if [[ "$cpu_cores" =~ ^[1-9][0-9]*$ ]]; then
|
||||
break
|
||||
else
|
||||
echo "Please enter a valid positive integer."
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$line_thing"
|
||||
echo "These are the settings selected, is this ok? (Y/n)"
|
||||
echo "Client name: $client_name"
|
||||
echo "GPU Clients: $num_gpus"
|
||||
echo "RAM per client: ${RAM}GB"
|
||||
echo "Cores per GPU: ${gpu_cores}"
|
||||
echo "Sheepit user: ${username}"
|
||||
echo "Renderkey: ${renderkey}"
|
||||
if [[ "$WANT_CPU" =~ ^[Yy]$ ]]; then
|
||||
echo "Run a CPU client: Yes"
|
||||
echo "CPU cores: $cpu_cores"
|
||||
else
|
||||
echo "Run a CPU client: No"
|
||||
fi
|
||||
|
||||
if [[ "$bypass_confirm" != "y" ]]; then
|
||||
read -r -p "(Y/n): " confirm < /dev/tty
|
||||
if [[ "$confirm" =~ ^[Nn]$ ]]; then
|
||||
echo "Aborted"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Starting sheepit..."
|
||||
|
||||
apt update
|
||||
apt install -y sudo
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
sudo apt install -y tmux default-jre blender wget xserver-xorg-video-dummy libboost-all-dev libgl1-mesa-dev libglu1-mesa libsm-dev libxkbcommon0 btop
|
||||
sudo mkdir -p /sheepit/sheepitcache
|
||||
sudo chown -R "$(whoami):$(id -gn)" /sheepit
|
||||
wget https://www.sheepit-renderfarm.com/media/applet/client-latest.php -O /sheepit/client.jar
|
||||
tmux new-session -d -s sheepit
|
||||
|
||||
for (( i = 0; i < num_gpus; i++ )); do
|
||||
GPU_ID="OPTIX_$i"
|
||||
CACHE_DIR="/sheepit/sheepitcache/$i"
|
||||
HOSTNAME="${client_name}-$(printf "%03d" $(( i + 1 )))"
|
||||
|
||||
CMD="java -jar /sheepit/client.jar \
|
||||
-login $username -password $renderkey \
|
||||
-ui text --verbose --headless -cache-dir $CACHE_DIR \
|
||||
-gpu $GPU_ID -cores $gpu_cores -memory ${RAM}G -hostname $HOSTNAME -shared-zip /sheepit/sheepitcache/shared"
|
||||
|
||||
if [ "$i" -eq 0 ]; then
|
||||
tmux rename-window -t sheepit "gpu-$i"
|
||||
tmux send-keys -t sheepit "$CMD" C-m
|
||||
else
|
||||
tmux new-window -t sheepit -n "gpu-$i"
|
||||
tmux send-keys -t sheepit:"gpu-$i" "$CMD" C-m
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$WANT_CPU" =~ ^[Yy]$ ]]; then
|
||||
CPU_CACHE_DIR="/sheepit/sheepitcache/cpu"
|
||||
CPU_HOSTNAME="${client_name}-cpu"
|
||||
|
||||
CPU_CMD="java -jar /sheepit/client.jar \
|
||||
-login $username -password $renderkey \
|
||||
-ui text --verbose --headless -cache-dir $CPU_CACHE_DIR \
|
||||
-cores $cpu_cores -memory ${RAM}G -hostname $CPU_HOSTNAME -shared-zip /sheepit/sheepitcache/shared"
|
||||
|
||||
tmux new-window -t sheepit -n "cpu"
|
||||
tmux send-keys -t sheepit:"cpu" "$CPU_CMD" C-m
|
||||
fi
|
||||
|
||||
# Attach to the tmux session
|
||||
tmux switch-client -t sheepit
|
||||
tmux attach-session -t sheepit
|
||||
echo "If it doesn't switch automatically, you can switch with 'tmux attach-session -t sheepit' or 'tmux switch-client -t sheepit'"
|
||||
8
sheepitcommand.txt
Normal file
8
sheepitcommand.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
curl -s https://koolkid6958.dev/Sheepit-Script.sh | bash -s - \
|
||||
-username RaincloudTheDragon \
|
||||
-renderkey IfCOWBHFQpceG0601DmyrwOOJOAp2UJAQ0O0X0jF \
|
||||
-autosettings y \
|
||||
-gpucores 32 \
|
||||
-clientname vast \
|
||||
-cpu n \
|
||||
-y
|
||||
Reference in New Issue
Block a user