| #!/bin/bash |
|
|
| |
| gpu_ids="$2" |
| exec_file="$1" |
|
|
|
|
| |
| IFS=',' read -r -a gpus <<< "$gpu_ids" |
| num_gpus=${#gpus[@]} |
|
|
| |
| find_open_port() { |
| local port |
| while true; do |
| port=$(( (RANDOM % 32768) + 32767 )) |
| if ! (echo >/dev/tcp/localhost/$port) &>/dev/null; then |
| break |
| fi |
| done |
| echo $port |
| } |
| main_process_port=$(find_open_port) |
| echo "Using main_process_port=$main_process_port" |
|
|
| |
| command="accelerate launch --main_process_port=$main_process_port --num_processes=$num_gpus --gpu_ids=$gpu_ids" |
| command+=" --num_machines=1 --mixed_precision=bf16 --dynamo_backend=no" |
| if [ $num_gpus -ge 2 ]; then |
| command+=" --multi_gpu" |
| fi |
| command+=" $exec_file" |
|
|
| |
| eval $command |