main
proto 199 lines 6.45 KB
Raw
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4 syntax = "proto3";
5 package vllm;
6
7 service Control {
8 // Server and model discovery.
9 rpc GetServerInfo (GetServerInfoRequest) returns (ServerInfo) {}
10 rpc GetModelInfo (GetModelInfoRequest) returns (ModelInfo) {}
11
12 // Request managed-engine shutdown using the configured shutdown timeout.
13 // Returns FAILED_PRECONDITION when this server does not manage the engine process.
14 rpc Shutdown (ShutdownRequest) returns (ShutdownResponse) {}
15
16 // Request lifecycle.
17 rpc Abort (AbortRequest) returns (AbortResponse) {}
18
19 // LoRA lifecycle.
20 rpc LoadLora (LoadLoraRequest) returns (LoadLoraResponse) {}
21 rpc UnloadLora (UnloadLoraRequest) returns (UnloadLoraResponse) {}
22 rpc ListLoras (ListLorasRequest) returns (ListLorasResponse) {}
23
24 // KV event discovery.
25 rpc GetKvEventSources (GetKvEventSourcesRequest) returns (GetKvEventSourcesResponse) {}
26
27 // Reinforcement-learning lifecycle and weight updates.
28 rpc PauseGeneration (PauseGenerationRequest) returns (PauseGenerationResponse) {}
29 rpc ResumeGeneration (ResumeGenerationRequest) returns (ResumeGenerationResponse) {}
30 rpc IsPaused (IsPausedRequest) returns (IsPausedResponse) {}
31 rpc Sleep (SleepRequest) returns (SleepResponse) {}
32 rpc WakeUp (WakeUpRequest) returns (WakeUpResponse) {}
33 rpc IsSleeping (IsSleepingRequest) returns (IsSleepingResponse) {}
34 rpc InitWeightTransferEngine (InitWeightTransferEngineRequest) returns (InitWeightTransferEngineResponse) {}
35 rpc StartWeightUpdate (StartWeightUpdateRequest) returns (StartWeightUpdateResponse) {}
36 rpc StartDraftWeightUpdate (StartDraftWeightUpdateRequest) returns (StartDraftWeightUpdateResponse) {}
37 rpc UpdateWeights (UpdateWeightsRequest) returns (UpdateWeightsResponse) {}
38 rpc FinishWeightUpdate (FinishWeightUpdateRequest) returns (FinishWeightUpdateResponse) {}
39 rpc UpdateWeightVersion (UpdateWeightVersionRequest) returns (UpdateWeightVersionResponse) {}
40 rpc GetWeightVersion (GetWeightVersionRequest) returns (GetWeightVersionResponse) {}
41 }
42
43 message GetServerInfoRequest {}
44
45 message ServerInfo {
46 string engine_version = 1;
47 string api_version = 2;
48 string instance_id = 3;
49 ParallelismInfo parallelism = 4;
50 uint32 max_model_len = 5;
51 uint32 kv_block_size = 6;
52 uint64 total_kv_blocks = 7;
53 uint64 max_running_requests = 8;
54 uint64 max_batched_tokens = 9;
55 uint32 max_loras = 10;
56 RlCapabilities rl_capabilities = 11;
57 // Full-attention block size in tokens after initialization; absent if unavailable.
58 optional uint64 effective_attention_block_size = 14;
59 }
60
61 message RlCapabilities {
62 bool weight_transfer_enabled = 1;
63 string weight_transfer_backend = 2;
64 bool sleep_mode_enabled = 3;
65 bool draft_weight_updates_enabled = 4;
66 }
67
68 message ParallelismInfo {
69 uint32 tensor_parallel_size = 1;
70 uint32 pipeline_parallel_size = 2;
71 uint32 data_parallel_size = 3;
72 uint32 data_parallel_rank = 4;
73 uint32 decode_context_parallel_size = 5;
74 uint64 world_size = 6;
75 uint32 data_parallel_size_local = 7;
76 }
77
78 message GetModelInfoRequest {}
79
80 message ModelInfo {
81 string model_id = 1;
82 string served_model_name = 2;
83 repeated string served_model_aliases = 3;
84
85 bool supports_text_input = 20;
86 bool supports_token_ids_input = 21;
87 bool supports_lora = 22;
88 bool supports_multimodal = 23;
89 string reasoning_parser = 24;
90 string tool_call_parser = 25;
91 }
92
93 message ShutdownRequest {}
94 // Acknowledges acceptance, not completion; shutdown may close the connection first.
95 message ShutdownResponse {}
96
97 message AbortRequest {
98 repeated string request_ids = 1;
99 }
100
101 message AbortResponse {}
102
103 // ======================================================================================
104 // LoRA lifecycle
105 // ======================================================================================
106
107 message LoraAdapter {
108 int64 lora_id = 1;
109 string lora_name = 2;
110 string source_path = 3;
111 }
112
113 message LoadLoraRequest {
114 string lora_name = 1;
115 string source_path = 2;
116 }
117 message LoadLoraResponse { LoraAdapter adapter = 1; }
118 message UnloadLoraRequest { string lora_name = 1; }
119 message UnloadLoraResponse { LoraAdapter adapter = 1; }
120 message ListLorasRequest {}
121 message ListLorasResponse { repeated LoraAdapter adapters = 1; }
122
123 // ======================================================================================
124 // Reinforcement-learning control
125 // ======================================================================================
126
127 enum PauseMode {
128 PAUSE_MODE_UNSPECIFIED = 0;
129 PAUSE_MODE_ABORT = 1;
130 PAUSE_MODE_WAIT = 2;
131 PAUSE_MODE_KEEP = 3;
132 }
133
134 message PauseGenerationRequest {
135 PauseMode mode = 1;
136 optional bool clear_cache = 2;
137 }
138 message PauseGenerationResponse {}
139
140 message ResumeGenerationRequest {}
141 message ResumeGenerationResponse {}
142
143 message IsPausedRequest {}
144 message IsPausedResponse { bool paused = 1; }
145
146 message SleepRequest {
147 optional uint32 level = 1;
148 PauseMode mode = 2;
149 }
150 message SleepResponse {}
151
152 message WakeUpRequest { repeated string tags = 1; }
153 message WakeUpResponse {}
154
155 message IsSleepingRequest {}
156 message IsSleepingResponse { bool sleeping = 1; }
157
158 // The payloads are backend-specific JSON objects. Tensor data remains on the
159 // configured NCCL, IPC, or sparse-NCCL transport rather than crossing gRPC.
160 message InitWeightTransferEngineRequest { bytes init_info_json = 1; }
161 message InitWeightTransferEngineResponse {}
162
163 message StartWeightUpdateRequest {}
164 message StartWeightUpdateResponse {}
165
166 message StartDraftWeightUpdateRequest {}
167 message StartDraftWeightUpdateResponse {}
168
169 message UpdateWeightsRequest { bytes update_info_json = 1; }
170 message UpdateWeightsResponse {}
171
172 message FinishWeightUpdateRequest { optional string weight_version = 1; }
173 message FinishWeightUpdateResponse {}
174
175 message UpdateWeightVersionRequest { string weight_version = 1; }
176 message UpdateWeightVersionResponse {}
177
178 message GetWeightVersionRequest {}
179 message GetWeightVersionResponse { string weight_version = 1; }
180
181 // ======================================================================================
182 // KV discovery
183 // ======================================================================================
184
185 message GetKvEventSourcesRequest {}
186 message GetKvEventSourcesResponse { repeated KvEventSource sources = 1; }
187
188 message KvEventSource {
189 string transport = 1;
190 string endpoint = 2;
191 string topic = 3;
192 string replay_endpoint = 4;
193 optional uint32 data_parallel_rank = 5;
194 string encoding = 6;
195 uint32 schema_version = 7;
196 uint32 buffer_steps = 8;
197 uint32 hwm = 9;
198 uint32 max_queue_size = 10;
199 }