Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Title: Optimize support for SWE-bench Lite task parallelism #7

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 26 additions & 27 deletions harness.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import tempfile
from pathlib import Path

import lox
import concurrent.futures
from aider.coders import Coder
from aider.io import InputOutput
from aider.models import Model, register_litellm_models
Expand Down Expand Up @@ -414,32 +414,31 @@ def process_instances(
chat_history_dname = CHAT_LOGS_DNAME / models_slug
chat_history_dname.mkdir(exist_ok=True)

if threads > 1:
process_one_instance_lox = lox.process(threads)(process_one_instance)
process_one_instance_func = process_one_instance_lox.scatter
gather = process_one_instance_lox.gather
else:
process_one_instance_func = process_one_instance

for instance_id in remaining_instances:
if instance_id in done_instances:
print("skipping", instance_id)
continue

process_one_instance_func(
dataset[instance_id],
num_tries,
models,
temperature,
model_name_or_path,
out_dname,
)

print("#" * 60)
# input()

if threads > 1:
gather()
process_one_instance_func = process_one_instance

with concurrent.futures.ThreadPoolExecutor(max_workers=threads) as executor:
future_to_instance = {
executor.submit(
process_one_instance_func,
dataset[instance_id],
num_tries,
models,
temperature,
model_name_or_path,
out_dname,
): instance_id
for instance_id in remaining_instances
if instance_id not in done_instances
}

for future in concurrent.futures.as_completed(future_to_instance):
instance_id = future_to_instance[future]
try:
future.result()
except Exception as exc:
print(f"{instance_id} generated an exception: {exc}")
else:
print(f"{instance_id} processed successfully")


def main():
Expand Down