Skip to content

[llm-d] refactor: Share GuideLLM dashboard postprocessing - #162

Merged
openshift-merge-bot[bot] merged 23 commits into
openshift-psap:mainfrom
albertoperdomo2:feat/align-csv-export
Aug 25, 2026
Merged

openshift-merge-bot[bot] merged 23 commits into
openshift-psap:mainfrom
albertoperdomo2:feat/align-csv-export

Conversation

@albertoperdomo2

@albertoperdomo2 albertoperdomo2 commented Aug 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Centralize GuideLLM dashboard KPI extraction and CSV export logic.
  • Add llm-d dashboard CSV post-processing with deployment metadata.
  • Reuse canonical router configuration and product-version handling.
  • Prevent dashboard metrics from being silently omitted from CSV exports.
  • Simplify the RHAIIS post-processing implementation.

Testing

  • Ruff and formatter checks pass.
  • llm-d profile/post-processing and Caliper KPI tests pass.

Summary by CodeRabbit

  • New Features
    • Added llm-d dashboard post-processing with KPI generation, deployment metadata, runtime details, accelerator information, and dashboard-compatible CSV export.
    • Added product version and GPU type labels to relevant benchmark configurations.
    • Added broader artifact parsing, including JSON results and deployment configuration details.
    • Standardized dashboard KPI processing across llm-d and RHAIIS workflows.
  • Bug Fixes
    • Hierarchical KPI labels now merge correctly across all records, including labels introduced later.
    • Benchmark concurrency rates now run from lowest to highest.
  • Tests
    • Added coverage for CSV export, metadata recovery, accelerator detection, and profile labels.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026 •

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f987dac5-69b9-44ee-a86b-cfb1f442a6d8

📥 Commits

Reviewing files that changed from the base of the PR and between aba278b and 565eac4.

📒 Files selected for processing (2)
  • projects/guidellm/postprocess/guidellm/dashboard.py
  • projects/guidellm/postprocess/guidellm/parsing/parsers.py
🚧 Files skipped from review as they are similar to previous changes (2)
  • projects/guidellm/postprocess/guidellm/dashboard.py
  • projects/guidellm/postprocess/guidellm/parsing/parsers.py

📝 Walkthrough

Walkthrough

GuideLLM dashboard helpers now parse artifacts, enrich metrics, generate KPIs, and export CSV data. The llm-d plugin uses these helpers and recovers deployment metadata. RHAIIS delegates to the shared implementation. KPI labels and orchestration settings were updated.

Changes

Dashboard KPI integration

Layer / File(s) Summary
Dashboard parsing and metadata enrichment
projects/guidellm/postprocess/guidellm/dashboard.py, projects/guidellm/postprocess/guidellm/parsing/parsers.py
Shared helpers extract benchmark metrics, curves, deployment metadata, and runtime fields from GuideLLM and LLMInferenceService artifacts.
Dashboard KPI generation and export
projects/guidellm/postprocess/guidellm/dashboard.py, projects/caliper/engine/kpi/format.py, projects/caliper/tests/test_kpi_format.py
The shared implementation generates per-rate KPIs, builds catalogs, exports dashboard CSV rows, and merges labels across KPI records.
RHAIIS shared dashboard migration
projects/rhaiis/postprocess/kpis.py, projects/rhaiis/postprocess/parser.py, projects/rhaiis/postprocess/plugin.py
RHAIIS delegates parsing enrichment, KPI computation, and CSV export to the shared dashboard helpers.
llm-d plugin and dashboard metadata
projects/llm_d/postprocess/llm_d/plugin.py, projects/llm_d/tests/test_postprocess_csv.py
The new llm-d plugin combines KPIs, recovers deployment metadata, exports dashboard-compatible CSV data, and validates metadata extraction from configuration and pod artifacts.
llm-d orchestration labels and wiring
projects/llm_d/orchestration/..., projects/llm_d/postprocess/.../__init__.py, projects/llm_d/tests/test_profiles.py
Orchestration selects the new plugin, writes dashboard.csv, adds deployment labels, orders benchmark rates, and verifies release preset values.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GuideLLMParser
  participant LlmDGuideLLMPlugin
  participant dashboard_helpers
  participant dashboard_csv
  GuideLLMParser->>LlmDGuideLLMPlugin: parse benchmark and deployment artifacts
  LlmDGuideLLMPlugin->>dashboard_helpers: enrich records and compute KPIs
  dashboard_helpers-->>LlmDGuideLLMPlugin: return dashboard KPI records
  LlmDGuideLLMPlugin->>dashboard_csv: export dashboard-compatible rows
  dashboard_csv-->>LlmDGuideLLMPlugin: write dashboard.csv
Loading

Possibly related PRs

Suggested labels: lgtm

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.91% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: sharing and refactoring GuideLLM dashboard post-processing, including the new llm-d integration and RHAIIS simplification.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Nitpick comments (5)
projects/guidellm/postprocess/guidellm/parsing/parsers.py (3)

132-140: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Update the docstring for the new return fields.

Line 139 states that the function returns product_version, deployment_profile, and model_name. The function now also returns replicas, tensor_parallel_size, router_config, image_tag, and runtime_args. Line 133 and line 136 also state "YAML" only, although the function now accepts a .json artifact.

