-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
[Ray] v1 Change device str for platform compatibility #19785
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[Ray] v1 Change device str for platform compatibility #19785
Conversation
👋 Hi! Thank you for contributing to the vLLM project. 💬 Join our developer Slack at https://slack.vllm.ai to discuss your PR in #pr-reviews, coordinate on features in #feat- channels, or join special interest groups in #sig- channels. Just a reminder: PRs would not trigger full CI run by default. Instead, it would only run Once the PR is approved and ready to go, your PR reviewer(s) can run CI to test the changes comprehensively before merging. To run CI, PR reviewers can either: Add 🚀 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @1StepForever, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request addresses a critical platform compatibility issue within the Ray placement group creation logic. By abstracting the device resource key, it ensures that resource allocation correctly identifies and utilizes available hardware, moving away from a GPU-specific assumption to a more generalized approach suitable for diverse computing environments.
Highlights
- Platform Compatibility: This PR enhances platform compatibility by replacing the hardcoded 'GPU' string with a dynamic
device_key
when creating Ray placement groups. This resolves key errors encountered on platforms that do not use 'GPU' as their device identifier. - Resource Abstraction: Introduced an abstraction layer by importing
current_platform
fromvllm.platforms
to retrieve the appropriateray_device_key
. This makes the resource allocation logic more generic and adaptable to different hardware configurations.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This PR addresses an important compatibility issue by abstracting the device key for Ray placement groups. The use of current_platform.ray_device_key
is a good step towards platform independence.
One area for improvement is the test plan. The PR description states "No test needed". However, for changes impacting platform compatibility, it's crucial to have some form of verification. This could involve:
- Manual testing on different target platforms (e.g., CUDA, ROCm if applicable) to confirm the fix works and no regressions are introduced.
- Adding a unit test that checks the value of
current_platform.ray_device_key
for mocked or common platforms. - An integration test that verifies placement group creation with the new dynamic key.
Without testing, it's harder to be confident that this change behaves correctly across all intended environments and won't cause issues in the future. Please consider adding details about how this change was verified or a plan for testing it.
Additionally, please ensure the PR description checklist items like 'Test Results' are filled if any manual or automated tests are performed.
vllm/v1/utils.py
Outdated
from vllm.platforms import current_platform | ||
device_key = current_platform.ray_device_key |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to PEP 8, imports like from vllm.platforms import current_platform
should generally be placed at the top of the file. This improves code readability and organization.
Since vllm.platforms.current_platform
appears to be lazily initialized (via __getattr__
in vllm/platforms/__init__.py
), moving this import to the top-level imports of vllm/v1/utils.py
should be safe and is the standard practice.
After moving the import, current_platform.ray_device_key
(as used on the next line) will correctly access the top-level import.
from vllm.platforms import current_platform | |
device_key = current_platform.ray_device_key | |
# The import 'from vllm.platforms import current_platform' should be moved to the top of this file. | |
device_key = current_platform.ray_device_key # This line now relies on the top-level import. |
e9a735f
to
ff00ecb
Compare
Signed-off-by: 1StepForever <wangww1step@foxmail.com>
ff00ecb
to
788deb8
Compare
Essential Elements of an Effective PR Description Checklist
supported_models.md
andexamples
for a new model.Purpose
Change the "GPU" str to platform device key.

When using ray to create placement groups, there is a key error for other platforms. So fix it with platform abstraction.
image
Test Plan
No test needed
Test Result
(Optional) Documentation Update