1304 lines
37 KiB
YAML
1304 lines
37 KiB
YAML
name: Profiling (Flamegraphs)
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
ITERATIONS: "1"
|
|
ENABLE_PROFILING: "true"
|
|
PROFILING_FIXTURES: "pdf_small,pdf_medium,docx_simple,html_simple,image_table,markdown_technical"
|
|
ORT_VERSION: "1.24.2"
|
|
CARGO_TERM_COLOR: always
|
|
CARGO_INCREMENTAL: 0
|
|
RUSTFLAGS: "-g"
|
|
MACOSX_DEPLOYMENT_TARGET: "14.0"
|
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
RUST_BACKTRACE: short
|
|
RUST_MIN_STACK: 16777216
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
concurrency:
|
|
group: profiling-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
setup:
|
|
name: Build harness + native libs (with profiling)
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 120
|
|
permissions:
|
|
contents: read
|
|
outputs:
|
|
artifact-name: profiling-target
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Ensure benchmark harness exists
|
|
run: scripts/benchmarks/ensure-benchmark-harness-exists.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build workspace (native libs + harness with profiling)
|
|
env:
|
|
ENABLE_PROFILING: "true"
|
|
run: task rust:build:profiling
|
|
|
|
- name: Log disk space before artifact upload
|
|
run: scripts/ci/validate/show-disk-space.sh "Disk space before artifact upload"
|
|
|
|
- name: Upload target artifact
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-target
|
|
path: |
|
|
target/release
|
|
retention-days: 7
|
|
|
|
- name: Log disk space after artifact upload
|
|
run: scripts/ci/validate/show-disk-space.sh "Disk space after artifact upload"
|
|
|
|
bench-native:
|
|
name: kreuzberg-rust (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-rust
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-rust-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-rust-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-python-sync:
|
|
name: kreuzberg-python (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Python
|
|
uses: kreuzberg-dev/actions/setup-python-env@v1
|
|
with:
|
|
python-version: "3.11"
|
|
cache-prefix: profiling-python
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Python bindings
|
|
run: task python:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-python
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-python-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-python-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-python-async:
|
|
name: kreuzberg-python-async-OLD (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Python
|
|
uses: kreuzberg-dev/actions/setup-python-env@v1
|
|
with:
|
|
python-version: "3.11"
|
|
cache-prefix: profiling-python
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Python bindings
|
|
run: task python:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-python-async-OLD
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-python-async-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-python-async-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-python-batch:
|
|
name: kreuzberg-python-batch (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Python
|
|
uses: kreuzberg-dev/actions/setup-python-env@v1
|
|
with:
|
|
python-version: "3.11"
|
|
cache-prefix: profiling-python
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Python bindings
|
|
run: task python:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-python-batch
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-python-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-python-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-node-async:
|
|
name: kreuzberg-node (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Node
|
|
uses: kreuzberg-dev/actions/setup-node-workspace@v1
|
|
|
|
- name: Verify Node setup (async)
|
|
run: scripts/ci/benchmarks/verify-node-setup.sh "Node setup (async)"
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Node bindings and install locally
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
run: task node:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-node
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-node-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-node-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-node-batch:
|
|
name: kreuzberg-node-batch (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Node
|
|
uses: kreuzberg-dev/actions/setup-node-workspace@v1
|
|
|
|
- name: Verify Node setup (batch)
|
|
run: scripts/ci/benchmarks/verify-node-setup.sh "Node setup (batch)"
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Node bindings and install locally
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
run: task node:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-node-batch
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-node-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-node-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-wasm-async:
|
|
name: kreuzberg-wasm-async (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Node
|
|
uses: kreuzberg-dev/actions/setup-node-workspace@v1
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build WASM bindings
|
|
run: task wasm:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-wasm-async
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-wasm-async-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-wasm-async-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-wasm-batch:
|
|
name: kreuzberg-wasm-batch (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Node
|
|
uses: kreuzberg-dev/actions/setup-node-workspace@v1
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build WASM bindings
|
|
run: task wasm:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-wasm-batch
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-wasm-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-wasm-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-ruby-sync:
|
|
name: kreuzberg-ruby (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Ruby
|
|
uses: ruby/setup-ruby@v1
|
|
with:
|
|
ruby-version: "3.2"
|
|
|
|
- name: Install Bundler
|
|
shell: bash
|
|
run: scripts/ci/ruby/install-bundler.sh
|
|
|
|
- name: Install Ruby deps
|
|
shell: bash
|
|
run: scripts/ci/ruby/install-ruby-deps.sh
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Vendor kreuzberg core for Ruby
|
|
run: python3 scripts/ci/ruby/vendor-kreuzberg-core.py
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Ruby native gem
|
|
env:
|
|
PLATFORM: x86_64-linux
|
|
run: task ruby:build:bindings
|
|
|
|
- name: Compile Ruby native extension
|
|
shell: bash
|
|
run: scripts/ci/ruby/compile-extension.sh
|
|
|
|
- name: Build kreuzberg CLI
|
|
shell: bash
|
|
run: task rust:cli:build
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-ruby
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-ruby-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-ruby-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-ruby-batch:
|
|
name: kreuzberg-ruby-batch (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Ruby
|
|
uses: ruby/setup-ruby@v1
|
|
with:
|
|
ruby-version: "3.2"
|
|
|
|
- name: Install Bundler
|
|
shell: bash
|
|
run: scripts/ci/ruby/install-bundler.sh
|
|
|
|
- name: Install Ruby deps
|
|
shell: bash
|
|
run: scripts/ci/ruby/install-ruby-deps.sh
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Vendor kreuzberg core for Ruby
|
|
run: python3 scripts/ci/ruby/vendor-kreuzberg-core.py
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Ruby native gem
|
|
env:
|
|
PLATFORM: x86_64-linux
|
|
run: task ruby:build:bindings
|
|
|
|
- name: Compile Ruby native extension
|
|
shell: bash
|
|
run: scripts/ci/ruby/compile-extension.sh
|
|
|
|
- name: Build kreuzberg CLI
|
|
shell: bash
|
|
run: task rust:cli:build
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-ruby-batch
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-ruby-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-ruby-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-go-sync:
|
|
name: kreuzberg-go-sync (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: "1.26.x"
|
|
cache-dependency-path: packages/go/v5/go.sum
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Prime Go modules
|
|
working-directory: packages/go/v5
|
|
run: go mod download
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Go bindings
|
|
run: task go:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-go-sync
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
KREUZBERG_BENCHMARK_DEBUG: "true"
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-go-sync-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-go-sync-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-go-batch:
|
|
name: kreuzberg-go-batch (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v6
|
|
with:
|
|
go-version: "1.26.x"
|
|
cache-dependency-path: packages/go/v5/go.sum
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Prime Go modules
|
|
working-directory: packages/go/v5
|
|
run: go mod download
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Go bindings
|
|
run: task go:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-go-batch
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
KREUZBERG_BENCHMARK_DEBUG: "true"
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-go-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-go-batch-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-java-sync:
|
|
name: kreuzberg-java-sync (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup Java
|
|
uses: actions/setup-java@v5
|
|
id: setup-java
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: "25"
|
|
|
|
- name: Setup Maven 3.9.11
|
|
uses: kreuzberg-dev/actions/setup-maven@v1
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build Java bindings
|
|
run: task java:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-java-sync
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-java-sync-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-java-sync-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|
|
|
|
bench-csharp-sync:
|
|
name: kreuzberg-csharp-sync (${{ matrix.mode }}) [profiling]
|
|
needs: setup
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode: [single-file, batch]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Free disk space
|
|
uses: kreuzberg-dev/actions/free-disk-space-linux@v1
|
|
|
|
- name: Download build artifacts
|
|
uses: actions/download-artifact@v8
|
|
with:
|
|
name: ${{ needs.setup.outputs.artifact-name }}
|
|
path: target/release
|
|
|
|
- name: Restore benchmark binary permissions
|
|
run: scripts/benchmarks/restore-binary-permissions.sh
|
|
|
|
- name: Install system dependencies
|
|
uses: ./.github/actions/install-system-deps
|
|
|
|
- name: Setup OpenSSL
|
|
uses: kreuzberg-dev/actions/setup-openssl@v1
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: kreuzberg-dev/actions/setup-rust@v1
|
|
with:
|
|
cache-key-prefix: profiling
|
|
use-sccache: true
|
|
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v5
|
|
with:
|
|
dotnet-version: "10.0.x"
|
|
|
|
- name: Setup ONNX Runtime
|
|
uses: ./.github/actions/setup-onnx-runtime
|
|
with:
|
|
ort-version: ${{ env.ORT_VERSION }}
|
|
|
|
- name: Setup Layout Models
|
|
uses: ./.github/actions/setup-layout-models
|
|
|
|
- name: Install Task
|
|
uses: kreuzberg-dev/actions/install-task@v1
|
|
|
|
- name: Build C# bindings
|
|
run: task csharp:build:bindings
|
|
|
|
- name: Run benchmark
|
|
env:
|
|
FRAMEWORK: kreuzberg-csharp-sync
|
|
MODE: ${{ matrix.mode }}
|
|
ITERATIONS: ${{ env.ITERATIONS }}
|
|
ENABLE_PROFILING: ${{ env.ENABLE_PROFILING }}
|
|
PROFILING_FIXTURES: ${{ env.PROFILING_FIXTURES }}
|
|
run: task benchmark:run
|
|
|
|
- name: Upload benchmark artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: profiling-results-kreuzberg-csharp-sync-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: benchmark-results/
|
|
retention-days: 7
|
|
|
|
- name: Upload flamegraph artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: flamegraphs-kreuzberg-csharp-sync-${{ matrix.mode }}-${{ github.run_id }}
|
|
path: flamegraphs/
|
|
retention-days: 7
|