Skip to content

WIP [Experimental]: Release testing - #135

Open
albertoperdomo2 wants to merge 7 commits into
openshift-psap:mainfrom
albertoperdomo2:experimental/release-testing
Open

WIP [Experimental]: Release testing#135
albertoperdomo2 wants to merge 7 commits into
openshift-psap:mainfrom
albertoperdomo2:experimental/release-testing

Conversation

@albertoperdomo2

@albertoperdomo2 albertoperdomo2 commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features
    • Added the llama-33-70b-rhoai-release deployment preset.
  • Improvements
    • Increased deployments to 4 replicas with tensor parallelism 2 and max model length 40,960.
    • Enhanced precise prefix caching: improved tokenizer/model cache mounting and added ZMQ-based KV event reporting; refined scheduler scoring weights.
    • Standardized benchmark and job timeouts to 3,600 seconds, including clearer active-deadline behavior.
  • Tests
    • Expanded/updated assertions for preset generation, profile rendering, prefix-caching behavior, and benchmark/job timeout handling.

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 21, 2026
@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign ashtarkb for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@coderabbitai

coderabbitai Bot commented Jul 21, 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
📝 Walkthrough

Walkthrough

The change scales llm-d deployments, adds structured vLLM and precise prefix-cache configuration, introduces a Llama release preset, enhances manifest rendering, updates Kubernetes wiring, and propagates 3600-second benchmark timeouts through workload execution.

Changes

llm-d deployment profiles