♻️ Proposed update
         """
-        Extract multiple fields from LLMInferenceService YAML file.
+        Extract multiple fields from an LLMInferenceService YAML or JSON file.
 
         Args:
-            file_path: Path to llminferenceservice.yaml file
+            file_path: Path to the llminferenceservice.yaml, .yml, or .json file
 
         Returns:
-            Dictionary with extracted fields (product_version, deployment_profile, model_name)
+            Dictionary with extracted fields: product_version, deployment_profile,
+            model_name, replicas, tensor_parallel_size, router_config, image_tag,
+            and runtime_args. Absent fields are omitted.
         """
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@projects/guidellm/postprocess/guidellm/parsing/parsers.py` around lines 132 -
140, Update the docstring for the relevant YAML/JSON parsing function to
describe both YAML and JSON artifact inputs, and expand the Returns section to
include replicas, tensor_parallel_size, router_config, image_tag, and
runtime_args alongside the existing fields.

580-583: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Add a deterministic tiebreaker to the sort.

The sort places capture-state paths first, which matches the first-file-wins merge at lines 618-622. Python's sort is stable, so files inside each group keep the order of node.artifact_paths. If that list comes from a directory scan, the order can vary between runs, and the extracted metadata can then vary too.

Add the path as a secondary key.

♻️ Proposed change
-            llmisvc_files.sort(key=lambda path: "__capture_llmisvc_state" not in str(path))
+            llmisvc_files.sort(
+                key=lambda path: ("__capture_llmisvc_state" not in str(path), str(path))
+            )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@projects/guidellm/postprocess/guidellm/parsing/parsers.py` around lines 580 -
583, Update the llmisvc_files sorting in the parser to retain capture-state
paths first while using each path itself as a deterministic secondary sort key.
Ensure the resulting order no longer depends on the original node.artifact_paths
traversal order before the first-file-wins merge.

118-124: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Parse llminferenceservice.json with json.load, not yaml.safe_load.

llminferenceservice.json is produced by oc get llminferenceservice -ojson, and a Kubernetes JSON output can use literal strings such as yes/no in annotation values. YAML 1.1 interprets those literals as booleans, so the .json artifact can change the extracted product_version/deployment_profile; update extract_fields_from_llmisvc to choose json.load for llminferenceservice.json and keep yaml.safe_load for YAML artifacts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@projects/guidellm/postprocess/guidellm/parsing/parsers.py` around lines 118 -
124, Update extract_fields_from_llmisvc to branch on the artifact name before
loading content: use json.load for llminferenceservice.json and keep
yaml.safe_load for llminferenceservice.yaml and llminferenceservice.yml. Anchor
the change in the existing _is_llmisvc_artifact helper and the parsing logic in
extract_fields_from_llmisvc so the JSON path preserves literal annotation values
and does not run through the YAML parser.
projects/guidellm/postprocess/guidellm/dashboard.py (1)

71-75: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Document the request_latency_ exclusion.

SECONDS_TO_MS_COLUMNS selects every metric with unit "s" except the request_latency_* columns. The reason is not stated. A reader can interpret the exclusion as an oversight, because those metrics carry the same "s" unit. Add a short comment that states the dashboard expects request_latency_* in seconds.

♻️ Proposed comment
+# Dashboard latency columns are milliseconds, except request_latency_*, which
+# the dashboard expects in seconds.
 SECONDS_TO_MS_COLUMNS = frozenset(
     column
     for _, _, column, unit, _ in DASHBOARD_METRICS
     if unit == "s" and not column.startswith("request_latency_")
 )
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@projects/guidellm/postprocess/guidellm/dashboard.py` around lines 71 - 75,
Add a short explanatory comment immediately above SECONDS_TO_MS_COLUMNS stating
that the dashboard expects request_latency_* metrics to remain in seconds,
documenting why they are excluded despite having unit "s".
projects/caliper/tests/test_kpi_format.py (1)

6-28: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a case for a varying label.

The test locks the merge half of the contract. It does not lock the other half: a label with more than one distinct value in the same run must stay per-KPI and must not reach output["tests"][0]["labels"]. The update call at projects/caliper/engine/kpi/format.py line 69 relies on the first pass to exclude those keys. A regression in the first pass would leak a varying label to test level, and this test would still pass.

