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

[Data] Yield remaining results from async map_batches #47696

Merged
merged 5 commits into from
Sep 18, 2024

Conversation

scottjlee
Copy link
Contributor

@scottjlee scottjlee commented Sep 17, 2024

Why are these changes needed?

When using an async actor with map_batches(), there is currently an unhandled edge case, where if tasks are scheduled very closely with one another, and all remaining futures complete at the same time, some remaining items in the internal queue to yield results from the futures will not be yielded. This PR ensures that we fully drain the internal queue to get all expected results.

Concretely, this issue came up while using async actors to yield results from vLLM async engine.

Related issue number

Checks

  • I've signed off every commit(by using the -s flag, i.e., git commit -s) in this PR.
  • I've run scripts/format.sh to lint the changes in this PR.
  • I've included any doc changes needed for https://docs.ray.io/en/master/.
    • I've added any new APIs to the API Reference. For example, if I added a
      method in Tune, I've added it in doc/source/tune/api/ under the
      corresponding .rst file.
  • I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
  • Testing Strategy
    • Unit tests
    • Release tests
    • This PR is not tested :(

Signed-off-by: Scott Lee <[email protected]>
Signed-off-by: Scott Lee <[email protected]>
Signed-off-by: Scott Lee <[email protected]>
await asyncio.sleep(i % 5)
print("yield", i)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

remove extraneous prints

@@ -358,6 +358,14 @@ async def process_all_batches():
_validate_batch_output(out_batch)
yield out_batch

# Drain the queue to yield any remaining results.
while not output_batch_queue.empty():
Copy link
Contributor

Choose a reason for hiding this comment

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

just update the above condition to while not future.done() or not output_batch_queue.empty()?

Signed-off-by: Scott Lee <[email protected]>
@scottjlee scottjlee added the go add ONLY when ready to merge, run all tests label Sep 18, 2024
@scottjlee scottjlee merged commit ceceb68 into ray-project:master Sep 18, 2024
5 of 6 checks passed
ujjawal-khare pushed a commit to ujjawal-khare-27/ray that referenced this pull request Oct 15, 2024
…47696)

## Why are these changes needed?

When using an async actor with `map_batches()`, there is currently an
unhandled edge case, where if tasks are scheduled very closely with one
another, and all remaining futures complete at the same time, some
remaining items in the internal queue to yield results from the futures
will not be yielded. This PR ensures that we fully drain the internal
queue to get all expected results.

Concretely, this issue came up while using async actors to yield results
from vLLM async engine.

## Related issue number

## Checks

- [x] I've signed off every commit(by using the -s flag, i.e., `git
commit -s`) in this PR.
- [x] I've run `scripts/format.sh` to lint the changes in this PR.
- [ ] I've included any doc changes needed for
https://docs.ray.io/en/master/.
- [ ] I've added any new APIs to the API Reference. For example, if I
added a
method in Tune, I've added it in `doc/source/tune/api/` under the
           corresponding `.rst` file.
- [x] I've made sure the tests are passing. Note that there might be a
few flaky tests, see the recent failures at https://flakey-tests.ray.io/
- Testing Strategy
   - [x] Unit tests
   - [ ] Release tests
   - [ ] This PR is not tested :(

---------

Signed-off-by: Scott Lee <[email protected]>
Signed-off-by: ujjawal-khare <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
go add ONLY when ready to merge, run all tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants