Impossible_llm / data /perturb_model.sh
Yaning1001's picture
Add files using upload-large-folder tool
7332c68 verified
raw
history blame
1.53 kB
#!/bin/bash
# Define your perturbations and BabyLM splits
PERTURBATIONS=("hop_control" "hop_tokens4" "hop_words4" "reverse_control" "reverse_partial" "reverse_full" "shuffle_control"
"shuffle_nondeterministic" "shuffle_deterministic21" "shuffle_deterministic57" "shuffle_deterministic84" "shuffle_local3"
"shuffle_local5" "shuffle_local10" "shuffle_even_odd")
# BABYLM_SPLITS=("100M" "10M" "dev" "test" "unittest") # Add more splits as needed
BABYLM_SPLITS=("dev")
# Specify the GPUs to use
SPECIFIED_GPUS=(1 2 3 4 5 6 7) # Set these to the GPUs you want to use
# Store PIDs and Gpu mapping to track running processes
declare -A GPU_PROCESS_MAP
# Iterate over all combinations of perturbations and splits
for perturbation in "${PERTURBATIONS[@]}"; do
for split in "${BABYLM_SPLITS[@]}"; do
# Check for a free GPU
while true; do
for gpu in "${SPECIFIED_GPUS[@]}"; do
# Check if there's no process associated with this GPU
if ! ps -p ${GPU_PROCESS_MAP[$gpu]} > /dev/null 2>&1; then
# Run the Python perturbation script on the available GPU
CUDA_VISIBLE_DEVICES=$gpu python perturb_llama.py "$perturbation" "$split" &
GPU_PROCESS_MAP[$gpu]=$!
echo "Running on GPU $gpu: Perturbation=$perturbation, Split=$split, PID=$!"
break 2 # Break out of the loops once a GPU is assigned
fi
done
sleep 1 # Wait a second before checking again
done
done
done
# Wait for all processes to finish
wait
echo "All tasks completed."