💚 Proposed additional test
def test_hierarchical_format_keeps_varying_labels_per_kpi():
    kpis = [
        {
            "run_id": "run-1",
            "kpi_id": "dashboard_ttft_median",
            "value": 1,
            "labels": {"model": "llama", "rate_index": "0"},
        },
        {
            "run_id": "run-1",
            "kpi_id": "dashboard_ttft_median",
            "value": 2,
            "labels": {"model": "llama", "rate_index": "1"},
        },
    ]
    model = type("Model", (), {"plugin_module": "missing.plugin"})()

    output = transform_kpis_to_hierarchical_format(kpis, model)

    test = output["tests"][0]
    assert test["labels"] == {"model": "llama"}
    assert [kpi["labels"]["rate_index"] for kpi in test["kpis"]] == ["0", "1"]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@projects/caliper/tests/test_kpi_format.py` around lines 6 - 28, Extend the
hierarchical KPI formatting tests with a varying-label case in
test_hierarchical_format_keeps_varying_labels_per_kpi: use KPIs from the same
run where rate_index has different values, assert output["tests"][0]["labels"]
contains only the common model label, and verify each KPI retains its own
rate_index label.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@projects/guidellm/postprocess/guidellm/dashboard.py`:
- Around line 200-207: Harden _extract_dashboard_metrics against malformed
benchmark artifacts: at
projects/guidellm/postprocess/guidellm/dashboard.py#L200-L207, skip decoded
payloads that are not dictionaries; at `#L211-L218`, normalize an explicit null
mean to 0 before float conversion; and at `#L247-L253`, catch invalid
prompt_tokens/output_tokens coercion and skip or safely handle that record.
Preserve processing of valid files and metrics.
- Around line 211-218: The benchmark sorting logic in dashboard.py’s
benchmarks.sort key currently calls float() on the nested mean value, which
breaks when a benchmark reports null instead of a number. Update the sort key
path to coerce the extracted mean through a helper or inline fallback that
treats None as 0 before converting to float, while preserving the existing
nested metrics lookup and sort behavior for valid numeric means.
- Around line 254-256: Update _extract_dashboard_metrics to derive and store the
request-rate axis while iterating through benchmarks, alongside curves and
run_uuids. Change compute_dashboard_kpis to use this stored axis instead of
indexing request_rate from GuideLLMParser._create_aggregated_metrics, ensuring
skipped parser benchmarks cannot misalign KPI rate points.
- Around line 418-430: Update the group ordering in the rows-building loop
around groups and sorted(groups) so the second key element, rate_index, is
compared numerically rather than lexicographically. Preserve run_path as the
primary sort key and keep the existing row generation behavior unchanged.

In `@projects/guidellm/postprocess/guidellm/parsing/parsers.py`:
- Around line 173-179: Update the consumer condition around the
result-processing logic at line 621 to check whether field_value is not None
instead of using truthiness, preserving zero-valued replicas and
tensor_parallel_size entries extracted by the parser.
- Around line 151-155: Update the logging in the product-version extraction
block to report the normalized value assigned to result["product_version"],
rather than the raw product_version returned by
parse_product_version_from_annotation. Keep the existing extraction and storage
behavior unchanged.
- Around line 185-196: Update the serving-container extraction in the parser to
select the container with the intended serving name, falling back to index 0
when no name matches, before deriving image_tag and runtime_args. In the env
iteration, only access name and value fields for entries that are mappings,
while preserving the existing VLLM_ADDITIONAL_ARGS behavior.

In `@projects/llm_d/postprocess/plugin.py`:
- Around line 203-205: Restrict exported profile metadata to an explicit
non-sensitive allowlist in extract_kpi_labels_from_config() and
LlmDGuideLLMPlugin; remove runtime_args, env, and arbitrary
vllm_extra.args-derived values before writing KPI labels or CSV metadata. Update
projects/llm_d/postprocess/plugin.py at lines 203-205 and
projects/llm_d/orchestration/test_phase.py at lines 173-174, ensuring only
approved router_config or runtime metadata is emitted.

---

Nitpick comments:
In `@projects/caliper/tests/test_kpi_format.py`:
- Around line 6-28: Extend the hierarchical KPI formatting tests with a
varying-label case in test_hierarchical_format_keeps_varying_labels_per_kpi: use
KPIs from the same run where rate_index has different values, assert
output["tests"][0]["labels"] contains only the common model label, and verify
each KPI retains its own rate_index label.

In `@projects/guidellm/postprocess/guidellm/dashboard.py`:
- Around line 71-75: Add a short explanatory comment immediately above
SECONDS_TO_MS_COLUMNS stating that the dashboard expects request_latency_*
metrics to remain in seconds, documenting why they are excluded despite having
unit "s".

In `@projects/guidellm/postprocess/guidellm/parsing/parsers.py`:
- Around line 132-140: Update the docstring for the relevant YAML/JSON parsing
function to describe both YAML and JSON artifact inputs, and expand the Returns
section to include replicas, tensor_parallel_size, router_config, image_tag, and
runtime_args alongside the existing fields.
- Around line 580-583: Update the llmisvc_files sorting in the parser to retain
capture-state paths first while using each path itself as a deterministic
secondary sort key. Ensure the resulting order no longer depends on the original
node.artifact_paths traversal order before the first-file-wins merge.
- Around line 118-124: Update extract_fields_from_llmisvc to branch on the
artifact name before loading content: use json.load for llminferenceservice.json
and keep yaml.safe_load for llminferenceservice.yaml and
llminferenceservice.yml. Anchor the change in the existing _is_llmisvc_artifact
helper and the parsing logic in extract_fields_from_llmisvc so the JSON path
preserves literal annotation values and does not run through the YAML parser.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 953b5427-265b-423c-9d03-42f096168425

📥 Commits

Reviewing files that changed from the base of the PR and between 93bb296 and 203fffc.

