#!/bin/bash ROOT_DIR="root to LLaVA-NeXT-Video" if [ ! -e $ROOT_DIR ]; then echo "The root dir does not exist. Exiting the script." exit 1 fi cd $ROOT_DIR export PYTHONWARNINGS=ignore export TOKENIZERS_PARALLELISM=false CUDA_VISIBLE_DEVICES='0,1,2,3,4,5,6,7' gpu_list="${CUDA_VISIBLE_DEVICES}" GPULIST=(${(s:,:)gpu_list}) CHUNKS=${#GPULIST[@]} echo "Using $CHUNKS GPUs" CKPT=$1 CONV_MODE=$2 FRAMES=$3 OVERWRITE=$4 PREDEFINED_CONFIGURE=$5 mm_spatial_pool_stride=$6 MODEL_MAX_LENGTH=${7:-0} CKPT=$1 CONV_MODE=$2 FRAMES=$3 POOL_STRIDE=$4 OVERWRITE=$5 CHUNKS=${6:-1} PATCHIFY=False OPENAIKEY="INPUT YOUR OPENAI API" if [ "$OVERWRITE" = False ]; then SAVE_DIR=$(basename $CKPT)_${CONV_MODE}_frames_${FRAMES}_stride_${POOL_STRIDE}_overwrite_${OVERWRITE} else SAVE_DIR=$(basename $CKPT)_${CONV_MODE}_frames_${FRAMES}_stride_${POOL_STRIDE} fi echo $SAVE_DIR # for IDX in {1..$CHUNKS}; do # GPU_ID=${GPULIST[$IDX]} # Note: Zsh arrays are 1-indexed by default # # GPU_FREE=0 # # while [ $GPU_FREE -eq 0 ]; do # # # Using nvidia-smi to get the memory usage of the GPU with ID $GPU_ID # # # Parsing the output to extract the memory usage, and checking if it is "0" # # MEM_USAGE=$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits -i $GPU_ID | tr -d '[:space:]') # # if [ "$MEM_USAGE" -eq 0 ]; then # # GPU_FREE=1 # # echo "GPU $GPU_ID is free." # # else # # echo "GPU $GPU_ID is in use. Memory used: ${MEM_USAGE}MiB. Checking again in 100 seconds..." # # sleep 100 # # fi # # done # echo "Running on GPU $GPU_ID" # CUDA_VISIBLE_DEVICES=$GPU_ID python3 llavavid/eval/model_activitynet_qa.py \ # --model-path $CKPT \ # --video_dir ./data/llava_video/ActivityNet-QA/all_test \ # --gt_file_question ./data/llava_video/ActivityNet-QA/test_q.json \ # --gt_file_answers ./data/llava_videoActivityNet-QA/test_a.json \ # --output_dir ./work_dirs/eval_activitynet/$SAVE_DIR \ # --output_name pred \ # --num-chunks $CHUNKS \ # --chunk-idx $(($IDX - 1)) \ # --overwrite ${OVERWRITE} \ # --patchify_video_feature ${PATCHIFY} \ # --predefined_configure ${PREDEFINED_CONFIGURE} \ # --mm_spatial_pool_stride ${mm_spatial_pool_stride:-4} \ # --for_get_frames_num $FRAMES \ # --model-max-length ${MODEL_MAX_LENGTH:-0} \ # --conv-mode $CONV_MODE & # done # wait python3 llava/eval/eval_activitynet_qa.py \ --pred_path ./work_dirs/eval_activitynet/$SAVE_DIR \ --output_dir ./work_dirs/eval_activitynet/$SAVE_DIR/results \ --output_json ./work_dirs/eval_activitynet/$SAVE_DIR/results.json \ --num_chunks $CHUNKS \ --api_key $OPENAIKEY \ # --num_tasks 16 \