[Feature] Added the /v1/abort_requests endpoint#6992
Open
qwes5s5 wants to merge 2 commits intoPaddlePaddle:developfrom
Open
[Feature] Added the /v1/abort_requests endpoint#6992qwes5s5 wants to merge 2 commits intoPaddlePaddle:developfrom
qwes5s5 wants to merge 2 commits intoPaddlePaddle:developfrom
Conversation
|
Thanks for your contribution! |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #6992 +/- ##
==========================================
Coverage ? 73.49%
==========================================
Files ? 402
Lines ? 56569
Branches ? 8935
==========================================
Hits ? 41573
Misses ? 12060
Partials ? 2936
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
mitu626
reviewed
Mar 25, 2026
mitu626
approved these changes
Mar 25, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
该 PR 在 FastDeploy 的 OpenAI 兼容服务链路中新增主动中断推理请求的能力,通过新增 /v1/abort_requests 控制接口让客户端可显式终止正在运行/排队的请求,而不再仅依赖客户端断连触发。
Changes:
- 在
api_server与router新增/v1/abort_requests路由并向 engine 下发 control method。 - 在 engine 增加
abort_requests控制方法,触发 scheduler/resource_manager 中止并回填部分结果。 - 在 chat/completion 的响应处理中尝试将被中止请求的
finish_reason标记为abort。
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| fastdeploy/router/router.py | 新增 router 侧 /v1/abort_requests,转发到各实例并聚合结果 |
| fastdeploy/entrypoints/openai/api_server.py | 新增 api_server 侧 /v1/abort_requests,封装为 ControlRequest 下发到 engine |
| fastdeploy/engine/common_engine.py | 新增 engine 控制方法 _control_abort_requests 与等待清理逻辑 |
| fastdeploy/engine/sched/resource_manager_v1.py | abort 回收后更新 metrics;新增 aborting 集合查询方法 |
| fastdeploy/entrypoints/openai/serving_chat.py | 检测 “Aborted” 错误并设置 finish_reason |
| fastdeploy/entrypoints/openai/serving_completion.py | 检测 “Aborted” 错误并设置 finish_reason |
Comments suppressed due to low confidence (1)
fastdeploy/entrypoints/openai/serving_chat.py:817
- 这里把 finish_reason 设为 "abort",但 fastdeploy/entrypoints/openai/protocol.py 中 ChatCompletionResponseChoice.finish_reason 的 Literal 目前不包含 "abort"。该值会在构造 ChatCompletionResponseChoice 时触发 Pydantic 校验错误,导致请求失败。建议同步扩展 protocol.py 的 finish_reason 取值范围,或改用现有合法 finish_reason 并通过 error_msg/自定义字段区分 abort。
finish_reason = "stop"
if previous_num_tokens != max_tokens:
finish_reason = "stop"
if output.get("tool_calls"):
finish_reason = "tool_calls"
else:
finish_reason = "length"
if data.get("error_msg", None) is not None and "Recover" in data["error_msg"]:
finish_reason = "recover_stop"
if data.get("error_msg", None) is not None and "Aborted" in data["error_msg"]:
finish_reason = "abort"
return ChatCompletionResponseChoice(
index=idx,
message=message,
logprobs=logprobs_full_res,
draft_logprobs=draft_logprobs_full_res,
prompt_logprobs=prompt_logprobs_full_res,
finish_reason=finish_reason,
speculate_metrics=speculate_metrics,
Collaborator
Author
|
/re-run ci_xpu |
Jiang-Jia-Jun
previously approved these changes
Mar 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Currently, the logic for interrupting requests and stopping inference can only be triggered by the client disconnecting. Since there is no interface for active triggering, this new endpoint is required to encapsulate and expose the existing internal capabilities.
Modifications
The /v1/abort_requests endpoint has been added to both the api_server and the router.
Usage or Command
The /v1/abort_requests endpoint accepts two parameters:
abort_allandreq_ids. At least one of these must be provided.Abort all current requests:
Abort specific requests:
Output Example:
Accuracy Tests
Checklist
[FDConfig],[APIServer],[Engine],[Scheduler],[PD Disaggregation],[Executor],[Graph Optimization],[Speculative Decoding],[RL],[Models],[Quantization],[Loader],[OP],[KVCache],[DataProcessor],[BugFix],[Docs],[CI],[Optimization],[Feature],[Benchmark],[Others],[XPU],[HPU],[GCU],[DCU],[Iluvatar],[Metax]]pre-commitbefore commit.releasebranch, make sure the PR has been submitted to thedevelopbranch, then cherry-pick it to thereleasebranch with the[Cherry-Pick]PR tag.