Layer / File(s) Summary
Runtime profiles and release preset
projects/llm_d/orchestration/config.d/deployments.yaml, projects/llm_d/orchestration/presets.d/presets.yaml
Defaults use structured vLLM arguments with increased scaling, precise prefix-cache settings are defined, and a Llama 3.3 70B release preset is added.
Profile placeholder rendering
projects/llm_d/orchestration/render_inference_service.py
Nested placeholders, cache-aware model paths, labels, annotations, and environment variables are applied while rendering inference services.
Prefix-cache Kubernetes wiring
projects/llm_d/orchestration/manifests/deployments/*.yaml
Container arguments, scheduler weights, ZMQ KV events, tokenizer configuration, ports, resources, and volume mounts are updated.
Profile, preset, and cache validation
projects/llm_d/tests/test_profiles.py, projects/llm_d/orchestration/config.d/model_cache.yaml
Tests cover profile shapes, preset expansion, rendered resources, precise prefix-cache wiring, mount paths, scheduler weights, and PVC overrides; model-cache override behavior is documented.

Guidellm benchmark timeouts

Layer / File(s) Summary
Benchmark timeout propagation
projects/llm_d/orchestration/config.d/workloads.yaml, projects/guidellm/toolbox/run_guidellm_benchmark/*, projects/guidellm/tests/test_run_guidellm_benchmark.py
Benchmark workloads use 3600-second timeouts, rendered Jobs set active deadlines, polling retries include the grace period, and timeout behavior is tested.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Preset as llama-33-70b-rhoai-release
  participant Renderer as render_inference_service_from_parts
  participant Manifest as Kubernetes manifest
  participant EPP as EndpointPickerConfig
  participant KV as KV event endpoint
  Preset->>Renderer: Selects model and deployment profiles
  Renderer->>Renderer: Replaces profile placeholders and selects model path
  Renderer->>Manifest: Applies labels, annotations, environment, and arguments
  Manifest->>EPP: Configures tokenizer pool and ZMQ KV events
  EPP->>KV: Publishes KV events through port 5557
Loading

Possibly related PRs

Suggested reviewers: kpouget

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is very generic and does not clearly describe the main change in the release-testing updates. Use a concise, specific title such as "Add llama-33-70b-rhoai-release preset and release-testing config updates".
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
✨ Finishing Touches
🧪 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: 1

🤖 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/llm_d/orchestration/render_inference_service.py`:
- Around line 118-119: The deployment profile handling should merge, rather than
replace, the existing environment variables in serving_container["env"]. Update
this block to preserve the base inference service template entries while adding
or overriding entries from deployment_profile["env"], using the existing
environment-list structure and retaining the deep-copy behavior.
🪄 Autofix (Beta)

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

Run ID: 6fae2064-d9bc-48cb-8176-f78e9d6cc60f

📥 Commits

Reviewing files that changed from the base of the PR and between 8df998c and edf3a1e.

📒 Files selected for processing (6)
  • projects/llm_d/orchestration/config.d/deployments.yaml
  • projects/llm_d/orchestration/manifests/deployments/approximate-prefix-cache.yaml
  • projects/llm_d/orchestration/manifests/deployments/precise-prefix-cache.yaml
  • projects/llm_d/orchestration/presets.d/presets.yaml
  • projects/llm_d/orchestration/render_inference_service.py
  • projects/llm_d/tests/test_profiles.py

Comment on lines +118 to +119
if "env" in deployment_profile:
serving_container["env"] = copy.deepcopy(deployment_profile["env"])

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Consider merging env variables instead of overwriting.

Overwriting serving_container["env"] completely removes any environment variables that might have been defined in the base inference service template (such as standard cluster proxies or sidecar configurations). Consider merging the deployment_profile["env"] with the existing env list to be safer.

💡 Proposed fix
-    if "env" in deployment_profile:
-        serving_container["env"] = copy.deepcopy(deployment_profile["env"])
+    if "env" in deployment_profile:
+        existing_env = {e["name"]: e for e in serving_container.get("env", [])}
+        for new_e in copy.deepcopy(deployment_profile["env"]):
+            existing_env[new_e["name"]] = new_e
+        serving_container["env"] = list(existing_env.values())
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if "env" in deployment_profile:
serving_container["env"] = copy.deepcopy(deployment_profile["env"])
if "env" in deployment_profile:
existing_env = {e["name"]: e for e in serving_container.get("env", [])}
for new_e in copy.deepcopy(deployment_profile["env"]):
existing_env[new_e["name"]] = new_e
serving_container["env"] = list(existing_env.values())
🤖 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/llm_d/orchestration/render_inference_service.py` around lines 118 -
119, The deployment profile handling should merge, rather than replace, the
existing environment variables in serving_container["env"]. Update this block to
preserve the base inference service template entries while adding or overriding
entries from deployment_profile["env"], using the existing environment-list
structure and retaining the deep-copy behavior.

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d llama-33-70b-rhoai-release 🔴

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides: {}
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test 24 minutes, 32 seconds

Test Description

This test benchmarks the Llama 3.3 70B FP8 model in the llm_d project to compare performance across three deployment profiles: distributed-default, precise-prefix-cache, and approximate-prefix-cache. It evaluates these configurations under heavy load using concurrent 1k-1k, heavy-heterogeneous, and multi-turn workloads to assess the impact of different prefix caching strategies.

Failure Review 003 Deploy Llmisvc

001__llmd_run_distributed-default_redhatai-llama-3-3-70b-instruct_concurrent-1k-1k/000__llmd_test/003__deploy_llmisvc

The wait_service_ready task failed because the LLMInferenceService (llm-d) never reached a ready state, triggering a ProgressDeadlineExceeded error on the llm-d-kserve-router-scheduler ReplicaSet after its pods remained stuck in the ContainerCreating state for over 15 minutes. Although the evidence confirms a systemic initialization failure affecting the router scheduler and model pods, the provided artifact descriptions are missing the pod event logs required to determine the specific cause, such as a PVC mount timeout, image pull failure, or node resource constraint.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 26 minutes, 42 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260721-081746' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d llama-33-70b-rhoai-release 🔴

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides: {}
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test 19 minutes, 37 seconds

Test Description

This test evaluates inference performance for the Llama-3.3-70B model in the llm_d project on Red Hat OpenShift AI, specifically comparing three deployment profiles: distributed-default, precise-prefix-cache, and approximate-prefix-cache. It benchmarks throughput and latency under heavy concurrent, heterogeneous, and multi-turn text completion workloads to assess scheduling and prefix caching behavior.

Failure Review 002 Deploy Llmisvc

001__llmd_run_distributed-default_redhatai-llama-3-3-70b-instruct_concurrent-1k-1k/000__llmd_test/002__deploy_llmisvc

The wait_service_ready task failed because the LLMInferenceService could not reach a ready status, causing the llm-d-kserve-router-scheduler ReplicaSet to exceed its progress deadline and trigger a ProgressDeadlineExceeded error after 90 retries. The definitive root cause is that the router pod remained permanently stuck in the ContainerCreating state for over 15 minutes, blocking router initialization while the four underlying inference workload pods successfully transitioned to Running.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 21 minutes, 24 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260721-091342' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d llama-33-70b-rhoai-release 🔴

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides: {}
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test 19 minutes, 48 seconds

Test Description

This test benchmarks the llm_d project using the RedHatAI/Llama-3.3-70B-Instruct-FP8-dynamic model on RHOAI, evaluating performance across distributed-default, precise-prefix-cache, and approximate-prefix-cache deployment profiles. It applies heavy concurrent workloads including 1k token sequences, heterogeneous heavy prompts, and multi-turn conversations to assess system throughput and latency under varying load conditions.

Failure Review 002 Deploy Llmisvc

001__llmd_run_distributed-default_redhatai-llama-3-3-70b-instruct_concurrent-1k-1k/000__llmd_test/002__deploy_llmisvc

The LLMInferenceService readiness test failed after exhausting 90 retries because the KServe controller could not reconcile the router scheduler due to a Kubernetes API validation error. The definitive root cause is a malformed src/llminferenceservice.yaml manifest where spec.router.scheduler.template omits the mandatory containers field, preventing the creation of the required llm-d-kserve-router-scheduler Deployment.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 21 minutes, 27 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260721-112350' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d llama-33-70b-rhoai-release 🔴

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test 51 minutes, 27 seconds

Test Description

This test evaluates the llm_d project by benchmarking the Llama 3.3 70B model across three distinct prefix caching deployment profiles (distributed-default, precise-prefix-cache, and approximate-prefix-cache). It specifically measures inference throughput and stability under heavy concurrent, heterogeneous, and multi-turn text completion workloads.

Failure Review 000 Run Guidellm Benchmark

001__llmd_run_distributed-default_redhatai-llama-3-3-70b-instruct_concurrent-1k-1k/000__llmd_test/005__benchmark_concurrent-1k-1k/000__run_guidellm_benchmark

The wait_guidellm_benchmark_task failed after exhausting 180 retry attempts over 30 minutes because the GuideLLM benchmark Kubernetes Job remained stuck in a Running state with .status.active=1 for the entire polling window. This persistent active status confirms a silent application-level hang within the benchmark container, where the process was blocked by a non-interruptible wait—likely caused by network timeouts, TLS negotiation failures, or a deadlock during concurrent load generation against the inference endpoint—preventing any progress or termination.

Failure Review 007 Cleanup Test Resources

001__llmd_run_distributed-default_redhatai-llama-3-3-70b-instruct_concurrent-1k-1k/000__llmd_test/007__cleanup_test_resources

The delete_inference_service cleanup task failed because the llminferenceservice/llm-d resource remained stuck in a Terminating state, causing the deletion command to time out after 30 seconds. The controller was unable to remove the serving.kserve.io/llmisvc-finalizer due to reconciliation errors involving a missing HTTPRoute and a "object has been modified" conflict when updating the dependent Deployment.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 57 minutes, 4 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260721-121117' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx

@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: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
projects/guidellm/toolbox/run_guidellm_benchmark/main.py (1)

171-183: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Bound the Kubernetes calls on the timeout path. The job-state polls here and the oc() calls in capture_guidellm_state() should pass a remaining timeout_seconds; otherwise a hung API-server call can block past ctx.wait_deadline and prevent the timeout from being raised.

🤖 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/toolbox/run_guidellm_benchmark/main.py` around lines 171 -
183, Bound the Kubernetes polling calls in the timeout path by computing the
remaining time until ctx.wait_deadline and passing it as timeout_seconds to oc()
in the active job-state check and to every oc() call within
capture_guidellm_state(). Preserve the existing return-code handling while
ensuring hung API calls cannot extend execution beyond the deadline.
🤖 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/toolbox/run_guidellm_benchmark/main.py`:
- Around line 252-260: Update _raise_benchmark_timeout to write the standard
artifact_dir/FAILURE marker before raising TimeoutError, matching the existing
failed-job path. Preserve the current capture_guidellm_state call and timeout
exception behavior.

---

Outside diff comments:
In `@projects/guidellm/toolbox/run_guidellm_benchmark/main.py`:
- Around line 171-183: Bound the Kubernetes polling calls in the timeout path by
computing the remaining time until ctx.wait_deadline and passing it as
timeout_seconds to oc() in the active job-state check and to every oc() call
within capture_guidellm_state(). Preserve the existing return-code handling
while ensuring hung API calls cannot extend execution beyond the deadline.
🪄 Autofix (Beta)

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

Run ID: 0bbe0313-eea3-4f12-bd23-ac1ab23bf438

📥 Commits

Reviewing files that changed from the base of the PR and between 52e83c9 and a876f3c.

📒 Files selected for processing (8)
  • projects/guidellm/tests/test_run_guidellm_benchmark.py
  • projects/guidellm/toolbox/run_guidellm_benchmark/main.py
  • projects/guidellm/toolbox/run_guidellm_benchmark/utils.py
  • projects/llm_d/orchestration/config.d/deployments.yaml
  • projects/llm_d/orchestration/config.d/model_cache.yaml
  • projects/llm_d/orchestration/config.d/workloads.yaml
  • projects/llm_d/orchestration/render_inference_service.py
  • projects/llm_d/tests/test_profiles.py
💤 Files with no reviewable changes (2)
  • projects/llm_d/orchestration/config.d/deployments.yaml
  • projects/llm_d/orchestration/render_inference_service.py

Comment on lines +252 to +260
def _raise_benchmark_timeout(args, ctx) -> None:
capture_guidellm_state(
artifact_dir=args.artifact_dir,
namespace=ctx.target_namespace,
benchmark_name=ctx.benchmark_name,
)
raise TimeoutError(
f"GuideLLM benchmark {ctx.benchmark_name} did not complete within {args.timeout}s"
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Write the standard failure artifact for timed-out jobs.

The failed-job path writes artifact_dir/FAILURE, but _raise_benchmark_timeout() only captures state and raises. Timeout failures should produce the same failure marker so downstream artifact and CI consumers handle both terminal failure modes consistently.

Proposed fix
 def _raise_benchmark_timeout(args, ctx) -> None:
     capture_guidellm_state(
         artifact_dir=args.artifact_dir,
         namespace=ctx.target_namespace,
         benchmark_name=ctx.benchmark_name,
     )
+    write_text(
+        args.artifact_dir / "FAILURE",
+        f"GuideLLM benchmark job '{ctx.benchmark_name}' timed out after {args.timeout}s.\n",
+    )
     raise TimeoutError(
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
def _raise_benchmark_timeout(args, ctx) -> None:
capture_guidellm_state(
artifact_dir=args.artifact_dir,
namespace=ctx.target_namespace,
benchmark_name=ctx.benchmark_name,
)
raise TimeoutError(
f"GuideLLM benchmark {ctx.benchmark_name} did not complete within {args.timeout}s"
)
def _raise_benchmark_timeout(args, ctx) -> None:
capture_guidellm_state(
artifact_dir=args.artifact_dir,
namespace=ctx.target_namespace,
benchmark_name=ctx.benchmark_name,
)
write_text(
args.artifact_dir / "FAILURE",
f"GuideLLM benchmark job '{ctx.benchmark_name}' timed out after {args.timeout}s.\n",
)
raise TimeoutError(
f"GuideLLM benchmark {ctx.benchmark_name} did not complete within {args.timeout}s"
)
🤖 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/toolbox/run_guidellm_benchmark/main.py` around lines 252 -
260, Update _raise_benchmark_timeout to write the standard artifact_dir/FAILURE
marker before raising TimeoutError, matching the existing failed-job path.
Preserve the current capture_guidellm_state call and timeout exception behavior.

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 1 hour, 39 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260721-155547' failed: PipelineRun "forge-llm-d-20260721-155547" failed to finish within "1h0m0s"

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@psap-forge-bot

Copy link
Copy Markdown

🟠 Execution of llm_d llama-33-70b-rhoai-release 🟠

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 3 seconds

01 Test

Test Description

This test evaluates the llm_d project by benchmarking the RedHatAI/Llama-3.3-70B-Instruct-FP8-dynamic model across three deployment profiles (distributed-default, precise-prefix-cache, and approximate-prefix-cache) under concurrent, heavy-heterogeneous, and multi-turn text completion workloads.

🔄 02 Export-Artifacts

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 1 hour, 1 minute, 45 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260722-072911' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire
/fournos staging

@albertoperdomo2
albertoperdomo2 force-pushed the experimental/release-testing branch from a876f3c to 2da0007 Compare July 22, 2026 10:15
@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@psap-forge-bot

Copy link
Copy Markdown

🟠 Execution of llm_d llama-33-70b-rhoai-release 🟠

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test

Test Description

This test evaluates the llm_d project using the RedHatAI/Llama-3.3-70B-Instruct-FP8-dynamic model, applying three deployment profiles (distributed-default, precise-prefix-cache, approximate-prefix-cache) across concurrent, heavy-heterogeneous, and multi-turn benchmarks for text completion requests.

🔄 02 Export-Artifacts

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 1 hour, 1 minute, 37 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260722-101720' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire
/fournos staging

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d llama-33-70b-rhoai-release 🔴

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 6 seconds

01 Test 3 hours, 22 minutes, 26 seconds

Test Description

This test evaluates the llm_d project's performance of the Llama-3.3-70B model on OpenShift AI by comparing three deployment profiles (distributed-default, precise-prefix-cache, and approximate-prefix-cache). It specifically benchmarks concurrent text completion workloads (concurrent-1k-1k, heavy-heterogeneous, and multi-turn) to assess scalability and throughput under varying load conditions.

Failure Review 003 Deploy Llmisvc

004__llmd_run_precise-prefix-cache_redhatai-llama-3-3-70b-instruct_concurrent-1k-1k/000__llmd_test/003__deploy_llmisvc

The wait_service_ready task failed because the KServe LLMInferenceService could not reach a ready state, resulting in a ProgressDeadlineExceeded error after the deployment controller exhausted its progress deadline. This timeout was triggered by underlying inference and router pods entering persistent CrashLoopBackOff and Error states, which prevented pods from becoming ready and registering valid endpoints for the service mesh.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 3 hours, 27 minutes, 11 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260722-135654' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire
/fournos staging

@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: 1

🤖 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/toolbox/run_guidellm_benchmark/main.py`:
- Around line 186-187: Update the polling flow around _raise_benchmark_timeout
to bound each status-query subprocess by the remaining benchmark deadline. Add
or delegate timeout support through shell.run, and pass remaining_deadline() to
every relevant oc get command so stalled calls cannot exceed the configured
timeout or grace period.
🪄 Autofix (Beta)

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

Run ID: 54d7ce9c-f765-4dc2-8456-569b408ecb98

📥 Commits

Reviewing files that changed from the base of the PR and between a876f3c and 492b0a7.

📒 Files selected for processing (11)
  • projects/guidellm/tests/test_run_guidellm_benchmark.py
  • projects/guidellm/toolbox/run_guidellm_benchmark/main.py
  • projects/guidellm/toolbox/run_guidellm_benchmark/utils.py
  • projects/llm_d/orchestration/config.d/deployments.yaml
  • projects/llm_d/orchestration/config.d/model_cache.yaml
  • projects/llm_d/orchestration/config.d/workloads.yaml
  • projects/llm_d/orchestration/manifests/deployments/approximate-prefix-cache.yaml
  • projects/llm_d/orchestration/manifests/deployments/precise-prefix-cache.yaml
  • projects/llm_d/orchestration/presets.d/presets.yaml
  • projects/llm_d/orchestration/render_inference_service.py
  • projects/llm_d/tests/test_profiles.py
🚧 Files skipped from review as they are similar to previous changes (9)
  • projects/llm_d/orchestration/config.d/model_cache.yaml
  • projects/llm_d/orchestration/config.d/workloads.yaml
  • projects/llm_d/orchestration/presets.d/presets.yaml
  • projects/guidellm/toolbox/run_guidellm_benchmark/utils.py
  • projects/llm_d/orchestration/config.d/deployments.yaml
  • projects/llm_d/orchestration/render_inference_service.py
  • projects/guidellm/tests/test_run_guidellm_benchmark.py
  • projects/llm_d/orchestration/manifests/deployments/precise-prefix-cache.yaml
  • projects/llm_d/tests/test_profiles.py

Comment thread projects/guidellm/toolbox/run_guidellm_benchmark/main.py
@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@psap-forge-bot

Copy link
Copy Markdown

🟠 Execution of llm_d llama-33-70b-rhoai-release 🟠

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test

Test Description

This test evaluates the llm_d project using the llama-33-70b-rhoai-release preset to benchmark the RedHatAI/Llama-3.3-70B-Instruct-FP8-dynamic model across three deployment profiles (distributed-default, precise-prefix-cache, approximate-prefix-cache). It assesses performance using concurrent, heavy-heterogeneous, and multi-turn text completion workloads with the RHODS operator configured on the beta channel.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 6 hours, 7 minutes, 29 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260723-095158' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire
/fournos staging

Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
@albertoperdomo2
albertoperdomo2 force-pushed the experimental/release-testing branch from 3b68fcb to f41bf19 Compare July 24, 2026 09:05
@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d llama-33-70b-rhoai-release 🔴

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test 2 hours, 17 minutes, 9 seconds

Test Description

This FORGE test evaluates the llm_d project by benchmarking the Llama 3.3 70B FP8 model across three deployment profiles (distributed-default, precise-prefix-cache, and approximate-prefix-cache) under concurrent, heavy-heterogeneous, and multi-turn text completion workloads.

Failure Review 002 Deploy Llmisvc

003__llmd__redhatai-llama-3-3-70b-instruct__distributed-default__multi-turn/000__llmd_test/002__deploy_llmisvc

The wait_service_ready task failed with a RetryFailure because the LLMInferenceService llm-d-distributed-default never achieved a ready state, exhausting all 90 retry attempts due to a MinimumReplicasUnavailable condition. The root cause is a Kubernetes pod scheduling deadlock where four inference pods remained stuck in a Pending state for over 15 minutes, preventing the scheduler from placing them due to unmet resource requests or node constraints.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 2 hours, 21 minutes, 47 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260724-091246' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire
/fournos staging

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@psap-forge-bot

Copy link
Copy Markdown

🔴 Execution of llm_d llama-33-70b-rhoai-release 🔴

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test 3 hours, 18 minutes, 20 seconds

Test Description

This test evaluates the RedHatAI/Llama-3.3-70B-Instruct-FP8-dynamic model in the llm_d project across three deployment profiles (distributed-default, precise-prefix-cache, approximate-prefix-cache) using concurrent benchmarks for standard 1k/1k tokens, heavy heterogeneous workloads, and multi-turn conversations.

Failure Review 000 Run Guidellm Benchmark

003__llmd__multi-turn/000__llmd_test/004__benchmark_multi-turn/000__run_guidellm_benchmark

The guidellm-benchmark job in the forge-llm-d namespace failed and halted pipeline execution after running for approximately 60 minutes, causing the waiter task to raise a RuntimeError. The failure was caused by a Kubernetes Job Deadline Exceeded condition, where the job was forcibly terminated because its runtime reached the configured activeDeadlineSeconds: 3600 limit before the benchmark workload completed.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown
🔴 Submission of llm_d llama-33-70b-rhoai-release failed after 3 hours, 24 minutes, 22 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260727-072945' failed: Tasks Completed: 3 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d llama-33-70b-rhoai-release
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/cluster athena-fire
/fournos staging

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@psap-forge-bot

Copy link
Copy Markdown

🛑 Execution of llm_d llama-33-70b-rhoai-release 🛑
🛑 JOB ABORTED - spec.shutdown=Stop

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test

Test Description

This test benchmarks the llm_d project using the Llama 3.3 70B model across three deployment profiles (distributed-default, precise-prefix-cache, and approximate-prefix-cache) with concurrent, heavy-heterogeneous, and multi-turn text completion workloads, while configuring the RHOAI operator on the beta channel.

🔄 02 Export-Artifacts

Post-processing Status

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d llama-33-70b-rhoai-release
/cluster athena-fire
/var model_cache.pvc.access_mode: ReadWriteMany
/var model_cache.pvc.storage_class_name: nfs-rwx
/fournos staging

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown

@albertoperdomo2: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/fournos f4f4ece link true /test fournos

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@psap-forge-bot

Copy link
Copy Markdown

🛑 Execution of llm_d llama-33-70b-rhoai-release 🛑
🛑 JOB ABORTED - spec.shutdown=Stop

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 2 seconds

01 Test

Test Description

This test evaluates the llm_d project using the Llama 3.3 70B Instruct FP8 model, comparing performance across three deployment profiles: distributed-default, precise-prefix-cache, and approximate-prefix-cache. It assesses the model's serving behavior under varied traffic patterns by running concurrent, heavy-heterogeneous, and multi-turn workload benchmarks.

🔄 02 Export-Artifacts

Post-processing Status

@psap-forge-bot

Copy link
Copy Markdown

🟢 Execution of llm_d llama-33-70b-rhoai-release 🟢

Execution Engine Configuration

forge:
  args:
  - llama-33-70b-rhoai-release
  configOverrides:
    model_cache.pvc.access_mode: ReadWriteMany
    model_cache.pvc.storage_class_name: nfs-rwx
  project: llm_d

Artifact Links

Test Logs

00 Preflight 1 second

01 Test 10 hours, 25 minutes, 58 seconds

Test Description

This test evaluates the llm_d project using the RedHatAI Llama 3.3 70B FP8 model for text completions, comparing distributed-default, precise-prefix-cache, and approximate-prefix-cache deployment profiles across concurrent-1k-1k, heavy-heterogeneous, and multi-turn benchmarks to assess inference efficiency and prefix caching strategies.

🔄 02 Export-Artifacts

Post-processing Status

Comment on lines +57 to +58
# Allow time for Kubernetes to record the Job's terminal status after its deadline.
wait_guidellm_benchmark_task._retry_config["attempts"] = _wait_attempts(timeout)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't know safe this is,
most of forge run in the same Python, so this might be changing a long-live object

wait_guidellm_benchmark_task._retry_config["attempts"]
this looks like a propery to of the wait_guidellm_benchmark_task task, not the script specific object

Comment on lines +253 to +257
capture_guidellm_state(
artifact_dir=args.artifact_dir,
namespace=ctx.target_namespace,
benchmark_name=ctx.benchmark_name,
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

capture_guidellm_state should be marked with @always
then you can remove the _raise_benchmark_timeout function and just raise

Comment on lines +8 to +9
# GitHub /var overrides can select an RWX-capable class together with
# access_mode: ReadWriteMany for multi-node model-cache mounts.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

not needed

@openshift-ci

openshift-ci Bot commented Jul 31, 2026

Copy link
Copy Markdown

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants