Skip to main content
SWE-bench is a benchmark for evaluating large language models on software issues collected from GitHub. SWE-bench uses Docker to create reproducible artifacts that can be ported to different platforms. This guide is for SUNK users who want to evaluate large language models against the SWE-bench suite on GPU-backed nodes. By the end of the guide, you have SWE-bench installed in a Python virtual environment on a SUNK node and a successful benchmark run that produces a JSON report. This guide explains how to run SWE-bench on SUNK with the following steps:
  1. Enable support for Docker in SUNK
  2. Select a node to run the benchmark on
  3. Install SWE-bench in a Python environment on the selected node

Tested versions

This guide is tested and verified on the following configurations:
  • SUNK cgroup/v1 and cgroup/v2
    • v6.9.1
    • v7.1.0
  • NVIDIA L40 and H100 GPUs

Prerequisites

To run SWE-bench on SUNK, you first need to enable Docker support. For instructions, see the guide on using Docker in SUNK.
Using Docker in SUNK requires enabling privileged Pods and disabling the recommended AppArmor profile. This process grants elevated kernel capabilities and weakens isolation guarantees. See the known security risks section for more details.It is your responsibility to verify that third-party code is safe to execute alongside your other workloads.
To run SWE-bench in SUNK, select a node to run the benchmark on, set up a Python environment on that node, and then install SWE-bench in the Python environment.

Acquire GPU resources

SWE-bench needs an interactive shell on a GPU node so the benchmark harness can build Docker images and run evaluations against the GPU. First, identify a node or partition on which to run the benchmark. The following examples use an H100 node in the h100 partition. Choose one of the following methods:

Option 1: exec into an existing GPU pod

List the Pods in your namespace:
In this example, the target Pod is named h100-123-123. Open an interactive terminal session inside the Pod with kubectl exec:

Option 2: Start an interactive job within a Slurm login pod

Use this option when you don’t already have a GPU Pod running and want Slurm to allocate one for the session. In this example, the Slurm login Pod is tenant-slurm-login-0:
Use srun to start an interactive session on your chosen partition. In this example, the partition is h100:

Clone SWE-bench and set up Python

With an interactive shell on a GPU node ready, you can install SWE-bench and run the benchmark. Clone SWE-bench and set up the Python environment. The following examples use uv to create a Python virtual environment. For venv and pip versions of this process, see the Python documentation.
  1. Install uv with curl:
    Follow the instructions in the provided output about sourcing to add uv to your PATH.
  2. Clone the SWE-bench repository:
  3. Create a Python virtual environment:
  4. Install the current directory, SWE-bench, as a Python package in the virtual environment:
  5. Execute the benchmark inside the Pod:
    The expected output is as follows:
    A successful run creates a report file named gold.validate-gold.json in the working directory.

Known limitations

H200 GPU compile error

SWE-bench does not compile on an H200 GPU. The benchmark terminates with the following error:

Non-InfiniBand node behavior

Enabling privileged Pods on non-InfiniBand nodes may result in NCCL failing to use eth0 correctly. To force NCCL to use eth0, set the following environment variables:
Last modified on May 27, 2026