#!/bin/bash export LD_LIBRARY_PATH=/usr/lib64:/usr/lib:$LD_LIBRARY_PATH save_root=${1:-'./results'} # General parameters policy_name=ACT task_config=demo_clean train_config_name=0 model_name=0 seed=${3:-0} test_num=${4:-100} start_port=29556 num_gpus=8 task_list_id=${2:-0} task_groups=( "stack_bowls_three handover_block hanging_mug scan_object lift_pot put_object_cabinet stack_blocks_three place_shoe" "adjust_bottle place_mouse_pad dump_bin_bigbin move_pillbottle_pad pick_dual_bottles shake_bottle place_fan turn_switch" "shake_bottle_horizontally place_container_plate rotate_qrcode place_object_stand put_bottles_dustbin move_stapler_pad place_burger_fries place_bread_basket" "pick_diverse_bottles open_microwave beat_block_hammer press_stapler click_bell move_playingcard_away open_laptop move_can_pot" "stack_bowls_two place_a2b_right stamp_seal place_object_basket handover_mic place_bread_skillet stack_blocks_two place_cans_plasticbox" "click_alarmclock blocks_ranking_size place_phone_stand place_can_basket place_object_scale place_a2b_left grab_roller place_dual_shoes" "place_empty_cup blocks_ranking_rgb place_empty_cup blocks_ranking_rgb place_empty_cup blocks_ranking_rgb place_empty_cup blocks_ranking_rgb" ) if (( task_list_id < 0 || task_list_id >= ${#task_groups[@]} )); then echo "task_list_id out of range: $task_list_id (0..$(( ${#task_groups[@]} - 1 )))" >&2 exit 1 fi read -r -a task_names <<< "${task_groups[$task_list_id]}" echo "task_list_id=$task_list_id" printf 'task_names (%d): %s\n' "${#task_names[@]}" "${task_names[*]}" log_dir="./logs" mkdir -p "$log_dir" echo -e "\033[32mLaunching ${#task_names[@]} tasks. GPUs assigned by mod ${num_gpus}, ports starting from ${start_port} incrementing.\033[0m" pid_file="pids.txt" > "$pid_file" batch_time=$(date +%Y%m%d_%H%M%S) for i in "${!task_names[@]}"; do task_name="${task_names[$i]}" gpu_id=$(( i % num_gpus )) port=$(( start_port + i )) export CUDA_VISIBLE_DEVICES=${gpu_id} log_file="${log_dir}/${task_name}_${batch_time}.log" echo -e "\033[33m[Task $i] Task: ${task_name}, GPU: ${gpu_id}, PORT: ${port}, Log: ${log_file}\033[0m" PYTHONWARNINGS=ignore::UserWarning \ XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 python -m evaluation.robotwin.eval_polict_client_openpi --config policy/$policy_name/deploy_policy.yml \ --overrides \ --task_name ${task_name} \ --task_config ${task_config} \ --train_config_name ${train_config_name} \ --model_name ${model_name} \ --ckpt_setting ${model_name} \ --seed ${seed} \ --policy_name ${policy_name} \ --save_root ${save_root} \ --video_guidance_scale 5 \ --action_guidance_scale 1 \ --test_num ${test_num} \ --port ${port} > "$log_file" 2>&1 & pid=$! echo "${pid}" | tee -a "$pid_file" done echo -e "\033[32mAll tasks launched. PIDs saved to ${pid_file}\033[0m" echo -e "\033[36mTo terminate all processes, run: kill \$(cat ${pid_file})\033[0m"