Skip to content

Conversation

@biswapanda
Copy link
Contributor

@biswapanda biswapanda commented Nov 19, 2025

Overview:

Details:

Where should the reviewer start?

Related Issues: (use one of the action keywords Closes / Fixes / Resolves / Relates to)

  • closes GitHub issue: #xxx

Summary by CodeRabbit

Release Notes

  • New Features

    • Added configurable request-plane option (defaults to "nats") for flexible request handling.
  • Tests

    • Introduced new multimodal inference test configuration with TCP request plane support.

✏️ Tip: You can customize this high-level summary in your review settings.

@biswapanda biswapanda requested review from a team as code owners November 19, 2025 22:44
@biswapanda biswapanda changed the title tests: add large size image transfer over tcp test: add large size image transfer over tcp Nov 19, 2025
@github-actions github-actions bot added the test label Nov 19, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 19, 2025

Walkthrough

A new optional --request-plane argument is added to the VLLM multimodal EPD launch script with a default value of "nats", which exports the setting as an environment variable. A corresponding test configuration using this script is introduced to validate the functionality with a large image payload and Qwen2.5-VL model.

Changes

Cohort / File(s) Summary
Launch Script Enhancement
examples/backends/vllm/launch/agg_multimodal_epd.sh
Added optional --request-plane command-line argument (default: "nats"), argument parsing logic, and conditional export of DYN_REQUEST_PLANE environment variable.
Test Configuration Addition
tests/serve/test_vllm.py
Introduced new test entry multimodal_agg_qwen_epd_30mb_img to vllm_configs with Qwen2.5-VL-7B-Instruct model, GPU marking, request-plane TCP script arguments, and 30MB image test payload.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Script argument parsing is straightforward with no complex logic
  • Test configuration is a simple declarative addition following existing patterns
  • Changes are highly homogeneous (single argument addition and single config entry)

Poem

🐰 A hop through the EPD, with planes we can choose,
Request-plane options, a new path to cruise,
From nats to TCP, with Qwen's vision so keen,
Thirty megabytes tested—the grandest we've seen! 🖼️

Pre-merge checks

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is entirely empty—all template sections (Overview, Details, Where should the reviewer start, Related Issues) contain only placeholder text with no substantive content filled in. Fill in all required sections: provide an overview of the changes, describe the modifications made, identify key files for review, and link any related GitHub issues using appropriate action keywords.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title 'test: add large size image transfer over tcp' accurately describes the main change: adding a new VLLM test configuration for testing large image transfer using TCP request plane.

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 and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
examples/backends/vllm/launch/agg_multimodal_epd.sh (1)

72-76: Consider simplifying the conditional check.

Since REQUEST_PLANE has a default value of "nats" (line 22), the condition [[ -n "$REQUEST_PLANE" ]] will always evaluate to true. You can simplify this by removing the conditional wrapper.

Apply this diff to simplify:

-
-if [[ -n "$REQUEST_PLANE" ]]; then
-    export DYN_REQUEST_PLANE="$REQUEST_PLANE"
-    echo "Using request plane: $REQUEST_PLANE"
-fi
-
+export DYN_REQUEST_PLANE="$REQUEST_PLANE"
+echo "Using request plane: $REQUEST_PLANE"
+
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4215b59 and c451449.

