| 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 | } |