📒 Files selected for processing (17)
  • projects/caliper/engine/kpi/format.py
  • projects/caliper/tests/test_kpi_format.py
  • projects/guidellm/postprocess/guidellm/dashboard.py
  • projects/guidellm/postprocess/guidellm/parsing/parsers.py
  • projects/llm_d/orchestration/config.d/cpt.yaml
  • projects/llm_d/orchestration/config.yaml
  • projects/llm_d/orchestration/presets.d/cks.yaml
  • projects/llm_d/orchestration/presets.d/cpt.yaml
  • projects/llm_d/orchestration/presets.d/rhoai-rc.yaml
  • projects/llm_d/orchestration/test_phase.py
  • projects/llm_d/postprocess/__init__.py
  • projects/llm_d/postprocess/plugin.py
  • projects/llm_d/tests/test_postprocess_csv.py
  • projects/llm_d/tests/test_profiles.py
  • projects/rhaiis/postprocess/kpis.py
  • projects/rhaiis/postprocess/parser.py
  • projects/rhaiis/postprocess/plugin.py

Comment thread projects/guidellm/postprocess/guidellm/dashboard.py
Comment thread projects/guidellm/postprocess/guidellm/dashboard.py
Comment thread projects/guidellm/postprocess/guidellm/dashboard.py
Comment thread projects/guidellm/postprocess/guidellm/dashboard.py Outdated
Comment thread projects/guidellm/postprocess/guidellm/parsing/parsers.py Outdated
Comment thread projects/guidellm/postprocess/guidellm/parsing/parsers.py
Comment thread projects/guidellm/postprocess/guidellm/parsing/parsers.py
Comment thread projects/llm_d/postprocess/llm_d/plugin.py
Comment thread projects/guidellm/postprocess/guidellm/parsing/parsers.py Outdated
Comment thread projects/llm_d/postprocess/plugin.py Outdated
Comment thread projects/llm_d/postprocess/llm_d/plugin.py
@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 8, 2026
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 10, 2026
Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d gpt-oss heavy-heterogeneous (PR#162) 🔴

Execution Engine Configuration

forge:
  args:
  - gpt-oss
  - heavy-heterogeneous
  - deployment-distributed-default
  - deployment-approximate-prefix-cache
  - deployment-precise-prefix-cache
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:29c909eb7d499b4d1dfb11086c5cd554a257c0477d013f4837f08aa9e4385164
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 2 seconds

❌ 01 Test 57 minutes, 1 second

Test Description

This test evaluates the llm_d project using the gpt-oss-120b model under heavy, heterogeneous concurrent workloads. It specifically benchmarks text completion performance across three deployment profile variations—distributed-default, approximate-prefix-cache, and precise-prefix-cache—to assess how different caching and routing configurations handle varying request rates and prompt lengths.

🔄 02 Export-Artifacts

Post-processing Status ❌

Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d gpt-oss heavy-heterogeneous (PR#162) 🔴

Execution Engine Configuration

forge:
  args:
  - gpt-oss
  - heavy-heterogeneous
  - deployment-distributed-default
  - deployment-approximate-prefix-cache
  - deployment-precise-prefix-cache
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:29c909eb7d499b4d1dfb11086c5cd554a257c0477d013f4837f08aa9e4385164
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 2 seconds

❌ 01 Test 1 hour, 10 minutes, 45 seconds

Test Description

This llm_d project test evaluates the gpt-oss-120b model under the heavy-heterogeneous concurrent benchmark, specifically comparing three deployment profile variations (distributed-default, approximate-prefix-cache, and precise-prefix-cache) to assess their performance handling variable-length prompt and output workloads.

🔄 02 Export-Artifacts

Post-processing Status ❌

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d gpt-oss heavy-heterogeneous (PR#162) 🔴

Execution Engine Configuration

forge:
  args:
  - gpt-oss
  - heavy-heterogeneous
  - deployment-distributed-default
  - deployment-approximate-prefix-cache
  - deployment-precise-prefix-cache
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:29c909eb7d499b4d1dfb11086c5cd554a257c0477d013f4837f08aa9e4385164
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 2 seconds

❌ 01 Test 12 minutes, 53 seconds

Test Description

This test evaluates the llm_d project by benchmarking the gpt-oss-120b model under a heavy-heterogeneous concurrent workload, specifically comparing three deployment profile variations: distributed-default, approximate-prefix-cache, and precise-prefix-cache. It measures how these distinct vLLM prefix caching and scheduling configurations impact throughput and latency.

🔄 02 Export-Artifacts

Post-processing Status ❌

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d gpt-oss heavy-heterogeneous (PR#162) 🔴

Execution Engine Configuration

forge:
  args:
  - gpt-oss
  - heavy-heterogeneous
  - deployment-distributed-default
  - deployment-approximate-prefix-cache
  - deployment-precise-prefix-cache
  configOverrides:
    deployments.defaults.replicas: 4
    deployments.defaults.tensor_parallelism: 2
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:29c909eb7d499b4d1dfb11086c5cd554a257c0477d013f4837f08aa9e4385164
    workloads.benchmarks.heavy-heterogeneous.timeout_seconds: 7200
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 3 seconds

❌ 01 Test 2 hours, 6 minutes, 35 seconds

Test Description

This test benchmarks the gpt-oss-120b model using the llm_d project under heavy-heterogeneous workloads, evaluating performance across distributed-default, approximate-prefix-cache, and precise-prefix-cache deployment profiles.

🔄 02 Export-Artifacts

Post-processing Status ❌

Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of llm_d gpt-oss heavy-heterogeneous (PR#162) 🟢

Execution Engine Configuration

forge:
  args:
  - gpt-oss
  - heavy-heterogeneous
  - deployment-distributed-default
  - deployment-approximate-prefix-cache
  - deployment-precise-prefix-cache
  configOverrides:
    deployments.defaults.replicas: 4
    deployments.defaults.tensor_parallelism: 2
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:29c909eb7d499b4d1dfb11086c5cd554a257c0477d013f4837f08aa9e4385164
    workloads.benchmarks.heavy-heterogeneous.timeout_seconds: 7200
    workloads.pvc_storage_class: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 3 seconds

✅ 01 Test 1 hour, 2 minutes, 19 seconds

Test Description

This test benchmarks the llm_d project using the GPT-OSS 120B model under a heavy-heterogeneous workload to evaluate three deployment profiles: distributed-default, approximate-prefix-cache, and precise-prefix-cache. It measures text completion performance and throughput across varying concurrency rates, comparing the impact of different prefix caching strategies and scheduler configurations on model serving.

🔄 02 Export-Artifacts

Post-processing Status ✅

@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of llm_d gpt-oss heavy-heterogeneous (PR#162) 🟢

Execution Engine Configuration

forge:
  args:
  - gpt-oss
  - heavy-heterogeneous
  configOverrides:
    deployments.defaults.replicas: 4
    deployments.defaults.tensor_parallelism: 2
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:29c909eb7d499b4d1dfb11086c5cd554a257c0477d013f4837f08aa9e4385164
    runtime.deployment_profile:
    - distributed-default
    - approximate-prefix-cache
    - precise-prefix-cache
    workloads.benchmarks.heavy-heterogeneous.timeout_seconds: 7200
    workloads.pvc_storage_class: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 3 seconds

✅ 01 Test 2 hours, 56 minutes, 29 seconds

Test Description

This test evaluates the llm_d project using the gpt-oss-120b model under a heavy-heterogeneous benchmark characterized by highly variable prompt and output token lengths with concurrent rates up to 300. It compares performance across three deployment profiles (distributed-default, approximate-prefix-cache, and precise-prefix-cache) to analyze the impact of different prefix caching strategies.

🔄 02 Export-Artifacts

Post-processing Status ✅

@Harshith-umesh

Copy link
Copy Markdown
Member

/test fournos rhaiis nvidia benchmark hera ci-quick
/pipeline forge-full
/exclusive false
/cluster hera

@Harshith-umesh

Copy link
Copy Markdown
Member

@albertoperdomo2 since I'm not a collaborator on this PR, only you can run the above command.

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos rhaiis nvidia benchmark hera ci-quick
/pipeline forge-full
/exclusive false
/cluster hera

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of rhaiis nvidia benchmark hera ci-quick 🔴

Execution Engine Configuration

forge:
  args:
  - nvidia
  - benchmark
  - hera
  - ci-quick
  configOverrides: {}
  project: rhaiis

Artifact Links

Test Logs

✅ 00 Pre-Cleanup 1 second

✅ 01 Prepare 2 seconds

✅ 02 Preflight 1 second

❌ 03 Test 4 hours, 2 minutes, 19 seconds

✅ 04 Post-Cleanup 4 seconds

🔄 05 Export-Artifacts

Post-processing Status ❌

  • ✅ parse: success
  • ✅ artifacts_to_kpis: success
  • ✅ kpis_to_mlflow: success
  • ✅ kpis_to_csv: success
  • ⏭️ artifacts_to_ai_data: disabled

    kpi.artifacts_to_ai_data disabled

  • ⏭️ s3_import: disabled

    s3_import disabled

  • ⏭️ analyse_kpis: disabled

    analyze disabled

  • ⏭️ s3_export: disabled

    s3_export disabled

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of rhaiis nvidia benchmark hera ci-quick failed after 4 hours, 4 minutes, 40 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-rhaiis-20260819-205656' failed: Tasks Completed: 6 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos rhaiis nvidia benchmark hera ci-quick
/pipeline forge-full
/exclusive false
/cluster hera

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos rhaiis nvidia benchmark hera ci-quick
/pipeline forge-full
/exclusive false
/cluster hera

1 similar comment
@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos rhaiis nvidia benchmark hera ci-quick
/pipeline forge-full
/exclusive false
/cluster hera

@psap-forge-bot

Copy link
Copy Markdown

🛑 Execution of rhaiis nvidia benchmark hera ci-quick 🛑
🛑 JOB ABORTED - spec.shutdown=Stop

Execution Engine Configuration

forge:
  args:
  - nvidia
  - benchmark
  - hera
  - ci-quick
  configOverrides: {}
  project: rhaiis

Artifact Links

Test Logs

✅ 00 Pre-Cleanup 2 seconds

✅ 01 Prepare 3 seconds

✅ 02 Preflight 2 seconds

❓ 03 Test

✅ 04 Post-Cleanup 6 seconds

🔄 05 Export-Artifacts

@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of rhaiis nvidia benchmark hera ci-quick 🟢

Execution Engine Configuration

forge:
  args:
  - nvidia
  - benchmark
  - hera
  - ci-quick
  configOverrides: {}
  project: rhaiis

Artifact Links

Test Logs

✅ 00 Pre-Cleanup 2 seconds

✅ 01 Prepare 3 seconds

✅ 02 Preflight 2 seconds

✅ 03 Test 5 minutes, 20 seconds

✅ 04 Post-Cleanup 4 seconds

🔄 05 Export-Artifacts

Post-processing Status ✅

  • ✅ parse: success
  • ✅ artifacts_to_kpis: success
  • ✅ kpis_to_mlflow: success
  • ✅ kpis_to_csv: success
  • ⏭️ artifacts_to_ai_data: disabled

    kpi.artifacts_to_ai_data disabled

  • ⏭️ s3_import: disabled

    s3_import disabled

  • ⏭️ analyse_kpis: disabled

    analyze disabled

  • ⏭️ s3_export: disabled

    s3_export disabled

@psap-forge-bot

Copy link
Copy Markdown

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d cpt-release-testing-llama-33-70b
/cluster janus
/pipeline forge-prepare-only
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs
/rhoai.rc-image quay.io/rhoai/rhoai-fbc-fragment@sha256:d3bba6f1de3b142b16860acaf452a4f8fbec9a29dfbf658b4cc6b046f1a59e98 stable-3.5
/var platform.cluster.skip_gpu_readiness: true

@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of llm_d cpt-release-testing-llama-33-70b 🟢

Execution Engine Configuration

forge:
  args:
  - cpt-release-testing-llama-33-70b
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:d3bba6f1de3b142b16860acaf452a4f8fbec9a29dfbf658b4cc6b046f1a59e98
  project: llm_d

Artifact Links

Test Logs

✅ 00 Prepare 1 minute, 46 seconds

✅ 01 Preflight 2 seconds

🔄 02 Export-Artifacts

@psap-forge-bot

Copy link
Copy Markdown
🟢 Submission of llm_d cpt-release-testing-llama-33-70b succeeded after 4 minutes, 50 seconds 🟢
/test fournos llm_d cpt-release-testing-llama-33-70b
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs
/var platform.cluster.skip_gpu_readiness: true
/cluster janus
/pipeline forge-prepare-only
/rhoai.rc-image quay.io/rhoai/rhoai-fbc-fragment@sha256:d3bba6f1de3b142b16860acaf452a4f8fbec9a29dfbf658b4cc6b046f1a59e98 stable-3.5

Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d cpt-release-testing-llama-33-70b 🔴

Execution Engine Configuration

forge:
  args:
  - cpt-release-testing-llama-33-70b
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:d3bba6f1de3b142b16860acaf452a4f8fbec9a29dfbf658b4cc6b046f1a59e98
    workloads.pvc_storage_class: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 2 seconds

❌ 01 Test 3 hours, 59 minutes, 9 seconds

Test Description

This test benchmarks the llm_d project on RHOAI 3.5 EA2 with H200 GPUs, validating the Llama 3.3 70B model across three deployment profiles (release-distributed-default, release-precise-prefix-cache, release-approximate-prefix-cache) using concurrent, heavy-heterogeneous, and multi-turn workload configurations.

Failure Review 002 Deploy Llmisvc

005__llmd__heavy-heterogeneous__release-precise-prefix-c/002__deploy_llmisvc

The deploy_llmisvc test failed when the wait_service_ready task aborted due to a pod restart in the KServe LLMInferenceService, triggering a RuntimeError. The underlying service never reached a ready state because inference pods remained stuck at 0/1 Running and failed readiness checks, prompting the readiness checker to immediately halt upon detecting the restart count reached one.

Failure Review 002 Deploy Llmisvc 2

007__llmd__concurrent-1k-1k__release-approximate-pref/002__deploy_llmisvc

The test execution failed at the wait_service_ready step when the FORGE harness aborted due to a detected pod restart, enforcing a policy against waiting on unstable deployments. The restart was triggered because the KServe LLMInferenceService inference pods failed readiness probes for approximately 80 seconds, leaving the service in a MinimumReplicasUnavailable state.

Failure Review 002 Deploy Llmisvc 3

008__llmd__heavy-heterogeneous__release-approximate-pref/002__deploy_llmisvc

The wait_service_ready test harness for the KServe LLMInferenceService failed due to deployment instability caused by a gateway controller configuration incompatibility. The gateway rejected the service's InferencePool backend reference as an InvalidKind due to a missing or unsupported CRD, which prevented HTTP route readiness and triggered cascading pod creation errors and restarts. The test harness then aborted execution upon detecting the first pod restart to enforce strict stability requirements.

Failure Review 002 Deploy Llmisvc 4

009__llmd__multi-turn__release-approximate-pref/002__deploy_llmisvc

The wait_service_ready task failed because the FORGE harness aborted the deployment verification upon detecting a worker pod restart, indicating a fatal container crash during initialization. This failure was caused by a container startup crash, likely stemming from GPU resource or runtime mismatches, compounded by a networking misconfiguration where the HTTPRoute referenced an unsupported InferencePool backend that the gateway controller could not reconcile.

Failure Review 002 Deploy Llmisvc 5

006__llmd__multi-turn__release-precise-prefix-c/002__deploy_llmisvc

The FORGE test failed when the wait_service_ready task aborted upon detecting a restart in the KServe LLMInferenceService pod, halting the deployment workflow due to critical instability. The definitive root cause is a gateway/ingress controller incompatibility where the cluster's networking layer does not support the InferencePool backend type, preventing successful HTTPRoute attachment and causing the kserve proxy container to crash during initialization.

🔄 02 Export-Artifacts

Post-processing Status ❌

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d cpt-release-testing-llama-33-70b
/cluster janus
/pipeline forge-prepare-only
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs
/rhoai.rc-image quay.io/rhoai/rhoai-fbc-fragment@sha256:e47d6cf935c27d664d9c3ce287aeb3dcae2f3ffe9133ac062baa0a0c4f58eed7 stable-3.5
/var platform.cluster.skip_gpu_readiness: true

@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of llm_d cpt-release-testing-llama-33-70b 🟢

Execution Engine Configuration

forge:
  args:
  - cpt-release-testing-llama-33-70b
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:e47d6cf935c27d664d9c3ce287aeb3dcae2f3ffe9133ac062baa0a0c4f58eed7
  project: llm_d

Artifact Links

Test Logs

✅ 00 Prepare 40 seconds

✅ 01 Preflight 2 seconds

🔄 02 Export-Artifacts

@psap-forge-bot

Copy link
Copy Markdown
🟢 Submission of llm_d cpt-release-testing-llama-33-70b succeeded after 3 minutes, 37 seconds 🟢
/test fournos llm_d cpt-release-testing-llama-33-70b
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs
/var platform.cluster.skip_gpu_readiness: true
/cluster janus
/pipeline forge-prepare-only
/rhoai.rc-image quay.io/rhoai/rhoai-fbc-fragment@sha256:e47d6cf935c27d664d9c3ce287aeb3dcae2f3ffe9133ac062baa0a0c4f58eed7 stable-3.5

@openshift-ci

openshift-ci Bot commented Aug 24, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Harshith-umesh

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 24, 2026
@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d cpt-release-testing-llama-33-70b 🔴

Execution Engine Configuration

forge:
  args:
  - cpt-release-testing-llama-33-70b
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:e47d6cf935c27d664d9c3ce287aeb3dcae2f3ffe9133ac062baa0a0c4f58eed7
    workloads.pvc_storage_class: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 2 seconds

❌ 01 Test 42 minutes, 19 seconds

Test Description

This test validates the llm_d project on RHOAI 3.5 EA2 with H200 GPUs by benchmarking the Llama-3.3-70B-Instruct-FP8-dynamic model across three deployment profiles (release-distributed-default, release-precise-prefix-cache, release-approximate-prefix-cache) and three workloads (concurrent-1k-1k, heavy-heterogeneous, multi-turn) to evaluate performance KPIs.

Failure Review 002 Deploy Llmisvc

009__llmd__multi-turn__release-approximate-pref/002__deploy_llmisvc

The FORGE test failed when the wait_service_ready task aborted after detecting model pod restarts, which were triggered by the LLMInferenceService failing to reconcile due to a gateway configuration mismatch. Specifically, the service manifest requested an unsupported InferencePool backend reference that the cluster's gateway controller rejected as an InvalidKind, preventing traffic routing and causing the pods to crash and restart.

Failure Review 002 Deploy Llmisvc 2

006__llmd__multi-turn__release-precise-prefix-c/002__deploy_llmisvc

The wait_service_ready task for the KServe LLMInferenceService aborted after the inference pod crashed and restarted, halting test execution due to the service failing to reach readiness. The definitive root cause is a Gateway API compatibility mismatch where the InferenceService manifest requests InferencePool routing via the inference.networking.x-k8s.io CRD, but the target cluster lacks the required CRDs or controller support, causing the Gateway to reject the route with an InvalidKind error and preventing the deployment from satisfying availability requirements.

Failure Review 002 Deploy Llmisvc 3

001__llmd__concurrent-1k-1k__release-distributed-defa/002__deploy_llmisvc

The LLMInferenceService deployment failed to reach a ready state, causing the wait_service_ready test step to abort immediately upon detecting a pod restart. The inference worker pods remained stuck in a 0/1 Running state for approximately 80 seconds before kubelet forcibly restarted them due to failing liveness probes or exceeding initialization timeouts within the configured probe window, a behavior the test harness explicitly blocks as a fatal crash loop condition.

Failure Review 002 Deploy Llmisvc 4

003__llmd__multi-turn__release-distributed-defa/002__deploy_llmisvc

The deploy_llmisvc task failed when the test harness aborted upon detecting a KServe inference pod restart, which occurred after all pods remained stuck in a 0/1 Running state for approximately 95 seconds while the service reported MinimumReplicasUnavailable. Detailed artifact analysis identifies a ReconcileError in the OpenDataHubModelController caused by a missing HTTPRoute for the AuthPolicy, indicating a controller race condition that likely disrupted readiness propagation, although the exact container termination reason is obscured by truncated logs.

Failure Review 002 Deploy Llmisvc 5

008__llmd__heavy-heterogeneous__release-approximate-pref/002__deploy_llmisvc

The wait_service_ready task aborted execution with a RuntimeError after detecting a pod restart, as the KServe LLMInferenceService failed to reach a ready state and remained stuck in MinimumReplicasUnavailable with backend pods reporting 0/1 Ready. This deployment instability triggered the test harness's strict stability guardrail, which immediately halts the pipeline upon pod restarts to prevent masking crash loops or initialization failures.

Failure Review 002 Deploy Llmisvc 6

004__llmd__concurrent-1k-1k__release-precise-prefix-c/002__deploy_llmisvc

The FORGE test failed because the LLMInferenceService inference pods could not pass readiness probes, causing the test harness to abort after detecting pod restarts. Analysis of pod definitions identifies the root cause: the container startup script hangs or fails while initializing IBM AIU/RoCE networking environments, indicating the deployment target nodes lack the required hardware or drivers for the ibm-aiu-setup.sh script to complete.

Failure Review 002 Deploy Llmisvc 7

007__llmd__concurrent-1k-1k__release-approximate-pref/002__deploy_llmisvc

The wait_service_ready task aborted after the LLMInferenceService pod restarted, failing to reach a ready state due to a routing validation failure. The definitive root cause is a cluster configuration mismatch where the Gateway API controller rejected the generated HTTPRoute with an InvalidKind error, refusing to recognize the inference.networking.x-k8s.io/InferencePool backend type required by the deployment profile. This incompatibility prevented the route from binding and readiness checks from passing, causing the service to become unavailable and triggering the pod restart that terminated the test.

Failure Review 002 Deploy Llmisvc 8

002__llmd__heavy-heterogeneous__release-distributed-defa/002__deploy_llmisvc

The KServe LLMInferenceService deployment failed when the wait_service_ready task aborted upon detecting a pod restart, which was triggered by a container initialization failure likely caused by the heavy InfiniBand/RoCE hardware probe script (ibm-aiu-setup.sh) hanging or crashing during startup. This instability was compounded by a gateway routing misconfiguration, as the cluster gateway did not support the InferencePool backend referenced in the service manifest, preventing the workload from reconciling to a healthy state.

Failure Review 002 Deploy Llmisvc 9

005__llmd__heavy-heterogeneous__release-precise-prefix-c/002__deploy_llmisvc

The wait_service_ready task aborted the deployment pipeline after detecting that the LLMInferenceService pod crashed and restarted, indicating the service failed to reach a ready state. The root cause is a cluster-level API incompatibility where the Kubernetes cluster does not support the required InferencePool custom resource, causing the Kserve Gateway controller to reject the routing configuration and leave the service permanently unavailable. This missing dependency triggered a crash loop in the inference pod, which activated the test harness's safety abort mechanism.

🔄 02 Export-Artifacts

Post-processing Status ❌

@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of llm_d cpt-release-testing-llama-33-70b 🟢

Execution Engine Configuration

forge:
  args:
  - cpt-release-testing-llama-33-70b
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:e47d6cf935c27d664d9c3ce287aeb3dcae2f3ffe9133ac062baa0a0c4f58eed7
    workloads.pvc_storage_class: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 2 seconds

✅ 01 Test 7 hours, 42 minutes, 8 seconds

Test Description

This test validates the llm_d project on H200 GPUs using the Llama 3.3 70B model within the RHOAI-3.5-EA2 release environment. It evaluates three deployment profiles (release-distributed-default, release-precise-prefix-cache, release-approximate-prefix-cache) against concurrent, heavy-heterogeneous, and multi-turn benchmark workloads to assess release performance and regression.

🔄 02 Export-Artifacts

Post-processing Status ✅

@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of llm_d cpt-release-testing-gpt-oss-120b 🟢

Execution Engine Configuration

forge:
  args:
  - cpt-release-testing-gpt-oss-120b
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
    platform.cluster.skip_gpu_readiness: true
    platform.operators.rhods-operator.channel: stable-3.5
    platform.rhoai.custom_catalog.enabled: true
    platform.rhoai.custom_catalog.image: quay.io/rhoai/rhoai-fbc-fragment@sha256:e47d6cf935c27d664d9c3ce287aeb3dcae2f3ffe9133ac062baa0a0c4f58eed7
    workloads.pvc_storage_class: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

✅ 00 Preflight 2 seconds

✅ 01 Test 6 hours, 38 minutes, 38 seconds

Test Description

This test evaluates the llm_d project for the RHOAI 3.5 EA2 release on H200 GPUs, specifically benchmarking the GPT-OSS-120B model across three deployment profiles: distributed default, precise prefix caching, and approximate prefix caching. It validates performance under concurrent, heavy heterogeneous, and multi-turn workload variations.

🔄 02 Export-Artifacts

Post-processing Status ✅

@kpouget kpouget changed the title refactor: Share GuideLLM dashboard postprocessing [llm-d] refactor: Share GuideLLM dashboard postprocessing Aug 25, 2026
@kpouget

kpouget commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

thanks @albertoperdomo2 ,
/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Aug 25, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit e1780be into openshift-psap:main Aug 25, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants