Skip to content

[Feature] Added the /v1/abort_requests endpoint#6992

Open
qwes5s5 wants to merge 1 commit intoPaddlePaddle:developfrom
qwes5s5:abort_requests
Open

[Feature] Added the /v1/abort_requests endpoint#6992
qwes5s5 wants to merge 1 commit intoPaddlePaddle:developfrom
qwes5s5:abort_requests

Conversation

@qwes5s5
Copy link
Collaborator

@qwes5s5 qwes5s5 commented Mar 24, 2026

Motivation

💡 If this PR is a Cherry Pick, the PR title needs to follow the format by adding the [Cherry-Pick] label at the very beginning and appending the original PR ID at the end. For example, [Cherry-Pick][CI] Add check trigger and logic(#5191)

💡 如若此PR是Cherry Pick,PR标题需遵循格式,在最开始加上[Cherry-Pick]标签,以及最后面加上原PR ID,例如[Cherry-Pick][CI] Add check trigger and logic(#5191)

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: stop_all and req_ids. At least one of these must be provided.

Abort all current requests:

curl -X POST http://0.0.0.0:8180/v1/abort_requests \
  -H "Content-Type: application/json" \
  -d '{"stop_all": true}'

Abort specific requests:

curl -X POST http://0.0.0.0:8180/v1/abort_requests \
  -H "Content-Type: application/json" \
  -d '{"req_ids": ["chatcmpl-abc123", "chatcmpl-def456"]}'

Output Example:

{
    "request_id": "control-...",
    "status": "success",
    "error_message": null,
    "result": {
        "aborted": [
            {"request_id": "chatcmpl-abc123_0", "output_token_count": 15}
        ],
        "not_found": ["chatcmpl-notexist"]
    }
}

Accuracy Tests

Checklist

  • Add at least a tag in the PR title.
    • Tag list: [[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]]
    • You can add new tags based on the PR content, but the semantics must be clear.
  • Format your code, run pre-commit before commit.
  • Add unit tests. Please write the reason in this PR if no unit tests.
  • Provide accuracy results.
  • If the current PR is submitting to the release branch, make sure the PR has been submitted to the develop branch, then cherry-pick it to the release branch with the [Cherry-Pick] PR tag.

@paddle-bot
Copy link

paddle-bot bot commented Mar 24, 2026

Thanks for your contribution!

@codecov-commenter
Copy link

Codecov Report

❌ Patch coverage is 24.34783% with 87 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (develop@0754368). Learn more about missing BASE report.

Files with missing lines Patch % Lines
fastdeploy/engine/common_engine.py 21.12% 53 Missing and 3 partials ⚠️
fastdeploy/router/router.py 14.81% 23 Missing ⚠️
fastdeploy/entrypoints/openai/api_server.py 20.00% 8 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             develop    #6992   +/-   ##
==========================================
  Coverage           ?   73.44%           
==========================================
  Files              ?      399           
  Lines              ?    56164           
  Branches           ?     8877           
==========================================
  Hits               ?    41252           
  Misses             ?    11980           
  Partials           ?     2932           
Flag Coverage Δ
GPU 73.44% <24.34%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@qwes5s5 qwes5s5 requested a review from Jiang-Jia-Jun March 24, 2026 12:50
if not envs.ENABLE_V1_KVCACHE_SCHEDULER:
raise Exception("abort_requests only supported in ENABLE_V1_KVCACHE_SCHEDULER")
args = control_req.get_args()
stop_all = args.get("stop_all", False)
Copy link
Contributor

Choose a reason for hiding this comment

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

abort_all 还是 stop_all

outputs=CompletionOutput(
index=0,
send_idx=len(partial_token_ids),
token_ids=partial_token_ids[-1:] if partial_token_ids else [self.data_processor.eos_token_ids[0]],
Copy link
Contributor

Choose a reason for hiding this comment

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

apiserver层是不是已经积攒了当前推理产出的token

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.

3 participants