mirror of
https://github.com/kvcache-ai/Mooncake.git
synced 2026-11-05 01:17:55 +00:00
[PR #564] [MERGED] add support for asynchronous batch transfer to accelerate transfer operation #1657
Labels
No labels
ascend
auto-closed
bug
bug
CI/Build
Common
documentation
enhancement
feature request
good first issue
help wanted
high priority
MetaX
nightly-failure
pull-request
PyTorch Backend
question
RFC
Roadmap
stale
Store
Tests
Transfer Engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/Mooncake#1657
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/kvcache-ai/Mooncake/pull/564
Author: @SCDESPERTATE
Created: 6/26/2025
Status: ✅ Merged
Merged: 7/7/2025
Merged by: @alogfans
Base:
main← Head:add_async_transfer_support📝 Commits (2)
e1a5786add support for asynchronously a transferring batch (without waiting for the result to return)a9f7438fix the return type in read/write wrappers ofbatchTransferAsync📊 Changes
4 files changed (+231 additions, -0 deletions)
View changed files
📝
mooncake-integration/transfer_engine/transfer_engine_py.cpp(+140 -0)📝
mooncake-integration/transfer_engine/transfer_engine_py.h(+21 -0)📝
mooncake-transfer-engine/include/transport/transport.h(+1 -0)📝
mooncake-wheel/tests/transfer_engine_initiator_test.py(+69 -0)📄 Description
Add Support for Asynchronous Batch Transfer Interface
As mentioned in #499 , the batch transfer operation can greatly accelerate the transfer process. With batch sizes exceeding thousands, Pybind interface overhead becomes substantial, reducing the overall throughput. One intuitive method in resolving this is dividing a large batch of transfer requests into micro-batches and posted them separately. But with current implementation of batch transfer, each micro-batch have to wait for all its tasks to complete, then return, making the division pointless. So this pull request aims to decouple task submission from result polling, allowing Pybind calling overhead to overlap with actual task transfer time.
Introduce an asynchronous batch transfer Pybind interface for task submission without immediate result retrieval. A separate querying interface ensures batch completion. These modifications,based on #557, aim to enhance transfer efficiency and throughput.
Below are the batch transfer speed results based on a 200*2Gbps RDMA setup,
Related test has been added to
mooncake-wheel/tests/transfer_engine_initiator_test.py🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.