llm-adapters
/
multi_dataset_eval.py
37 строк · 1.3 Кб
1from concurrent.futures import ProcessPoolExecutor2import queue3import subprocess4def evaluate(dataset, gpu):5print('*******dataset:', dataset)6
7command = f"CUDA_VISIBLE_DEVICES={gpu} python evaluate.py \8--model LLaMA-7B \9--adapter LoRA \10--dataset {dataset} \11--base_model '../LLM/models/llama-7b-hf' \12--lora_weights './trained_models/llama-lora'"13
14result = subprocess.run(command, shell=True, text=True, capture_output=False)15print(f"Evaluation results for dataset {dataset} on GPU {gpu}:\n{result.stdout}")16return gpu17
18
19datasets = ['AQuA', 'AddSub', 'MultiArith', 'SingleEq', 'gsm8k', 'SVAMP']20gpus = [1, 2, 3]21tasks_queue = queue.Queue()22gpu_queue = queue.Queue()23
24for gpu in gpus:25gpu_queue.put(gpu)26for task in datasets:27tasks_queue.put(task)28
29num_processes = min(len(datasets), len(gpus)) # number of processes to run in parallel30
31with ProcessPoolExecutor(max_workers=num_processes) as executor:32futures = [executor.submit(evaluate, tasks_queue.get(), gpu_queue.get()) for i in range(num_processes)]33for future in futures:34gpu_id = future.result()35gpu_queue.put(gpu_id)36if tasks_queue.qsize() > 0:37futures.append(executor.submit(evaluate, tasks_queue.get(), gpu_queue.get()))38
39
40
41
42
43
44