Skip to content
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

[Core][Optimization] change python dict to pytorch tensor #4607

Merged
merged 12 commits into from
May 7, 2024

Conversation

youkaichao
Copy link
Member

@youkaichao youkaichao commented May 5, 2024

Prior to this PR, blocks_to_copy uses Dict[int, List[int]] type in Python, and convert to std::map<int64_t, std::vector<int64_t>>& in c++ . Although the type contains a reference & , it is actually a copy. Inside the cpp code, we convert the data into pytorch array.

In distributed setting, the cost is even larger: blocks_to_copy will be serialized, and broadcasted, deserialized, passed to c++, and finally convert to pytorch tensor.

This PR changes the python side data structure to List[Tuple[int, int]], and convert it once to pytorch tensor before broadcast. PyTorch tensor can be passed to c++ code without copy.

The convertion is done by flatten the data, i.e. old: Dict[int, List[int]], new = [(k, dst) for k, v in old.items() for dst in v].

e.g. old = {1: [2, 3, 4]} , new = [(1, 2), (1, 3), (1, 4)] .

Future todo:

@LiuXiaoxuanPKU LiuXiaoxuanPKU self-assigned this May 6, 2024
Copy link
Collaborator

@LiuXiaoxuanPKU LiuXiaoxuanPKU left a comment

Choose a reason for hiding this comment

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

LGTM! Thanks for the PR!

@youkaichao youkaichao merged commit 63575bc into vllm-project:main May 7, 2024
59 checks passed
@youkaichao youkaichao deleted the remove_python_dict branch May 7, 2024 04:30
dtrifiro pushed a commit to opendatahub-io/vllm that referenced this pull request May 7, 2024
Temirulan pushed a commit to Temirulan/vllm-whisper that referenced this pull request Sep 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants