[env] fix: Move uvloop==0.21.0 dependency to requirement files for avoiding task errors
What does this PR do?
The installation of an incompatible high version of uvloop is causing coroutine and asynchronous task failures. To resolve this problem, uvloop==0.21.0 should move to requirements-npu.txt and requirements.txt. Reference related issue: https://github.com/volcengine/verl/issues/3806.
Checklist Before Starting
- [x] Search for similar PRs. Paste at least one query link here: ...
- [x] Format the PR title as
[{modules}] {type}: {description}(This will be checked by the CI)-
{modules}includefsdp,megatron,sglang,vllm,rollout,trainer,ci,training_utils,recipe,hardware,deployment,ray,worker,single_controller,misc,perf,model,algo,env,tool,ckpt,doc,data - If this PR involves multiple modules, separate them with
,like[megatron, fsdp, doc] -
{type}is infeat,fix,refactor,chore,test - If this PR breaks any API (CLI arguments, config, function signature, etc.), add
[BREAKING]to the beginning of the title. - Example:
[BREAKING][fsdp, megatron] feat: dynamic batching
-
Test
Not related.
API and Usage Example
Not related.
Design & Code Changes
Demonstrate the high-level design if this PR is complex, and list the specific changes.
Checklist Before Submitting
Not related.
[!IMPORTANT] Please check all the following items before requesting a review, otherwise the reviewer might deprioritize this PR for review.
- [x] Read the Contribute Guide.
- [x] Apply pre-commit checks:
pre-commit install && pre-commit run --all-files --show-diff-on-failure --color=always - [x] Add / Update the documentation.
- [x] Add unit or end-to-end test(s) to the CI workflow to cover all the code. If not feasible, explain why: ...
- [ ] Once your PR is ready for CI, send a message in the
ci-requestchannel in theverlSlack workspace. (If not accessible, please try the Feishu group (飞书群).)
There should be testcases in the CI. Since there were no strict version constraints before, why can those cases pass the test? Can u figure it out? @duesdues
There should be testcases in the CI. Since there were no strict version constraints before, why can those cases pass the test? Can u figure it out? @duesdues
The earliest issue discovered in the community was found on October 18 (ref to https://github.com/volcengine/verl/issues/3806). When checking the uvloop on the PyPI source, it was noticed that the problematic version 0.22.1 was released on October 17.
ref to https://pypi.org/project/uvloop/#history
Perhaps the community's CI should reinstall everything according to requirement.txt each time, so that issues triggered by updating other third-party packages can be detected.
@tardis-key @duesdues @wuxibin89 @FightingZhen
I have checked that latest sglang ci image have uvloop==0.22.1
docker run --rm -it --entrypoint /bin/bash verlai/verl:vllm011.dev77
pip list | grep uvloop
uvloop 0.21.0
docker run --rm -it verlai/verl:sgl055.dev2 -- bash bash
pip list | grep uvloop
uvloop 0.22.1
verl' requirements are set in setup.py: https://github.com/volcengine/verl/blob/main/setup.py#L26-L45, so we should pin uvloop in setup.py, requirements.txt is not used anymore.
I have checked that latest sglang ci image have
uvloop==0.22.1docker run --rm -it --entrypoint /bin/bash verlai/verl:vllm011.dev77 pip list | grep uvloop uvloop 0.21.0docker run --rm -it verlai/verl:sgl055.dev2 -- bash bash pip list | grep uvloop uvloop 0.22.1
issue like https://github.com/volcengine/verl/issues/3822 https://github.com/volcengine/verl/issues/3806 using vllm as rollout backen, no issue associate with sglang found for now. Maybe there is diff between sglang and vllm to figure out
verl' requirements are set in
setup.py: https://github.com/volcengine/verl/blob/main/setup.py#L26-L45, so we should pin uvloop in setup.py,requirements.txtis not used anymore.
Okay, I have moved the uvloop to setup.py.