Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
ea1db86
Add our user agent to 120.uploader (#255)
mcopik Oct 16, 2025
e201761
Minor Bug Fixes on GCP (#252)
rabbull Oct 16, 2025
b54b46c
[dev] Linting
mcopik Oct 17, 2025
550cc8c
added bert as a test inference benchmark
McLavish Oct 30, 2025
f9c3817
hotfix to enable gpu capabilities
McLavish Nov 3, 2025
0f93b66
added pre-commit hooks for linting and formatting
McLavish Nov 4, 2025
b965d7b
linting and formatting setting for whoever uses vscode + black + flak…
McLavish Nov 4, 2025
e9916db
reformatted local file so it passes linting/format
McLavish Nov 4, 2025
2b75311
Merge branch 'development' into feature/bert-inference
McLavish Nov 4, 2025
813af03
bert now uses gpu
McLavish Nov 4, 2025
3a96f04
changed data repo to be OUR forked data repo
McLavish Nov 4, 2025
d4d5d30
change data loading path to own forked repo
Russellpang Nov 5, 2025
1b7deb7
change data loading path to own forked repo
Russellpang Nov 5, 2025
668652c
update benchmark function
Russellpang Nov 5, 2025
aae1023
fix: replaced onnxruntime requirement from CPU to GPU. now it actuall…
McLavish Nov 5, 2025
25fd1d9
circleci mypy fix?
McLavish Nov 5, 2025
c478c91
Merge pull request #2 from McLavish/feature/bert-inference
McLavish Nov 5, 2025
d6c4227
benchmarks is now flake8/black compliant. pre-commit hooks also check…
McLavish Nov 5, 2025
27b14d6
add linalg benchmarks
Russellpang Nov 5, 2025
ace2335
add linalg benchmarks
Russellpang Nov 5, 2025
ad3023d
changed CI/CD to run linting on the benchmarks folder ONLY. disabled …
McLavish Nov 5, 2025
52f30c0
fix typo
Russellpang Nov 6, 2025
4efff4d
update code
Russellpang Nov 6, 2025
adf54a5
migrated from CircleCI to Github Actions
McLavish Nov 6, 2025
67772e2
fixed workflow directory
McLavish Nov 6, 2025
8f02b66
pip dependencies take too long
McLavish Nov 6, 2025
ae61e4b
Merge pull request #8 from McLavish/hotfix/code-quality-on-benchmarks
McLavish Nov 6, 2025
e06985c
new benchmark data
McLavish Nov 10, 2025
037f6c3
Bring folder from other-branch
Nov 12, 2025
377d949
update code
Nov 12, 2025
8dd8a6e
modify code and requirements
Nov 12, 2025
de15075
unfinished new fuc
Russellpang Nov 12, 2025
3006879
add new functions
Russellpang Nov 12, 2025
d224ddc
add new functions
Russellpang Nov 13, 2025
921f321
added recommender benchmark
McLavish Nov 13, 2025
dd840d1
Merge branch 'development' into feature/russell
YuxuanLiu-kayla Nov 13, 2025
4fca4aa
changed data submodule to use ssh and not https
McLavish Nov 13, 2025
26dfcf4
add channel_flow, compute, fft, and resnet of jax_npbench
down-street Nov 15, 2025
fad77da
reset the config
down-street Nov 15, 2025
e995e6a
Merge pull request #13 from McLavish/jiahao/npbenchs
down-street Nov 15, 2025
a563b16
experimental local workflows implementation
McLavish Nov 15, 2025
379dbf6
workflow changes for local execution
McLavish Nov 15, 2025
54712a9
fix: selfish-detour not including the .so file when packaging
McLavish Nov 15, 2025
1d50000
changed workflows script to automatically compile detour C code
McLavish Nov 15, 2025
7e0d13f
microbenchmark example
Nov 16, 2025
942f5a1
Remove SSH public key from eval command
Russellpang Nov 16, 2025
6bc1dd7
Remove local_deployment.json configuration
Russellpang Nov 16, 2025
460ea1f
Delete out_storage.json configuration file
Russellpang Nov 16, 2025
de41ab6
Remove SSH private key from eval command
Russellpang Nov 16, 2025
ded520f
remove garbage
Nov 16, 2025
5c85980
test
Russellpang Nov 17, 2025
c5782dd
test
Russellpang Nov 17, 2025
2b52ced
test
Russellpang Nov 17, 2025
e5cb20c
Merge branch 'development' into feature/russell
Russellpang Nov 17, 2025
6488d6d
remove unnecessay files
Russellpang Nov 17, 2025
55c4ac4
fuck you
Russellpang Nov 17, 2025
b97b7a5
Refactor argument parsing for cleaner syntax
Russellpang Nov 17, 2025
1998b6b
Change 'reps' to 'iters' in jacobi2d function
Russellpang Nov 17, 2025
2cbd768
Delete benchmarks/000.microbenchmarks/050.matmul directory
Russellpang Nov 17, 2025
074d4b7
Merge pull request #6 from McLavish/feature/russell
McLavish Nov 17, 2025
efced9c
Revert "changed data submodule to use ssh and not https"
McLavish Nov 17, 2025
bc48b5e
fix: missing config.json
McLavish Nov 17, 2025
e154ba0
Merge branch 'development' into feature/inference-recommender
McLavish Nov 17, 2025
d9ed506
Merge pull request #11 from McLavish/feature/inference-recommender
McLavish Nov 17, 2025
fb0fdaf
changed genome requirements
McLavish Nov 18, 2025
4c36a96
changed example.json to include workflow resources
McLavish Nov 18, 2025
6506743
changed convenience script to do all the prereqs for workflows
McLavish Nov 18, 2025
c2d2ed4
removed duplicate pop
McLavish Nov 18, 2025
f396272
deleted untested nodejs
McLavish Nov 18, 2025
3382129
Merge pull request #18 from McLavish/feature-workflows-local-debloat
McLavish Nov 18, 2025
9b129b4
Merge remote-tracking branch 'origin/development' into feature/workflows
McLavish Nov 18, 2025
7f6f901
reformat the benchmark workflows folder
Russellpang Nov 18, 2025
591cd39
reformat the benchmark workflows folder
Russellpang Nov 18, 2025
218ef8c
reformat the benchmark workflows folder
Russellpang Nov 18, 2025
1b07299
test tuff auto-fixing flake errors
Russellpang Nov 18, 2025
7de931c
formatting
Russellpang Nov 19, 2025
a08cb6d
fix flake8 reported errors
Nov 21, 2025
db87fac
fix flake8 reported errors
Nov 21, 2025
29faa42
test flake8 fix on wrappers
Nov 22, 2025
ff8e090
test flake8 fix on wrappers
Nov 22, 2025
4480290
fix interval index linting issue
Nov 22, 2025
5c7572a
re-added missing imports to 690.ml workflow. re-added double schedule…
McLavish Dec 6, 2025
e779c9d
add OCR-pipeline workflow without detection (#30)
down-street Dec 9, 2025
eaf1ca9
Revert "add OCR-pipeline workflow without detection (#30)" (#31)
down-street Dec 9, 2025
692de3a
test sonataflow
Dec 14, 2025
87460dc
test sonataflow
Dec 14, 2025
6874b43
log current state
Russellpang Dec 14, 2025
f35071a
garbage
Russellpang Dec 15, 2025
9955675
log temp res
Russellpang Dec 16, 2025
300ecb0
log curr re
Russellpang Dec 29, 2025
927f6f0
log
Russellpang Jan 6, 2026
e2c728c
log results
Russellpang Jan 7, 2026
447863a
fix sonataflow
Russellpang Jan 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
81 changes: 0 additions & 81 deletions .circleci/config.yml

This file was deleted.

6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,9 @@ cache
python-venv
regression-*
*_code
scylladb-volume
minio-volume
output
results
*.json
out_storage.json
55 changes: 55 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Lint

on:
push:
pull_request:

jobs:
linting:
runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: '3.x'

- name: Cache virtualenv
uses: actions/cache@v4
with:
path: python-venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-${{ github.ref_name }}
restore-keys: |
venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-
venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-

- name: Install system packages
run: |
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev

- name: Install Python dependencies (via install.py)
run: |
python3 install.py --no-aws --no-azure --no-gcp --no-openwhisk --no-local

- name: Black (check)
run: |
. python-venv/bin/activate
black benchmarks --check --config .black.toml

- name: Flake8 (lint)
run: |
. python-venv/bin/activate
# write to file and echo to stdout (requires flake8 with --tee support)
flake8 benchmarks --config=.flake8.cfg --tee --output-file flake-reports

- name: Upload flake report
if: always()
uses: actions/upload-artifact@v4
with:
name: flake-reports
path: flake-reports
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ cache*
minio-volume
scylladb-volume


# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down Expand Up @@ -188,3 +187,6 @@ cache
# IntelliJ IDEA files
.idea
*.iml

# MacOS Finder
**/.DS_Store
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
url = https://github.com/mcopik/pypapi.git
[submodule "benchmarks-data"]
path = benchmarks-data
url = https://github.com/spcl/serverless-benchmarks-data.git
url = https://github.com/McLavish/serverless-benchmarks-data-dphpc.git
3 changes: 3 additions & 0 deletions .mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
[mypy-docker]
ignore_missing_imports = True

[mypy-docker.*]
ignore_missing_imports = True

[mypy-tzlocal]
ignore_missing_imports = True

Expand Down
30 changes: 30 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: flake8-local
name: flake8 (project env)
language: python
additional_dependencies: ["flake8==7.1.1"]
entry: flake8
args: ["--config=.flake8.cfg"]
types: [python]
files: ^(sebs/|benchmarks/)
- repo: local
hooks:
- id: black-check-local
name: black --check (project env)
language: python
additional_dependencies: ["black==22.8.0"]
entry: black
args: ["--config=.black.toml", "--check", "--diff"]
types: [python]
files: ^(sebs/|benchmarks/)
# - repo: local
# hooks:
# - id: mypy-local
# name: mypy (project venv)
# language: system
# entry: bash -lc 'python -m mypy --config-file=.mypy.ini sebs'
# types: [python]

7 changes: 7 additions & 0 deletions .tuff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
line-length = 100
target-version = "py38"
[lint]
select = ["E", "F", "W"]

[lint.isort]
known-first-party = ["sebs"]
15 changes: 15 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true
},

"black-formatter.importStrategy": "fromEnvironment",
"black-formatter.path": [],
"black-formatter.args": ["--config=.black.toml"],

"flake8.importStrategy": "fromEnvironment",
"flake8.path": [],
"flake8.args": ["--config=.flake8.cfg"],
"flake8.enabled": true
}
61 changes: 61 additions & 0 deletions QUICKSTART_SONATAFLOW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# SonataFlow quickstart

This backend generates Serverless Workflow definitions from SeBS workflow specs and drives them through a running SonataFlow (Kogito) instance. Functions still run as local SeBS containers; SonataFlow orchestrates them via HTTP.

## Prerequisites
- Docker available locally.
- A SonataFlow dev-mode/runtime reachable at `http://localhost:8080` (default). Example:
```bash
docker run --rm -it -p 8080:8080 \
-v "$PWD/output/workflow_resources/sonataflow":/home/kogito/serverless-workflow-project/src/main/resources/workflows \
quay.io/kiegroup/kogito-swf-devmode:latest
```
The volume mount should point to the directory where SeBS writes generated `.sw.json` files.
If you also need to provide `application.properties`, mount a directory to
`/home/kogito/serverless-workflow-project/src/main/resources` that contains both
`application.properties` and a `workflows/` subdirectory.
- Local object/NoSQL/redis services (reuse `run_local_workflows.sh` setup or `./sebs.py storage start all config/storage.json`).

## Configure
Add a `deployment.sonataflow` block to your config (based on `config/example.json`):
```json
{
"deployment": {
"name": "sonataflow",
"sonataflow": {
"resources": {
"redis": { "host": "localhost:6380", "password": "" },
"runtime": { "url": "http://localhost:8080", "endpoint_prefix": "" }
},
"storage": {
"type": "minio",
"address": "localhost",
"mapped_port": 9000,
"access_key": "minio",
"secret_key": "minio123",
"instance_id": "minio",
"input_buckets": [],
"output_buckets": []
}
}
}
}
```
Adjust storage/redis endpoints to match your local services.

## Run
1. Start storage/redis (as in `run_local_workflows.sh`).
2. Start SonataFlow dev-mode and mount the output directory (see above).
3. Execute a workflow benchmark:
```bash
./sebs.py benchmark workflow 610.gen test \
--config config/your-sonataflow-config.json \
--deployment sonataflow --trigger http --repetitions 1 --verbose
```

On first run SeBS will:
- Package workflow functions into local containers.
- Translate `definition.json` into `workflow_resources/sonataflow/<workflow_id>.sw.json` under the generated code package directory (inside your `--output-dir` tree).
- Invoke SonataFlow at `{runtime_url}/{workflow_id}` with the workflow payload (and auto-fallback to `/services/{workflow_id}` if needed).

If SonataFlow dev-mode fails with a “Duplicated item found with id …” error, ensure there is only one `.sw.json` file per workflow id under the mounted resources directory.
2 changes: 1 addition & 1 deletion benchmarks-data
Submodule benchmarks-data updated 37 files
+41 −0 200.multimedia/210.thumbnailer/README.md
+5 −2 200.multimedia/220.video-processing/README.md
+1 −0 200.multimedia/225.video-watermarking-gpu/.gitkeep
+ 200.multimedia/225.video-watermarking-gpu/sample.mp4
+ 200.multimedia/225.video-watermarking-gpu/watermark.png
+7 −0 300.utilities/311.compression/README.md
+12 −0 400.inference/411.image-recognition/README.md
+ 400.inference/412.language-bert/model/bert-tiny-onnx.tar.gz
+15 −0 400.inference/412.language-bert/text/sentences.jsonl
+ 400.inference/413.image-classification/data/512px-Cacatua_moluccensis_-Cincinnati_Zoo-8a.jpg
+ 400.inference/413.image-classification/data/782px-Pumiforme.JPG
+ 400.inference/413.image-classification/data/800px-20180630_Tesla_Model_S_70D_2015_midnight_blue_left_front.jpg
+ 400.inference/413.image-classification/data/800px-7weeks_old.JPG
+ 400.inference/413.image-classification/data/800px-Jammlich_crop.jpg
+ 400.inference/413.image-classification/data/800px-Porsche_991_silver_IAA.jpg
+ 400.inference/413.image-classification/data/800px-Sardinian_Warbler.jpg
+ 400.inference/413.image-classification/data/800px-Welsh_Springer_Spaniel.jpg
+8 −0 400.inference/413.image-classification/data/val_map.txt
+ 400.inference/413.image-classification/model/resnet50.tar.gz
+3 −0 400.inference/413.recommendation/data/requests.jsonl
+ 400.inference/413.recommendation/model/dlrm_tiny.pt
+13 −0 500.scientific/504.dna-visualisation/README.md
+ 600.workflows/6xx.OCR-pipeline/pages/captcha1.jpg
+ 600.workflows/6xx.OCR-pipeline/pages/captcha2.jpg
+ 600.workflows/6xx.OCR-pipeline/pages/image0.png
+ 600.workflows/6xx.OCR-pipeline/pages/numbers_gs150.jpg
+ 600.workflows/6xx.OCR-pipeline/pages/plaid_c150.jpg
+26 −0 600.workflows/download_datasets.sh
+ 700.batchsize/701.language-bert-batchsize/model/bert-tiny-onnx.tar.gz
+15 −0 700.batchsize/701.language-bert-batchsize/text/sentences.jsonl
+ 700.batchsize/702.language-bert-arrival/model/bert-tiny-onnx.tar.gz
+15 −0 700.batchsize/702.language-bert-arrival/text/sentences.jsonl
+4 −0 700.batchsize/703.recommendation-batchsize/data/requests.jsonl
+ 700.batchsize/703.recommendation-batchsize/model/dlrm_tiny.pt
+3 −0 700.batchsize/704.recommendation-arrival/data/requests.jsonl
+ 700.batchsize/704.recommendation-arrival/model/dlrm_tiny.pt
+5 −0 README.md
13 changes: 6 additions & 7 deletions benchmarks/000.microbenchmarks/010.sleep/input.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
size_generators = {"test": 1, "small": 100, "large": 1000}

size_generators = {
'test' : 1,
'small' : 100,
'large': 1000
}

def buckets_count():
return (0, 0)

def generate_input(data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func):
return { 'sleep': size_generators[size] }

def generate_input(
data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func
):
return {"sleep": size_generators[size]}
6 changes: 3 additions & 3 deletions benchmarks/000.microbenchmarks/010.sleep/python/function.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

from time import sleep


def handler(event):

# start timing
sleep_time = event.get('sleep')
sleep_time = event.get("sleep")
sleep(sleep_time)
return { 'result': sleep_time }
return {"result": sleep_time}
10 changes: 6 additions & 4 deletions benchmarks/000.microbenchmarks/020.network-benchmark/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ def buckets_count():
return 0, 1


def generate_input(data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func):
def generate_input(
data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func
):
return {
'bucket': {
'bucket': benchmarks_bucket,
'output': output_paths[0],
"bucket": {
"bucket": benchmarks_bucket,
"output": output_paths[0],
},
}
Loading