From c11683f2d269c8605310d7cc1a8432d04b3c5c95 Mon Sep 17 00:00:00 2001 From: Ronnypetson Souza da Silva Date: Fri, 16 Oct 2026 16:58:31 -0300 Subject: [PATCH 1/5] keep adaptations for container image pulling --- .github/workflows/build-bingo.yml | 50 ++++++++ Dockerfile.bingo | 28 +++++ .../hall_of_fame_2026-10-16_124419.865.pkl | Bin 0 -> 2426 bytes .../hall_of_fame_2026-10-16_124605.771.pkl | Bin 0 -> 2426 bytes scripts/run_srbench.sh | 105 +++++++++++++++++ scripts/run_srbench.slurm | 46 ++++++++ scripts/singularity_pull_all.sh | 111 ++++++++++++++++++ scripts/srbench-alg.def | 49 ++++++++ 8 files changed, 389 insertions(+) create mode 100755 .github/workflows/build-bingo.yml create mode 100755 Dockerfile.bingo create mode 100644 experiment/hall_of_fame_2026-10-16_124419.865.pkl create mode 100644 experiment/hall_of_fame_2026-10-16_124605.771.pkl create mode 100755 scripts/run_srbench.sh create mode 100755 scripts/run_srbench.slurm create mode 100755 scripts/singularity_pull_all.sh create mode 100755 scripts/srbench-alg.def diff --git a/.github/workflows/build-bingo.yml b/.github/workflows/build-bingo.yml new file mode 100755 index 00000000..5ae1c785 --- /dev/null +++ b/.github/workflows/build-bingo.yml @@ -0,0 +1,50 @@ +name: Build Bingo Docker Image + +on: + workflow_dispatch: # manual trigger + push: + paths: + - 'algorithms/bingo/**' + - 'Dockerfile.bingo' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile.bingo + push: true + tags: your-dockerhub-username/srbench-bingo:latest + build-args: | + ALGORITHM=bingo +``` + +Then: +1. Push this to your GitHub repo +2. Add `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` secrets in repo settings +3. Trigger the workflow manually from the Actions tab +4. Pull on the cluster with `apptainer pull ... docker://your-dockerhub-username/srbench-bingo:latest` + +--- + +## Option C: Use a cloud VM (AWS/GCP/Azure) + +Spin up a cheap VM with Docker, build there, push to Docker Hub, then pull on the cluster. + +--- + +**Which option fits your setup?** If you have Docker on your Windows machine, Option A is fastest. If you want automation, Option B (GitHub Actions) is best. \ No newline at end of file diff --git a/Dockerfile.bingo b/Dockerfile.bingo new file mode 100755 index 00000000..52c4ec76 --- /dev/null +++ b/Dockerfile.bingo @@ -0,0 +1,28 @@ +FROM srbench/base:latest + +# Build argument for algorithm name +ARG ALGORITHM=bingo + +# Copy install script and algorithm files +COPY scripts/install_algorithm.sh /install/install_algorithm.sh +COPY base_environment.yml /install/base_environment.yml +COPY algorithms/${ALGORITHM} /install/algorithms/${ALGORITHM} + +# Run installation +WORKDIR /install +RUN eval "$(micromamba shell hook --shell bash)" && \ + micromamba activate base && \ + bash install_algorithm.sh "/install/algorithms/${ALGORITHM}" && \ + micromamba clean --all --yes && \ + mkdir -p /srbench + +# Set environment +ENV ALGORITHM=${ALGORITHM} +ENV LD_LIBRARY_PATH=/opt/conda/lib:${LD_LIBRARY_PATH} + +# Default working directory +WORKDIR /srbench + +# Entrypoint that activates micromamba +ENTRYPOINT ["/bin/bash", "-c", "eval \"$(micromamba shell hook --shell bash)\" && micromamba activate base && cd /srbench && exec \"$@\"", "--"] +CMD ["bash"] diff --git a/experiment/hall_of_fame_2026-10-16_124419.865.pkl b/experiment/hall_of_fame_2026-10-16_124419.865.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2e47a6ba26a6f44ed8c32709abfe7c4efe03d3f2 GIT binary patch literal 2426 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.sif (see scripts/singularity_pull_all.sh). +# -d DIR PMLB datasets directory (required). Bound read-only into the container. +# -c CPUS CPUs per task / parallel jobs per algorithm (default: 8) +# -t TIME SLURM walltime, e.g. 24:00:00 (default: 24:00:00) +# -m MEM Memory per node, e.g. 32G (default: 32G) +# -p PART SLURM partition (default: cpu_batch) +# -r RDIR Results dir, relative to experiment/ (default: results) +# -n Dry run: print the sbatch commands without submitting +# -- ARGS Everything after -- is passed verbatim to analyze.py +# (e.g. -n_trials 10 -tuned -target_noise 0.01) +set -uo pipefail + +CURRENT_DIR=$(pwd) +if [[ $CURRENT_DIR == */scripts ]]; then + cd .. +fi +echo "[srbench] Running from $(pwd)" + +# --- Configuration (override via environment) --------------------------------- +SIF_DIR=${SIF_DIR:-/pgeoprj/dxt6/maromba/notebooks/container/output_dir} +LOG_DIRECTORY=${LOG_DIRECTORY:-logs} +mkdir -p "$LOG_DIRECTORY" + +# --- Defaults ----------------------------------------------------------------- +ALGS="gplearn" +DATASETS="" +CPUS=8 +TIME="24:00:00" +MEM="32G" +PARTITION="cpu_batch" +RDIR="results" +DRYRUN=0 +ANALYZE_ARGS="" + +# --- Parse arguments ------------------------------------------------------------ +while [[ "$#" -gt 0 ]]; do + case $1 in + -a) ALGS="$2"; shift 2 ;; + -d) DATASETS="$2"; shift 2 ;; + -c) CPUS="$2"; shift 2 ;; + -t) TIME="$2"; shift 2 ;; + -m) MEM="$2"; shift 2 ;; + -p) PARTITION="$2"; shift 2 ;; + -r) RDIR="$2"; shift 2 ;; + -n) DRYRUN=1; shift ;; + --) shift; ANALYZE_ARGS="$@"; break ;; + *) echo "[Error] Unknown option: $1"; exit 1 ;; + esac +done + +if [ -z "$DATASETS" ]; then + echo "[Error] Missing required -d /path/to/pmlb/datasets" + exit 1 +fi +if [ ! -d "$DATASETS" ]; then + echo "[Error] Datasets directory not found: $DATASETS" + exit 1 +fi + +# --- Submit one job per algorithm --------------------------------------------- +IFS=',' read -ra ALG_LIST <<< "$ALGS" +for ALG in "${ALG_LIST[@]}"; do + SIF="$SIF_DIR/srbench-${ALG}.sif" + if [ ! -f "$SIF" ]; then + echo "[Error] Missing image: $SIF" + echo " Pull it first: bash scripts/singularity_pull_all.sh $ALG" + continue + fi + + NOW=$(date +"%Y-%m-%d_%H-%M-%S") + echo "[srbench] Submitting $ALG (cpus=$CPUS, time=$TIME, mem=$MEM, partition=$PARTITION)" + echo "[srbench] image: $SIF" + echo "[srbench] analyze: python analyze.py /pmlb/datasets --local -ml $ALG -n_jobs $CPUS -results $RDIR $ANALYZE_ARGS" + + SBATCH_CMD=( + sbatch + --job-name="srbench-${ALG}" + --output="${LOG_DIRECTORY}/srbench-${ALG}-${NOW}.out" + --error="${LOG_DIRECTORY}/srbench-${ALG}-${NOW}.err" + --nodes=1 + --ntasks=1 + --cpus-per-task="${CPUS}" + --time="${TIME}" + --mem="${MEM}" + --partition="${PARTITION}" + --export=ALL,ALG="${ALG}",SIF="${SIF}",DATASETS="${DATASETS}",CPUS="${CPUS}",RDIR="${RDIR}",ANALYZE_ARGS="${ANALYZE_ARGS}" + scripts/run_srbench.slurm + ) + + if [ "$DRYRUN" -eq 1 ]; then + echo "[dryrun] ${SBATCH_CMD[*]}" + else + "${SBATCH_CMD[@]}" + fi +done diff --git a/scripts/run_srbench.slurm b/scripts/run_srbench.slurm new file mode 100755 index 00000000..bf128e20 --- /dev/null +++ b/scripts/run_srbench.slurm @@ -0,0 +1,46 @@ +#!/bin/bash +# SLURM batch script: run SRBench analyze.py for ONE algorithm inside its +# Apptainer/Singularity container. Submitted by scripts/run_srbench.sh, +# which exports: ALG, SIF, DATASETS, CPUS, RDIR, ANALYZE_ARGS. +# Modeled on run_distributed.slurm. + +# Inform user +echo "[srbench] $USER @ $(hostname) | Algorithm: $ALG" +echo "[srbench] $USER @ $(hostname) | Image: $SIF" +echo "[srbench] $USER @ $(hostname) | Datasets: $DATASETS" +echo "[srbench] $USER @ $(hostname) | CWD: $(pwd)" +echo "[srbench] $USER @ $(hostname) | analyze.py args: $ANALYZE_ARGS" + +# --- Runtime ------------------------------------------------------------------ +if command -v apptainer >/dev/null 2>&1; then + CONTAINER=apptainer +else + CONTAINER=singularity +fi +echo "[srbench] Using runtime: $CONTAINER ($($CONTAINER --version 2>/dev/null))" + +# Keep per-job cache/tmp off $HOME (quota) and on local/scratch disk. +export APPTAINER_CACHEDIR=${APPTAINER_CACHEDIR:-/tmp/$USER/apptainer_cache} +export APPTAINER_TMPDIR=${APPTAINER_TMPDIR:-/tmp/$USER/apptainer_tmp} +export SINGULARITY_CACHEDIR=$APPTAINER_CACHEDIR +export SINGULARITY_TMPDIR=$APPTAINER_TMPDIR +mkdir -p "$APPTAINER_CACHEDIR" "$APPTAINER_TMPDIR" + +# --- Bind mounts ---------------------------------------------------------------- +# experiment/ -> /srbench (the image's WORKDIR; results are written here) +# datasets -> /pmlb/datasets (read-only) +# /pgeoprj,/tatu kept for consistency with your other jobs. +BINDS="$PWD/experiment:/srbench,$DATASETS:/pmlb/datasets:ro,/pgeoprj,/tatu" + +# --- Run ------------------------------------------------------------------------ +# `run` (not `exec`) so the image entrypoint activates the conda base env, +# matching `docker compose run ...`. +$CONTAINER run --pwd /srbench -B "$BINDS" "$SIF" \ + python analyze.py /pmlb/datasets \ + --local \ + -ml "$ALG" \ + -n_jobs "$CPUS" \ + -results "$RDIR" \ + $ANALYZE_ARGS + +echo "[srbench] $USER @ $(hostname) | Done ($ALG). Results in experiment/$RDIR" diff --git a/scripts/singularity_pull_all.sh b/scripts/singularity_pull_all.sh new file mode 100755 index 00000000..36f8a343 --- /dev/null +++ b/scripts/singularity_pull_all.sh @@ -0,0 +1,111 @@ +#!/bin/bash +# Pull prebuilt SRBench algorithm images from Docker Hub as Singularity SIFs. +# +# Run this on a node WITH internet access (e.g. the login node); compute +# nodes usually can't reach Docker Hub. +# +# Usage: +# bash scripts/singularity_pull_all.sh # pull all available images +# bash scripts/singularity_pull_all.sh gplearn feat # pull specific ones +# +# Env overrides: +# OUTPUT_DIR - where .sif files are written +# (default: /tatu/container_images/srbench) +# SINGULARITY_CACHEDIR - docker layer cache (default: /tatu/$USER/singularity_cache) +# SINGULARITY_TMPDIR - temp dir during conversion (default: /tatu/$USER/singularity_tmp) +# +# NOTE: images are large (some >10 GB uncompressed). Do NOT let the cache +# default to $HOME or you may fill your home quota. +set -uo pipefail + +# --- Pick a container runtime ------------------------------------------------- +# "ERROR: pull is only supported for shub URIs" means singularity 2.x, which +# cannot pull from docker://. We need singularity >= 3.x or apptainer. +# Prefer apptainer if installed; otherwise use singularity and check its version. +if command -v apptainer >/dev/null 2>&1; then + SINGULARITY=apptainer +else + SINGULARITY=singularity +fi + +VER=$(command $SINGULARITY --version 2>/dev/null | grep -oE '[0-9]+(\.[0-9]+)+' | head -1) +MAJOR=${VER%%.*} +# if [ -z "${MAJOR}" ] || [ "${MAJOR}" -lt 3 ]; then +# echo "ERROR: '$SINGULARITY' is version '${VER:-unknown}', but >= 3.0 (or apptainer)" +# echo " is required to pull from Docker Hub (docker:// URIs)." +# echo +# echo "Look for a newer installation on the cluster, e.g.:" +# echo " module avail singularity" +# echo " module avail apptainer" +# echo " which -a singularity apptainer" +# echo "then 'module load' it and re-run this script." +# exit 1 +# fi +echo "Using runtime: $SINGULARITY ($VER)" + +# Algorithms published on Docker Hub (srbench org), tag :latest. +# Verified 2026-10-16. The remaining repo algorithms are NOT published: +# brush bsr gp-elite keplearn lightgbm nesymres pantara pir sklearn tpsr udsr xgboost +# (those need a local conda install or a SIF built from a def file). +AVAILABLE=( + afp + bingo + e2et + eplex + eql + feat + ffx + geneticengine + gpgomea + gplearn + gpzgd + itea + operon + ps-tree + pysr + qlattice + rils-rols + tir +) + +# OUTPUT_DIR=${OUTPUT_DIR:-/tatu/container_images/srbench} +# export SINGULARITY_CACHEDIR=${SINGULARITY_CACHEDIR:-/tatu/$USER/singularity_cache} +# export SINGULARITY_TMPDIR=${SINGULARITY_TMPDIR:-/tatu/$USER/singularity_tmp} +OUTPUT_DIR=${OUTPUT_DIR:-/pgeoprj/dxt6/maromba/notebooks/container/output_dir} +export SINGULARITY_CACHEDIR=${SINGULARITY_CACHEDIR:-/pgeoprj/dxt6/maromba/notebooks/container/singularity_cache} +export SINGULARITY_TMPDIR=${SINGULARITY_TMPDIR:-/pgeoprj/dxt6/maromba/notebooks/container/singularity_tmp} +mkdir -p "$OUTPUT_DIR" "$SINGULARITY_CACHEDIR" "$SINGULARITY_TMPDIR" + +if [ "$#" -gt 0 ]; then + ALGS=("$@") +else + ALGS=("${AVAILABLE[@]}") +fi + +FAILED=() +for alg in "${ALGS[@]}"; do + sif="$OUTPUT_DIR/srbench-${alg}.sif" + if [ -f "$sif" ]; then + echo "[skip] $sif already exists" + continue + fi + echo "[pull] docker://srbench/${alg}:latest -> $sif" + if $SINGULARITY pull "$sif" "docker://srbench/${alg}:latest"; then + echo "[ok] $alg" + else + echo "[FAIL] $alg" + FAILED+=("$alg") + fi +done + +echo +if [ "${#FAILED[@]}" -gt 0 ]; then + echo "Finished with ${#FAILED[@]} failure(s): ${FAILED[*]}" +else + echo "All images pulled successfully." +fi +echo "SIF files are in: $OUTPUT_DIR" +echo +echo "Smoke-test one image (run from the srbench repo root):" +echo " singularity run --pwd /srbench -B \$PWD/experiment:/srbench \\" +echo " $OUTPUT_DIR/srbench-gplearn.sif bash test.sh" diff --git a/scripts/srbench-alg.def b/scripts/srbench-alg.def new file mode 100755 index 00000000..7f383c30 --- /dev/null +++ b/scripts/srbench-alg.def @@ -0,0 +1,49 @@ +Bootstrap: docker +From: srbench/base:latest +# Build a SIF for one SRBench algorithm, mirroring alg-Dockerfile. +# +# Build with (needs root, --fakeroot, or --remote): +# APPTAINERENV_ALGORITHM=brush apptainer build --fakeroot --no-mount bind-paths srbench-brush.sif scripts/srbench-alg.def +# or, without root: +# APPTAINERENV_ALGORITHM=brush apptainer build --remote srbench-brush.sif scripts/srbench-alg.def +# +# The --no-mount bind-paths flag disables site-configured bind mounts +# (e.g. /exp, /pgeo) that would otherwise fail because the base image +# doesn't have those mountpoints. +# +# %files paths are relative to the build CONTEXT (the current directory), +# so run the build from the srbench repo root. + +%files + base_environment.yml /install/base_environment.yml + scripts/install_algorithm.sh /install/install_algorithm.sh + algorithms /install/algorithms + +%post + set -e + ALGORITHM="${APPTAINERENV_ALGORITHM:-brush}" + echo "Building for algorithm: ${ALGORITHM}" + cd /install + # alg-Dockerfile relies on MAMBA_DOCKERFILE_ACTIVATE=1 to auto-activate + # the base env in RUN steps; here we activate it explicitly. + eval "$(micromamba shell hook --shell bash)" + micromamba activate base + bash install_algorithm.sh "/install/algorithms/${ALGORITHM}" + micromamba clean --all --yes + # remove all other algorithm sources to keep the image small + find /install/algorithms -mindepth 1 -maxdepth 1 -type d ! -name "${ALGORITHM}" -exec rm -rf {} + + mkdir -p /srbench + +%environment + export LD_LIBRARY_PATH=/opt/conda/lib:${LD_LIBRARY_PATH} + +%runscript + # The base image's Docker entrypoint (micromamba activation) is NOT run + # by apptainer, so activate base here to match `docker compose run`. + eval "$(micromamba shell hook --shell bash)" + micromamba activate base + cd /srbench + exec "$@" + +%labels + Project srbench From c970db9a2b4b701abf3f3f4057cf5bbb84bf15b1 Mon Sep 17 00:00:00 2001 From: Ronnypetson Souza da Silva Date: Fri, 16 Oct 2026 17:16:17 -0300 Subject: [PATCH 2/5] adding bingo docker build --- .github/workflows/build-bingo.yml | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build-bingo.yml b/.github/workflows/build-bingo.yml index 5ae1c785..e069fc5e 100755 --- a/.github/workflows/build-bingo.yml +++ b/.github/workflows/build-bingo.yml @@ -28,23 +28,6 @@ jobs: context: . file: ./Dockerfile.bingo push: true - tags: your-dockerhub-username/srbench-bingo:latest + tags: ${{ secrets.DOCKERHUB_USERNAME }}/srbench-bingo:latest build-args: | - ALGORITHM=bingo -``` - -Then: -1. Push this to your GitHub repo -2. Add `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` secrets in repo settings -3. Trigger the workflow manually from the Actions tab -4. Pull on the cluster with `apptainer pull ... docker://your-dockerhub-username/srbench-bingo:latest` - ---- - -## Option C: Use a cloud VM (AWS/GCP/Azure) - -Spin up a cheap VM with Docker, build there, push to Docker Hub, then pull on the cluster. - ---- - -**Which option fits your setup?** If you have Docker on your Windows machine, Option A is fastest. If you want automation, Option B (GitHub Actions) is best. \ No newline at end of file + ALGORITHM=bingo \ No newline at end of file From 29fed064aecd9b354b0167923ea3184f1d8c5657 Mon Sep 17 00:00:00 2001 From: Ronnypetson Souza da Silva Date: Fri, 16 Oct 2026 17:29:23 -0300 Subject: [PATCH 3/5] making workflow visible for branch --- .github/workflows/build-bingo.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-bingo.yml b/.github/workflows/build-bingo.yml index e069fc5e..2b021905 100755 --- a/.github/workflows/build-bingo.yml +++ b/.github/workflows/build-bingo.yml @@ -3,6 +3,9 @@ name: Build Bingo Docker Image on: workflow_dispatch: # manual trigger push: + branches: + - main + - image.pull paths: - 'algorithms/bingo/**' - 'Dockerfile.bingo' From f10910cc97002dabcc2be4949f8eae730c5307f3 Mon Sep 17 00:00:00 2001 From: Ronnypetson Souza da Silva Date: Fri, 16 Oct 2026 17:32:32 -0300 Subject: [PATCH 4/5] fixing branch name in workflow file --- .github/workflows/build-bingo.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-bingo.yml b/.github/workflows/build-bingo.yml index 2b021905..e42ff5f0 100755 --- a/.github/workflows/build-bingo.yml +++ b/.github/workflows/build-bingo.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: # manual trigger push: branches: - - main + - master - image.pull paths: - 'algorithms/bingo/**' From 5dd4b684e3856a74771178659e9ccfaa090a1e35 Mon Sep 17 00:00:00 2001 From: Ronnypetson Souza da Silva Date: Fri, 16 Oct 2026 17:34:56 -0300 Subject: [PATCH 5/5] removing listed branch from workflow --- .github/workflows/build-bingo.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-bingo.yml b/.github/workflows/build-bingo.yml index e42ff5f0..d04f55bd 100755 --- a/.github/workflows/build-bingo.yml +++ b/.github/workflows/build-bingo.yml @@ -4,7 +4,6 @@ on: workflow_dispatch: # manual trigger push: branches: - - master - image.pull paths: - 'algorithms/bingo/**'