Skip to content

[Experimental]: Release testing - #135

Merged
openshift-merge-bot[bot] merged 11 commits into
openshift-psap:mainfrom
albertoperdomo2:experimental/release-testing
Aug 3, 2026
Merged

openshift-merge-bot[bot] merged 11 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
@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 | ✅ 5
✅ Passed checks (5 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.
Title check ✅ Passed The title clearly identifies the changes as experimental release testing, which matches the new release preset, deployment configurations, and test coverage.
✨ 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 Outdated
@albertoperdomo2 albertoperdomo2 changed the title WIP [Experimental]: Release testing [Experimental]: Release testing Aug 3, 2026
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 3, 2026
Signed-off-by: Alberto Perdomo <aperdomo@redhat.com>
@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 3, 2026
@albertoperdomo2
albertoperdomo2 force-pushed the experimental/release-testing branch from 8c67043 to 03688e0 Compare August 3, 2026 09:59
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 3, 2026
@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d smoke
/pipeline full
/cluster forge-smoke-testing

@psap-forge-bot

psap-forge-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown
🔴 Submission of llm_d smoke failed after 4 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260803-104102' failed: Job failed in its early stages: Failed to fetch Pipeline 'full': Not Found

/test fournos llm_d smoke
/pipeline full
/cluster forge-smoke-testing

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d smoke
/pipeline forge-prepare-test
/cluster forge-smoke-testing

@psap-forge-bot

psap-forge-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

🔴 Execution of llm_d smoke 🔴

Execution Engine Configuration

forge:
  args:
  - smoke
  configOverrides: {}
  project: llm_d

Artifact Links

Test Logs

✅ 001 Prepare 32 seconds

✅ 02 Preflight 5 seconds

❌ 03 Test 37 minutes, 53 seconds

Test Description

This test validates the approximate-prefix-cache deployment profile on the llm_d project using the Qwen/Qwen3-0.6B model. It executes a lightweight short smoke benchmark with concurrent rates of 1, 4, and 8 to verify basic inference functionality and deployment readiness.

Failure Review 002 Deploy Llmisvc

001__llmd__short__approximate-prefix-cache/002__deploy_llmisvc

The kserve/deploy_llmisvc test failed after exhausting 180 retries because the LLMInferenceService deployment never achieved minimum availability, permanently halting test execution. The definitive root cause is that all backend inference pods remained permanently Pending due to unmet cluster constraints, specifically the inability of the Kubernetes scheduler to place pods requiring two GPUs on nodes labeled nvidia.com/gpu.present: 'true', compounded by a missing InferencePool CRD that blocked gateway route creation.

🔄 04 Export-Artifacts

Post-processing Status ❌

@psap-forge-bot

psap-forge-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown
🔴 Submission of llm_d smoke failed after 41 minutes, 29 seconds 🔴

Error: FournosJobFailureError: FOURNOS Job 'forge-llm-d-20260803-104334' failed: Tasks Completed: 4 (Failed: 1, Cancelled 0), Skipped: 0

/test fournos llm_d smoke
/pipeline forge-prepare-test
/cluster forge-smoke-testing

@albertoperdomo2

Copy link
Copy Markdown
Collaborator Author

/test fournos llm_d smoke
/pipeline forge-prepare-test
/cluster forge-smoke-testing

@psap-forge-bot

psap-forge-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

🟢 Execution of llm_d smoke 🟢

Execution Engine Configuration

forge:
  args:
  - smoke
  configOverrides: {}
  project: llm_d

Artifact Links

Test Logs

✅ 001 Prepare 23 seconds

✅ 02 Preflight 1 second

✅ 03 Test 10 minutes, 45 seconds

Test Description

This test validates the llm_d project's smoke functionality by running a short concurrent benchmark against the Qwen/Qwen3-0.6B model using the approximate-prefix-cache deployment profile. It specifically verifies basic inference throughput and gateway connectivity under low concurrent load (rates 1, 4, 8) with short 256-token prompts and 128-token outputs over a 120-second window.

🔄 04 Export-Artifacts

Post-processing Status ✅

@psap-forge-bot

psap-forge-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

@kpouget

kpouget commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

thanks @albertoperdomo2 , let's merge this 🎉
/lgtm
/approve

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Aug 3, 2026
@openshift-ci

openshift-ci Bot commented Aug 3, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: kpouget

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 3, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit aeaae14 into openshift-psap:main Aug 3, 2026
6 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.

2 participants