📒 Files selected for processing (2)
  • examples/backends/vllm/launch/agg_multimodal_epd.sh (3 hunks)
  • tests/serve/test_vllm.py (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: oandreeva-nv
Repo: ai-dynamo/dynamo PR: 2989
File: lib/llm/src/block_manager/distributed/transfer.rs:6-6
Timestamp: 2025-09-18T21:47:44.143Z
Learning: For PR ai-dynamo/dynamo#2989, the ConnectorTransferBatcher architectural issues will be addressed in a follow-up PR by removing the duplicate batching logic and integrating distributed transfers with the existing TransferBatcher + LocalTransferManager pipeline, rather than adding bounded concurrency primitives like Semaphore.
🧬 Code graph analysis (1)
tests/serve/test_vllm.py (1)
tests/utils/payload_builder.py (1)
  • chat_payload (129-156)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: vllm (arm64)
  • GitHub Check: operator (arm64)
  • GitHub Check: sglang (arm64)
  • GitHub Check: operator (amd64)
  • GitHub Check: trtllm (arm64)
  • GitHub Check: Build and Test - dynamo
🔇 Additional comments (1)
examples/backends/vllm/launch/agg_multimodal_epd.sh (1)

22-22: LGTM! Request plane argument handling is correctly implemented.

The --request-plane argument parsing, default value, and help documentation are properly implemented and follow the existing patterns in the script.

Also applies to: 35-38, 44-44

Comment on lines +180 to +209
"multimodal_agg_qwen_epd_30mb_img": VLLMConfig(
name="multimodal_agg_qwen_epd_30mb_img",
directory=vllm_dir,
script_name="agg_multimodal_epd.sh",
marks=[pytest.mark.gpu_2],
model="Qwen/Qwen2.5-VL-7B-Instruct",
delayed_start=0,
script_args=[
"--model",
"Qwen/Qwen2.5-VL-7B-Instruct",
"--request-plane",
"tcp",
],
timeout=360,
request_payloads=[
chat_payload(
[
{"type": "text", "text": "What is in this image?"},
{
"type": "image_url",
"image_url": {
"url": "https://floatingworld.com/wp-content/uploads/2023/02/Sample-jpg-image-30mb-16.jpg"
},
},
],
repeat_count=1,
expected_response=["bus"],
)
],
),
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

Verify the expected response matches the actual image content.

The test expects a response containing "bus", but the 30MB image URL (https://floatingworld.com/wp-content/uploads/2023/02/Sample-jpg-image-30mb-16.jpg) appears to be a generic sample image from floatingworld.com, not the COCO dataset bus image used in the reference test configuration multimodal_agg_qwen_epd (line 171). This mismatch could cause the test to fail.

Please verify the image content and update the expected response accordingly. You can check the image content with:

Additionally, please search the web to confirm whether the floatingworld.com sample image contains a bus:


🏁 Script executed:

#!/bin/bash
# Description: Verify the image URL is accessible and examine its metadata
# Expected: HTTP 200 response and image metadata

echo "Checking image URL accessibility..."
curl -I "https://floatingworld.com/wp-content/uploads/2023/02/Sample-jpg-image-30mb-16.jpg" 2>&1 | head -n 10

echo -e "\n\nChecking reference COCO image URL..."
curl -I "http://images.cocodataset.org/test2017/000000155781.jpg" 2>&1 | head -n 10

Length of output: 1218


🌐 Web query:

What is shown in the image at https://floatingworld.com/wp-content/uploads/2023/02/Sample-jpg-image-30mb-16.jpg?

💡 Result:

The image is a colorful nebula/space-style test picture (a bright, cloud‑like “nebula” texture used as a large sample JPG). [1][2]

Sources:
[1] Floating World Gallery — Sample-jpg-image-30mb 16.
[2] Example collection of large sample/nebula test images (CSDN).


Update the expected response to match the actual nebula image content or replace the image with one containing a bus.

The verification confirms the major issue: the image at the provided URL is a colorful nebula/space-style test texture, not a bus image. The test expects ["bus"] as the response, but this will fail when the model analyzes the actual nebula image. Either update expected_response to reflect what's in the nebula image, or replace the image URL with one that actually contains a bus (such as the COCO reference image used in the multimodal_agg_qwen_epd configuration).

🤖 Prompt for AI Agents
In tests/serve/test_vllm.py around lines 180 to 209, the test uses a
nebula/space texture image but asserts expected_response=["bus"]; update the
test so the expected output matches the actual nebula image content OR replace
the image URL with a valid bus image (for example reuse the COCO bus reference
image from multimodal_agg_qwen_epd config), and ensure
repeat_count/expected_response pair is consistent with the chosen image so the
model's response assertion will pass.

{
"type": "image_url",
"image_url": {
"url": "https://floatingworld.com/wp-content/uploads/2023/02/Sample-jpg-image-30mb-16.jpg"
Copy link
Contributor

Choose a reason for hiding this comment

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

@krishung5 - want to double check - will this be decoded in the frontend and sent over nixl or over the request plane?

Copy link
Contributor

Choose a reason for hiding this comment

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

In EPD, the image will be loaded in the encode worker: https://github.com/ai-dynamo/dynamo/blob/main/components/src/dynamo/vllm/multimodal_handlers/encode_worker_handler.py#L50
it's not decoded in the frontend. I think this PR is going to add that: #3988

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants