mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-07 22:04:10 -05:00
This new workflow can trigger all the required benchmarks needed to populate benchmarks tables in documentation. It also can generate SVG tables and store them as artifacts. Optionally, it can open a pull-request to update the current tables in documentation.
213 lines
8.0 KiB
YAML
213 lines
8.0 KiB
YAML
# Run all benchmarks displayed in the public documentation.
|
|
name: benchmark_documentation
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
run-cpu-benchmarks:
|
|
description: "Run CPU benchmarks"
|
|
type: boolean
|
|
default: true
|
|
run-gpu-benchmarks:
|
|
description: "Run GPU benchmarks"
|
|
type: boolean
|
|
default: true
|
|
run-hpu-benchmarks:
|
|
description: "Run HPU benchmarks"
|
|
type: boolean
|
|
default: true
|
|
generate-svgs:
|
|
description: "Generate SVG tables"
|
|
type: boolean
|
|
default: true
|
|
open-pr:
|
|
description: "Open a PR with the benchmark results"
|
|
type: boolean
|
|
default: false
|
|
|
|
permissions: {}
|
|
|
|
# zizmor: ignore[concurrency-limits] only Zama organization members can trigger this workflow
|
|
|
|
jobs:
|
|
run-benchmarks-cpu-integer:
|
|
name: benchmark_documentation/run-benchmarks-cpu-integer
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
if: inputs.run-cpu-benchmarks
|
|
with:
|
|
command: integer
|
|
op_flavor: fast_default
|
|
bench_type: both
|
|
precisions_set: documentation
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-gpu-integer:
|
|
name: benchmark_documentation/run-benchmarks-gpu-integer
|
|
uses: ./.github/workflows/benchmark_gpu_common.yml
|
|
if: inputs.run-gpu-benchmarks
|
|
with:
|
|
profile: multi-h100-sxm5
|
|
hardware_name: n3-H100-SXM5x8
|
|
command: integer_multi_bit
|
|
op_flavor: fast_default
|
|
bench_type: both
|
|
precisions_set: documentation
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-hpu-integer:
|
|
name: benchmark_documentation/run-benchmarks-hpu-integer
|
|
uses: ./.github/workflows/benchmark_hpu_common.yml
|
|
if: inputs.run-hpu-benchmarks
|
|
with:
|
|
command: integer
|
|
op_flavor: default
|
|
bench_type: both
|
|
precisions_set: documentation
|
|
v80_pcie_dev: 24
|
|
v80_serial_number: XFL12NWY3ZKG
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
|
|
|
run-benchmarks-cpu-core-crypto:
|
|
name: benchmark_documentation/run-benchmarks-cpu-core-crypto
|
|
uses: ./.github/workflows/benchmark_cpu_common.yml
|
|
if: inputs.run-cpu-benchmarks
|
|
with:
|
|
command: pbs, ks_pbs
|
|
bench_type: latency
|
|
params_type: classical_documentation + multi_bit_documentation
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
run-benchmarks-gpu-core-crypto:
|
|
name: benchmark_documentation/run-benchmarks-gpu-core-crypto
|
|
uses: ./.github/workflows/benchmark_gpu_common.yml
|
|
if: inputs.run-gpu-benchmarks
|
|
with:
|
|
profile: multi-h100-sxm5
|
|
hardware_name: n3-H100-SXM5x8
|
|
command: pbs, ks_pbs
|
|
bench_type: latency
|
|
params_type: classical_documentation + multi_bit_documentation
|
|
secrets:
|
|
BOT_USERNAME: ${{ secrets.BOT_USERNAME }}
|
|
SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }}
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
REPO_CHECKOUT_TOKEN: ${{ secrets.REPO_CHECKOUT_TOKEN }}
|
|
JOB_SECRET: ${{ secrets.JOB_SECRET }}
|
|
SLAB_ACTION_TOKEN: ${{ secrets.SLAB_ACTION_TOKEN }}
|
|
SLAB_URL: ${{ secrets.SLAB_URL }}
|
|
SLAB_BASE_URL: ${{ secrets.SLAB_BASE_URL }}
|
|
|
|
generate-svgs-with-benchmarks-run:
|
|
name: benchmark-documentation/generate-svgs-with-benchmarks-run
|
|
if: ${{ always() &&
|
|
(inputs.run-cpu-benchmarks || inputs.run-gpu-benchmarks ||inputs.run-hpu-benchmarks) &&
|
|
inputs.generate-svgs }}
|
|
needs: [
|
|
run-benchmarks-cpu-integer, run-benchmarks-gpu-integer, run-benchmarks-hpu-integer,
|
|
run-benchmarks-cpu-core-crypto, run-benchmarks-gpu-core-crypto
|
|
]
|
|
uses: ./.github/workflows/generate_svgs.yml
|
|
with:
|
|
time_span_days: 5
|
|
generate-cpu-svgs: ${{ inputs.run-cpu-benchmarks }}
|
|
generate-gpu-svgs: ${{ inputs.run-gpu-benchmarks }}
|
|
generate-hpu-svgs: ${{ inputs.run-hpu-benchmarks }}
|
|
secrets:
|
|
DATA_EXTRACTOR_DATABASE_USER: ${{ secrets.DATA_EXTRACTOR_DATABASE_USER }}
|
|
DATA_EXTRACTOR_DATABASE_HOST: ${{ secrets.DATA_EXTRACTOR_DATABASE_HOST }}
|
|
DATA_EXTRACTOR_DATABASE_PASSWORD: ${{ secrets.DATA_EXTRACTOR_DATABASE_PASSWORD }}
|
|
|
|
generate-svgs-without-benchmarks-run:
|
|
name: benchmark-documentation/generate-svgs-without-benchmarks-run
|
|
if: ${{ !(inputs.run-cpu-benchmarks || inputs.run-gpu-benchmarks || inputs.run-hpu-benchmarks) &&
|
|
inputs.generate-svgs }}
|
|
uses: ./.github/workflows/generate_svgs.yml
|
|
with:
|
|
time_span_days: 60
|
|
secrets:
|
|
DATA_EXTRACTOR_DATABASE_USER: ${{ secrets.DATA_EXTRACTOR_DATABASE_USER }}
|
|
DATA_EXTRACTOR_DATABASE_HOST: ${{ secrets.DATA_EXTRACTOR_DATABASE_HOST }}
|
|
DATA_EXTRACTOR_DATABASE_PASSWORD: ${{ secrets.DATA_EXTRACTOR_DATABASE_PASSWORD }}
|
|
|
|
open-pr:
|
|
name: benchmark-documentation/open-pr
|
|
needs: [ generate-svgs-with-benchmarks-run, generate-svgs-without-benchmarks-run ]
|
|
if: ${{ always() && inputs.open-pr &&
|
|
(needs.generate-svgs-with-benchmarks-run.result == 'success' || needs.generate-svgs-without-benchmarks-run.result == 'success') }}
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write # Needed to create a commit
|
|
pull-requests: write # Needed to open a pull-request
|
|
env:
|
|
PATH_TO_DOC_ASSETS: tfhe/docs/.gitbook/assets
|
|
steps:
|
|
- name: Checkout tfhe-rs
|
|
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
|
|
with:
|
|
persist-credentials: 'false'
|
|
|
|
- name: Download SVG tables
|
|
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
|
|
with:
|
|
path: svg_tables
|
|
merge-multiple: 'true'
|
|
|
|
- name: Copy SVG tables to documentation location
|
|
run: |
|
|
cp -f svg_tables/*integer-benchmark*.svg "${PATH_TO_DOC_ASSETS}"
|
|
cp -f svg_tables/*pbs-benchmark-tuniform*.svg "${PATH_TO_DOC_ASSETS}"
|
|
|
|
- name: Get current date
|
|
id: get-date
|
|
run: |
|
|
echo "date=$(date '+%g_%m_%d_%Hh%Mm%Ss')" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Create pull-request
|
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
|
with:
|
|
sign-commits: true # Commit will be signed by github-actions bot
|
|
add-paths: ${{ env.PATH_TO_DOC_ASSETS }}/*.svg
|
|
branch: gh-bot/docs/update-svg-tables-${{ steps.get-date.outputs.date }}
|
|
commit-message: |
|
|
chore(docs): update benchmark results for all backends
|
|
|
|
Automated documentation update from tfhe-rs CI pipeline.
|
|
title: |
|
|
[CI] chore(docs): update benchmark results for all backends
|
|
body: |
|
|
Documentation update triggered by GitHub workflow.
|
|
labels: documentation
|