vllm-cpu 0.12.0__cp313-cp313-manylinux_2_17_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1600) hide show
  1. vllm/_C.abi3.so +0 -0
  2. vllm/__init__.py +107 -0
  3. vllm/_aiter_ops.py +1018 -0
  4. vllm/_bc_linter.py +54 -0
  5. vllm/_custom_ops.py +2925 -0
  6. vllm/_ipex_ops.py +457 -0
  7. vllm/_version.py +34 -0
  8. vllm/assets/__init__.py +0 -0
  9. vllm/assets/audio.py +43 -0
  10. vllm/assets/base.py +40 -0
  11. vllm/assets/image.py +59 -0
  12. vllm/assets/video.py +149 -0
  13. vllm/attention/__init__.py +0 -0
  14. vllm/attention/backends/__init__.py +0 -0
  15. vllm/attention/backends/abstract.py +434 -0
  16. vllm/attention/backends/registry.py +286 -0
  17. vllm/attention/backends/utils.py +33 -0
  18. vllm/attention/layer.py +975 -0
  19. vllm/attention/layers/__init__.py +0 -0
  20. vllm/attention/layers/chunked_local_attention.py +120 -0
  21. vllm/attention/layers/cross_attention.py +178 -0
  22. vllm/attention/layers/encoder_only_attention.py +103 -0
  23. vllm/attention/ops/__init__.py +0 -0
  24. vllm/attention/ops/chunked_prefill_paged_decode.py +401 -0
  25. vllm/attention/ops/common.py +469 -0
  26. vllm/attention/ops/flashmla.py +251 -0
  27. vllm/attention/ops/merge_attn_states.py +47 -0
  28. vllm/attention/ops/paged_attn.py +51 -0
  29. vllm/attention/ops/pallas_kv_cache_update.py +130 -0
  30. vllm/attention/ops/prefix_prefill.py +814 -0
  31. vllm/attention/ops/rocm_aiter_mla_sparse.py +210 -0
  32. vllm/attention/ops/triton_decode_attention.py +712 -0
  33. vllm/attention/ops/triton_merge_attn_states.py +116 -0
  34. vllm/attention/ops/triton_reshape_and_cache_flash.py +184 -0
  35. vllm/attention/ops/triton_unified_attention.py +941 -0
  36. vllm/attention/ops/vit_attn_wrappers.py +136 -0
  37. vllm/attention/selector.py +268 -0
  38. vllm/attention/utils/__init__.py +0 -0
  39. vllm/attention/utils/fa_utils.py +117 -0
  40. vllm/attention/utils/kv_sharing_utils.py +33 -0
  41. vllm/attention/utils/kv_transfer_utils.py +60 -0
  42. vllm/beam_search.py +88 -0
  43. vllm/benchmarks/__init__.py +0 -0
  44. vllm/benchmarks/datasets.py +3222 -0
  45. vllm/benchmarks/latency.py +172 -0
  46. vllm/benchmarks/lib/__init__.py +3 -0
  47. vllm/benchmarks/lib/endpoint_request_func.py +777 -0
  48. vllm/benchmarks/lib/ready_checker.py +72 -0
  49. vllm/benchmarks/lib/utils.py +79 -0
  50. vllm/benchmarks/serve.py +1531 -0
  51. vllm/benchmarks/sweep/__init__.py +0 -0
  52. vllm/benchmarks/sweep/cli.py +41 -0
  53. vllm/benchmarks/sweep/param_sweep.py +91 -0
  54. vllm/benchmarks/sweep/plot.py +580 -0
  55. vllm/benchmarks/sweep/plot_pareto.py +393 -0
  56. vllm/benchmarks/sweep/serve.py +448 -0
  57. vllm/benchmarks/sweep/serve_sla.py +492 -0
  58. vllm/benchmarks/sweep/server.py +114 -0
  59. vllm/benchmarks/sweep/sla_sweep.py +132 -0
  60. vllm/benchmarks/sweep/utils.py +4 -0
  61. vllm/benchmarks/throughput.py +799 -0
  62. vllm/collect_env.py +857 -0
  63. vllm/compilation/__init__.py +0 -0
  64. vllm/compilation/activation_quant_fusion.py +209 -0
  65. vllm/compilation/backends.py +827 -0
  66. vllm/compilation/base_static_graph.py +57 -0
  67. vllm/compilation/caching.py +180 -0
  68. vllm/compilation/collective_fusion.py +1234 -0
  69. vllm/compilation/compiler_interface.py +639 -0
  70. vllm/compilation/counter.py +48 -0
  71. vllm/compilation/cuda_graph.py +208 -0
  72. vllm/compilation/decorators.py +614 -0
  73. vllm/compilation/fix_functionalization.py +253 -0
  74. vllm/compilation/fusion.py +374 -0
  75. vllm/compilation/fusion_attn.py +359 -0
  76. vllm/compilation/fx_utils.py +91 -0
  77. vllm/compilation/inductor_pass.py +133 -0
  78. vllm/compilation/matcher_utils.py +315 -0
  79. vllm/compilation/monitor.py +62 -0
  80. vllm/compilation/noop_elimination.py +134 -0
  81. vllm/compilation/partition_rules.py +72 -0
  82. vllm/compilation/pass_manager.py +136 -0
  83. vllm/compilation/piecewise_backend.py +121 -0
  84. vllm/compilation/post_cleanup.py +21 -0
  85. vllm/compilation/qk_norm_rope_fusion.py +238 -0
  86. vllm/compilation/sequence_parallelism.py +363 -0
  87. vllm/compilation/torch25_custom_graph_pass.py +44 -0
  88. vllm/compilation/vllm_inductor_pass.py +173 -0
  89. vllm/compilation/wrapper.py +260 -0
  90. vllm/config/__init__.py +102 -0
  91. vllm/config/cache.py +220 -0
  92. vllm/config/compilation.py +1154 -0
  93. vllm/config/device.py +75 -0
  94. vllm/config/ec_transfer.py +110 -0
  95. vllm/config/kv_events.py +56 -0
  96. vllm/config/kv_transfer.py +114 -0
  97. vllm/config/load.py +124 -0
  98. vllm/config/lora.py +96 -0
  99. vllm/config/model.py +2274 -0
  100. vllm/config/multimodal.py +247 -0
  101. vllm/config/observability.py +131 -0
  102. vllm/config/parallel.py +653 -0
  103. vllm/config/pooler.py +124 -0
  104. vllm/config/scheduler.py +297 -0
  105. vllm/config/speculative.py +643 -0
  106. vllm/config/speech_to_text.py +38 -0
  107. vllm/config/structured_outputs.py +94 -0
  108. vllm/config/utils.py +324 -0
  109. vllm/config/vllm.py +1353 -0
  110. vllm/connections.py +189 -0
  111. vllm/device_allocator/__init__.py +0 -0
  112. vllm/device_allocator/cumem.py +327 -0
  113. vllm/distributed/__init__.py +6 -0
  114. vllm/distributed/communication_op.py +43 -0
  115. vllm/distributed/device_communicators/__init__.py +0 -0
  116. vllm/distributed/device_communicators/all2all.py +490 -0
  117. vllm/distributed/device_communicators/all_reduce_utils.py +344 -0
  118. vllm/distributed/device_communicators/base_device_communicator.py +297 -0
  119. vllm/distributed/device_communicators/cpu_communicator.py +209 -0
  120. vllm/distributed/device_communicators/cuda_communicator.py +340 -0
  121. vllm/distributed/device_communicators/cuda_wrapper.py +216 -0
  122. vllm/distributed/device_communicators/custom_all_reduce.py +326 -0
  123. vllm/distributed/device_communicators/mnnvl_compat.py +27 -0
  124. vllm/distributed/device_communicators/pynccl.py +386 -0
  125. vllm/distributed/device_communicators/pynccl_allocator.py +191 -0
  126. vllm/distributed/device_communicators/pynccl_wrapper.py +564 -0
  127. vllm/distributed/device_communicators/quick_all_reduce.py +290 -0
  128. vllm/distributed/device_communicators/ray_communicator.py +259 -0
  129. vllm/distributed/device_communicators/shm_broadcast.py +733 -0
  130. vllm/distributed/device_communicators/shm_object_storage.py +697 -0
  131. vllm/distributed/device_communicators/symm_mem.py +156 -0
  132. vllm/distributed/device_communicators/tpu_communicator.py +99 -0
  133. vllm/distributed/device_communicators/xpu_communicator.py +95 -0
  134. vllm/distributed/ec_transfer/__init__.py +14 -0
  135. vllm/distributed/ec_transfer/ec_connector/__init__.py +0 -0
  136. vllm/distributed/ec_transfer/ec_connector/base.py +247 -0
  137. vllm/distributed/ec_transfer/ec_connector/factory.py +85 -0
  138. vllm/distributed/ec_transfer/ec_connector/shared_storage_connector.py +201 -0
  139. vllm/distributed/ec_transfer/ec_transfer_state.py +42 -0
  140. vllm/distributed/eplb/__init__.py +8 -0
  141. vllm/distributed/eplb/async_worker.py +115 -0
  142. vllm/distributed/eplb/eplb_state.py +1154 -0
  143. vllm/distributed/eplb/rebalance_algo.py +260 -0
  144. vllm/distributed/eplb/rebalance_execute.py +532 -0
  145. vllm/distributed/kv_events.py +371 -0
  146. vllm/distributed/kv_transfer/README.md +29 -0
  147. vllm/distributed/kv_transfer/__init__.py +20 -0
  148. vllm/distributed/kv_transfer/disagg_prefill_workflow.jpg +0 -0
  149. vllm/distributed/kv_transfer/kv_connector/__init__.py +0 -0
  150. vllm/distributed/kv_transfer/kv_connector/base.py +10 -0
  151. vllm/distributed/kv_transfer/kv_connector/factory.py +192 -0
  152. vllm/distributed/kv_transfer/kv_connector/utils.py +268 -0
  153. vllm/distributed/kv_transfer/kv_connector/v1/__init__.py +19 -0
  154. vllm/distributed/kv_transfer/kv_connector/v1/base.py +575 -0
  155. vllm/distributed/kv_transfer/kv_connector/v1/decode_bench_connector.py +419 -0
  156. vllm/distributed/kv_transfer/kv_connector/v1/lmcache_connector.py +216 -0
  157. vllm/distributed/kv_transfer/kv_connector/v1/lmcache_integration/__init__.py +18 -0
  158. vllm/distributed/kv_transfer/kv_connector/v1/lmcache_integration/multi_process_adapter.py +378 -0
  159. vllm/distributed/kv_transfer/kv_connector/v1/lmcache_integration/utils.py +221 -0
  160. vllm/distributed/kv_transfer/kv_connector/v1/lmcache_integration/vllm_v1_adapter.py +1411 -0
  161. vllm/distributed/kv_transfer/kv_connector/v1/lmcache_mp_connector.py +895 -0
  162. vllm/distributed/kv_transfer/kv_connector/v1/metrics.py +189 -0
  163. vllm/distributed/kv_transfer/kv_connector/v1/multi_connector.py +454 -0
  164. vllm/distributed/kv_transfer/kv_connector/v1/nixl_connector.py +2480 -0
  165. vllm/distributed/kv_transfer/kv_connector/v1/offloading_connector.py +538 -0
  166. vllm/distributed/kv_transfer/kv_connector/v1/p2p/__init__.py +0 -0
  167. vllm/distributed/kv_transfer/kv_connector/v1/p2p/p2p_nccl_connector.py +531 -0
  168. vllm/distributed/kv_transfer/kv_connector/v1/p2p/p2p_nccl_engine.py +632 -0
  169. vllm/distributed/kv_transfer/kv_connector/v1/p2p/tensor_memory_pool.py +273 -0
  170. vllm/distributed/kv_transfer/kv_connector/v1/shared_storage_connector.py +450 -0
  171. vllm/distributed/kv_transfer/kv_lookup_buffer/__init__.py +0 -0
  172. vllm/distributed/kv_transfer/kv_lookup_buffer/base.py +179 -0
  173. vllm/distributed/kv_transfer/kv_lookup_buffer/mooncake_store.py +164 -0
  174. vllm/distributed/kv_transfer/kv_lookup_buffer/simple_buffer.py +242 -0
  175. vllm/distributed/kv_transfer/kv_pipe/__init__.py +0 -0
  176. vllm/distributed/kv_transfer/kv_pipe/base.py +66 -0
  177. vllm/distributed/kv_transfer/kv_pipe/mooncake_pipe.py +295 -0
  178. vllm/distributed/kv_transfer/kv_pipe/pynccl_pipe.py +285 -0
  179. vllm/distributed/kv_transfer/kv_transfer_state.py +78 -0
  180. vllm/distributed/parallel_state.py +1790 -0
  181. vllm/distributed/tpu_distributed_utils.py +188 -0
  182. vllm/distributed/utils.py +545 -0
  183. vllm/engine/__init__.py +0 -0
  184. vllm/engine/arg_utils.py +2106 -0
  185. vllm/engine/async_llm_engine.py +6 -0
  186. vllm/engine/llm_engine.py +6 -0
  187. vllm/engine/protocol.py +188 -0
  188. vllm/entrypoints/__init__.py +0 -0
  189. vllm/entrypoints/anthropic/__init__.py +0 -0
  190. vllm/entrypoints/anthropic/protocol.py +162 -0
  191. vllm/entrypoints/anthropic/serving_messages.py +460 -0
  192. vllm/entrypoints/api_server.py +184 -0
  193. vllm/entrypoints/chat_utils.py +1837 -0
  194. vllm/entrypoints/cli/__init__.py +13 -0
  195. vllm/entrypoints/cli/benchmark/__init__.py +0 -0
  196. vllm/entrypoints/cli/benchmark/base.py +25 -0
  197. vllm/entrypoints/cli/benchmark/latency.py +21 -0
  198. vllm/entrypoints/cli/benchmark/main.py +56 -0
  199. vllm/entrypoints/cli/benchmark/serve.py +21 -0
  200. vllm/entrypoints/cli/benchmark/sweep.py +21 -0
  201. vllm/entrypoints/cli/benchmark/throughput.py +21 -0
  202. vllm/entrypoints/cli/collect_env.py +38 -0
  203. vllm/entrypoints/cli/main.py +79 -0
  204. vllm/entrypoints/cli/openai.py +256 -0
  205. vllm/entrypoints/cli/run_batch.py +68 -0
  206. vllm/entrypoints/cli/serve.py +249 -0
  207. vllm/entrypoints/cli/types.py +29 -0
  208. vllm/entrypoints/constants.py +10 -0
  209. vllm/entrypoints/context.py +572 -0
  210. vllm/entrypoints/dynamic_lora.py +57 -0
  211. vllm/entrypoints/harmony_utils.py +535 -0
  212. vllm/entrypoints/launcher.py +175 -0
  213. vllm/entrypoints/llm.py +1762 -0
  214. vllm/entrypoints/logger.py +84 -0
  215. vllm/entrypoints/openai/__init__.py +0 -0
  216. vllm/entrypoints/openai/api_server.py +1891 -0
  217. vllm/entrypoints/openai/cli_args.py +302 -0
  218. vllm/entrypoints/openai/orca_metrics.py +120 -0
  219. vllm/entrypoints/openai/protocol.py +2465 -0
  220. vllm/entrypoints/openai/run_batch.py +631 -0
  221. vllm/entrypoints/openai/serving_chat.py +1782 -0
  222. vllm/entrypoints/openai/serving_completion.py +716 -0
  223. vllm/entrypoints/openai/serving_engine.py +1478 -0
  224. vllm/entrypoints/openai/serving_models.py +304 -0
  225. vllm/entrypoints/openai/serving_responses.py +2032 -0
  226. vllm/entrypoints/openai/serving_tokenization.py +203 -0
  227. vllm/entrypoints/openai/serving_tokens.py +281 -0
  228. vllm/entrypoints/openai/serving_transcription.py +168 -0
  229. vllm/entrypoints/openai/speech_to_text.py +559 -0
  230. vllm/entrypoints/openai/tool_parsers/__init__.py +142 -0
  231. vllm/entrypoints/openai/tool_parsers/abstract_tool_parser.py +273 -0
  232. vllm/entrypoints/openai/tool_parsers/deepseekv31_tool_parser.py +390 -0
  233. vllm/entrypoints/openai/tool_parsers/deepseekv3_tool_parser.py +390 -0
  234. vllm/entrypoints/openai/tool_parsers/ernie45_tool_parser.py +210 -0
  235. vllm/entrypoints/openai/tool_parsers/glm4_moe_tool_parser.py +200 -0
  236. vllm/entrypoints/openai/tool_parsers/granite_20b_fc_tool_parser.py +273 -0
  237. vllm/entrypoints/openai/tool_parsers/granite_tool_parser.py +253 -0
  238. vllm/entrypoints/openai/tool_parsers/hermes_tool_parser.py +494 -0
  239. vllm/entrypoints/openai/tool_parsers/hunyuan_a13b_tool_parser.py +420 -0
  240. vllm/entrypoints/openai/tool_parsers/internlm2_tool_parser.py +227 -0
  241. vllm/entrypoints/openai/tool_parsers/jamba_tool_parser.py +322 -0
  242. vllm/entrypoints/openai/tool_parsers/kimi_k2_tool_parser.py +590 -0
  243. vllm/entrypoints/openai/tool_parsers/llama4_pythonic_tool_parser.py +341 -0
  244. vllm/entrypoints/openai/tool_parsers/llama_tool_parser.py +324 -0
  245. vllm/entrypoints/openai/tool_parsers/longcat_tool_parser.py +37 -0
  246. vllm/entrypoints/openai/tool_parsers/minimax_m2_tool_parser.py +643 -0
  247. vllm/entrypoints/openai/tool_parsers/minimax_tool_parser.py +849 -0
  248. vllm/entrypoints/openai/tool_parsers/mistral_tool_parser.py +390 -0
  249. vllm/entrypoints/openai/tool_parsers/olmo3_tool_parser.py +366 -0
  250. vllm/entrypoints/openai/tool_parsers/openai_tool_parser.py +97 -0
  251. vllm/entrypoints/openai/tool_parsers/phi4mini_tool_parser.py +120 -0
  252. vllm/entrypoints/openai/tool_parsers/pythonic_tool_parser.py +332 -0
  253. vllm/entrypoints/openai/tool_parsers/qwen3coder_tool_parser.py +781 -0
  254. vllm/entrypoints/openai/tool_parsers/qwen3xml_tool_parser.py +1316 -0
  255. vllm/entrypoints/openai/tool_parsers/seed_oss_tool_parser.py +744 -0
  256. vllm/entrypoints/openai/tool_parsers/step3_tool_parser.py +303 -0
  257. vllm/entrypoints/openai/tool_parsers/utils.py +229 -0
  258. vllm/entrypoints/openai/tool_parsers/xlam_tool_parser.py +556 -0
  259. vllm/entrypoints/openai/utils.py +49 -0
  260. vllm/entrypoints/pooling/__init__.py +16 -0
  261. vllm/entrypoints/pooling/classify/__init__.py +0 -0
  262. vllm/entrypoints/pooling/classify/api_router.py +50 -0
  263. vllm/entrypoints/pooling/classify/protocol.py +181 -0
  264. vllm/entrypoints/pooling/classify/serving.py +237 -0
  265. vllm/entrypoints/pooling/embed/__init__.py +0 -0
  266. vllm/entrypoints/pooling/embed/api_router.py +67 -0
  267. vllm/entrypoints/pooling/embed/protocol.py +208 -0
  268. vllm/entrypoints/pooling/embed/serving.py +697 -0
  269. vllm/entrypoints/pooling/pooling/__init__.py +0 -0
  270. vllm/entrypoints/pooling/pooling/api_router.py +63 -0
  271. vllm/entrypoints/pooling/pooling/protocol.py +148 -0
  272. vllm/entrypoints/pooling/pooling/serving.py +348 -0
  273. vllm/entrypoints/pooling/score/__init__.py +0 -0
  274. vllm/entrypoints/pooling/score/api_router.py +149 -0
  275. vllm/entrypoints/pooling/score/protocol.py +145 -0
  276. vllm/entrypoints/pooling/score/serving.py +505 -0
  277. vllm/entrypoints/renderer.py +409 -0
  278. vllm/entrypoints/responses_utils.py +148 -0
  279. vllm/entrypoints/sagemaker/__init__.py +4 -0
  280. vllm/entrypoints/sagemaker/routes.py +118 -0
  281. vllm/entrypoints/score_utils.py +240 -0
  282. vllm/entrypoints/ssl.py +78 -0
  283. vllm/entrypoints/tool.py +143 -0
  284. vllm/entrypoints/tool_server.py +234 -0
  285. vllm/entrypoints/utils.py +319 -0
  286. vllm/env_override.py +378 -0
  287. vllm/envs.py +1710 -0
  288. vllm/forward_context.py +358 -0
  289. vllm/inputs/__init__.py +44 -0
  290. vllm/inputs/data.py +359 -0
  291. vllm/inputs/parse.py +137 -0
  292. vllm/inputs/preprocess.py +716 -0
  293. vllm/logger.py +298 -0
  294. vllm/logging_utils/__init__.py +13 -0
  295. vllm/logging_utils/dump_input.py +83 -0
  296. vllm/logging_utils/formatter.py +127 -0
  297. vllm/logging_utils/lazy.py +20 -0
  298. vllm/logging_utils/log_time.py +34 -0
  299. vllm/logits_process.py +121 -0
  300. vllm/logprobs.py +206 -0
  301. vllm/lora/__init__.py +0 -0
  302. vllm/lora/layers/__init__.py +42 -0
  303. vllm/lora/layers/base.py +66 -0
  304. vllm/lora/layers/base_linear.py +165 -0
  305. vllm/lora/layers/column_parallel_linear.py +577 -0
  306. vllm/lora/layers/fused_moe.py +747 -0
  307. vllm/lora/layers/logits_processor.py +203 -0
  308. vllm/lora/layers/replicated_linear.py +70 -0
  309. vllm/lora/layers/row_parallel_linear.py +176 -0
  310. vllm/lora/layers/utils.py +74 -0
  311. vllm/lora/layers/vocal_parallel_embedding.py +140 -0
  312. vllm/lora/lora_weights.py +227 -0
  313. vllm/lora/models.py +903 -0
  314. vllm/lora/ops/__init__.py +0 -0
  315. vllm/lora/ops/ipex_ops/__init__.py +6 -0
  316. vllm/lora/ops/ipex_ops/lora_ops.py +57 -0
  317. vllm/lora/ops/torch_ops/__init__.py +20 -0
  318. vllm/lora/ops/torch_ops/lora_ops.py +128 -0
  319. vllm/lora/ops/triton_ops/README_TUNING.md +60 -0
  320. vllm/lora/ops/triton_ops/__init__.py +21 -0
  321. vllm/lora/ops/triton_ops/fused_moe_lora_op.py +661 -0
  322. vllm/lora/ops/triton_ops/kernel_utils.py +340 -0
  323. vllm/lora/ops/triton_ops/lora_expand_op.py +310 -0
  324. vllm/lora/ops/triton_ops/lora_kernel_metadata.py +154 -0
  325. vllm/lora/ops/triton_ops/lora_shrink_op.py +287 -0
  326. vllm/lora/ops/triton_ops/utils.py +295 -0
  327. vllm/lora/ops/xla_ops/__init__.py +6 -0
  328. vllm/lora/ops/xla_ops/lora_ops.py +141 -0
  329. vllm/lora/peft_helper.py +128 -0
  330. vllm/lora/punica_wrapper/__init__.py +10 -0
  331. vllm/lora/punica_wrapper/punica_base.py +493 -0
  332. vllm/lora/punica_wrapper/punica_cpu.py +351 -0
  333. vllm/lora/punica_wrapper/punica_gpu.py +412 -0
  334. vllm/lora/punica_wrapper/punica_selector.py +21 -0
  335. vllm/lora/punica_wrapper/punica_tpu.py +358 -0
  336. vllm/lora/punica_wrapper/punica_xpu.py +276 -0
  337. vllm/lora/punica_wrapper/utils.py +150 -0
  338. vllm/lora/request.py +100 -0
  339. vllm/lora/resolver.py +88 -0
  340. vllm/lora/utils.py +306 -0
  341. vllm/lora/worker_manager.py +268 -0
  342. vllm/model_executor/__init__.py +11 -0
  343. vllm/model_executor/custom_op.py +194 -0
  344. vllm/model_executor/layers/__init__.py +0 -0
  345. vllm/model_executor/layers/activation.py +595 -0
  346. vllm/model_executor/layers/attention_layer_base.py +32 -0
  347. vllm/model_executor/layers/batch_invariant.py +1058 -0
  348. vllm/model_executor/layers/conv.py +256 -0
  349. vllm/model_executor/layers/fla/__init__.py +8 -0
  350. vllm/model_executor/layers/fla/ops/__init__.py +17 -0
  351. vllm/model_executor/layers/fla/ops/chunk.py +240 -0
  352. vllm/model_executor/layers/fla/ops/chunk_delta_h.py +344 -0
  353. vllm/model_executor/layers/fla/ops/chunk_o.py +183 -0
  354. vllm/model_executor/layers/fla/ops/chunk_scaled_dot_kkt.py +154 -0
  355. vllm/model_executor/layers/fla/ops/cumsum.py +280 -0
  356. vllm/model_executor/layers/fla/ops/fused_recurrent.py +390 -0
  357. vllm/model_executor/layers/fla/ops/index.py +41 -0
  358. vllm/model_executor/layers/fla/ops/kda.py +1351 -0
  359. vllm/model_executor/layers/fla/ops/l2norm.py +146 -0
  360. vllm/model_executor/layers/fla/ops/layernorm_guard.py +396 -0
  361. vllm/model_executor/layers/fla/ops/op.py +60 -0
  362. vllm/model_executor/layers/fla/ops/solve_tril.py +556 -0
  363. vllm/model_executor/layers/fla/ops/utils.py +194 -0
  364. vllm/model_executor/layers/fla/ops/wy_fast.py +158 -0
  365. vllm/model_executor/layers/fused_moe/__init__.py +110 -0
  366. vllm/model_executor/layers/fused_moe/all2all_utils.py +171 -0
  367. vllm/model_executor/layers/fused_moe/batched_deep_gemm_moe.py +406 -0
  368. vllm/model_executor/layers/fused_moe/batched_triton_or_deep_gemm_moe.py +180 -0
  369. vllm/model_executor/layers/fused_moe/config.py +938 -0
  370. vllm/model_executor/layers/fused_moe/configs/E=1,N=14336,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +146 -0
  371. vllm/model_executor/layers/fused_moe/configs/E=1,N=14336,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  372. vllm/model_executor/layers/fused_moe/configs/E=1,N=1792,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +218 -0
  373. vllm/model_executor/layers/fused_moe/configs/E=1,N=1792,device_name=NVIDIA_A100-SXM4-80GB.json +218 -0
  374. vllm/model_executor/layers/fused_moe/configs/E=1,N=1792,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  375. vllm/model_executor/layers/fused_moe/configs/E=1,N=3072,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +218 -0
  376. vllm/model_executor/layers/fused_moe/configs/E=1,N=3072,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  377. vllm/model_executor/layers/fused_moe/configs/E=1,N=3072,device_name=NVIDIA_H100_80GB_HBM3.json +218 -0
  378. vllm/model_executor/layers/fused_moe/configs/E=1,N=3072,device_name=NVIDIA_H200,dtype=int8_w8a16.json +146 -0
  379. vllm/model_executor/layers/fused_moe/configs/E=1,N=3584,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +218 -0
  380. vllm/model_executor/layers/fused_moe/configs/E=1,N=3584,device_name=NVIDIA_A100-SXM4-80GB.json +218 -0
  381. vllm/model_executor/layers/fused_moe/configs/E=1,N=3584,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  382. vllm/model_executor/layers/fused_moe/configs/E=1,N=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +218 -0
  383. vllm/model_executor/layers/fused_moe/configs/E=1,N=7168,device_name=NVIDIA_A100-SXM4-80GB.json +218 -0
  384. vllm/model_executor/layers/fused_moe/configs/E=1,N=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  385. vllm/model_executor/layers/fused_moe/configs/E=128,N=1024,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  386. vllm/model_executor/layers/fused_moe/configs/E=128,N=1024,device_name=AMD_Instinct_MI300X.json +200 -0
  387. vllm/model_executor/layers/fused_moe/configs/E=128,N=1024,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  388. vllm/model_executor/layers/fused_moe/configs/E=128,N=1024,device_name=NVIDIA_H100,dtype=fp8_w8a8.json +123 -0
  389. vllm/model_executor/layers/fused_moe/configs/E=128,N=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  390. vllm/model_executor/layers/fused_moe/configs/E=128,N=1024,device_name=NVIDIA_H200.json +146 -0
  391. vllm/model_executor/layers/fused_moe/configs/E=128,N=1856,device_name=NVIDIA_H100_80GB_HBM3.json +147 -0
  392. vllm/model_executor/layers/fused_moe/configs/E=128,N=1856,device_name=NVIDIA_L40S.json +147 -0
  393. vllm/model_executor/layers/fused_moe/configs/E=128,N=192,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  394. vllm/model_executor/layers/fused_moe/configs/E=128,N=192,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  395. vllm/model_executor/layers/fused_moe/configs/E=128,N=192,device_name=NVIDIA_H20-3e.json +146 -0
  396. vllm/model_executor/layers/fused_moe/configs/E=128,N=192,device_name=NVIDIA_H20.json +146 -0
  397. vllm/model_executor/layers/fused_moe/configs/E=128,N=192,device_name=NVIDIA_H200.json +146 -0
  398. vllm/model_executor/layers/fused_moe/configs/E=128,N=352,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +122 -0
  399. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  400. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  401. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_GB200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  402. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  403. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_H20-3e,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  404. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_H20-3e.json +146 -0
  405. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_H20.json +146 -0
  406. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  407. vllm/model_executor/layers/fused_moe/configs/E=128,N=384,device_name=NVIDIA_H200.json +146 -0
  408. vllm/model_executor/layers/fused_moe/configs/E=128,N=512,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  409. vllm/model_executor/layers/fused_moe/configs/E=128,N=512,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  410. vllm/model_executor/layers/fused_moe/configs/E=128,N=704,device_name=NVIDIA_B200,dtype=fp8_w8a8.json +146 -0
  411. vllm/model_executor/layers/fused_moe/configs/E=128,N=704,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +114 -0
  412. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  413. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=AMD_Instinct_MI308X.json +213 -0
  414. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  415. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=NVIDIA_GB200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  416. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  417. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=NVIDIA_H20-3e,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  418. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=NVIDIA_H20.json +146 -0
  419. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  420. vllm/model_executor/layers/fused_moe/configs/E=128,N=768,device_name=NVIDIA_H200.json +146 -0
  421. vllm/model_executor/layers/fused_moe/configs/E=128,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=bf16.json +82 -0
  422. vllm/model_executor/layers/fused_moe/configs/E=128,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +82 -0
  423. vllm/model_executor/layers/fused_moe/configs/E=128,N=928,device_name=NVIDIA_H100_80GB_HBM3.json +147 -0
  424. vllm/model_executor/layers/fused_moe/configs/E=128,N=928,device_name=NVIDIA_L40S.json +147 -0
  425. vllm/model_executor/layers/fused_moe/configs/E=128,N=96,device_name=NVIDIA_H20.json +146 -0
  426. vllm/model_executor/layers/fused_moe/configs/E=16,N=1024,device_name=AMD_Instinct_MI300X.json +200 -0
  427. vllm/model_executor/layers/fused_moe/configs/E=16,N=1024,device_name=NVIDIA_B200,dtype=fp8_w8a8.json +147 -0
  428. vllm/model_executor/layers/fused_moe/configs/E=16,N=1024,device_name=NVIDIA_B200.json +146 -0
  429. vllm/model_executor/layers/fused_moe/configs/E=16,N=1024,device_name=NVIDIA_H100.json +146 -0
  430. vllm/model_executor/layers/fused_moe/configs/E=16,N=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  431. vllm/model_executor/layers/fused_moe/configs/E=16,N=1024,device_name=NVIDIA_H200.json +146 -0
  432. vllm/model_executor/layers/fused_moe/configs/E=16,N=1344,device_name=NVIDIA_A100-SXM4-40GB.json +146 -0
  433. vllm/model_executor/layers/fused_moe/configs/E=16,N=1344,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  434. vllm/model_executor/layers/fused_moe/configs/E=16,N=1344,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  435. vllm/model_executor/layers/fused_moe/configs/E=16,N=14336,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +146 -0
  436. vllm/model_executor/layers/fused_moe/configs/E=16,N=14336,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  437. vllm/model_executor/layers/fused_moe/configs/E=16,N=14336,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  438. vllm/model_executor/layers/fused_moe/configs/E=16,N=1792,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +218 -0
  439. vllm/model_executor/layers/fused_moe/configs/E=16,N=1792,device_name=NVIDIA_A100-SXM4-80GB.json +218 -0
  440. vllm/model_executor/layers/fused_moe/configs/E=16,N=1792,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  441. vllm/model_executor/layers/fused_moe/configs/E=16,N=1792,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  442. vllm/model_executor/layers/fused_moe/configs/E=16,N=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  443. vllm/model_executor/layers/fused_moe/configs/E=16,N=2048,device_name=NVIDIA_H200.json +146 -0
  444. vllm/model_executor/layers/fused_moe/configs/E=16,N=2688,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  445. vllm/model_executor/layers/fused_moe/configs/E=16,N=2688,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  446. vllm/model_executor/layers/fused_moe/configs/E=16,N=3072,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +146 -0
  447. vllm/model_executor/layers/fused_moe/configs/E=16,N=3072,device_name=NVIDIA_H100_80GB_HBM3,dtype=float8.json +146 -0
  448. vllm/model_executor/layers/fused_moe/configs/E=16,N=3072,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  449. vllm/model_executor/layers/fused_moe/configs/E=16,N=3072,device_name=NVIDIA_H200,dtype=int8_w8a16.json +146 -0
  450. vllm/model_executor/layers/fused_moe/configs/E=16,N=3200,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +130 -0
  451. vllm/model_executor/layers/fused_moe/configs/E=16,N=3584,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +146 -0
  452. vllm/model_executor/layers/fused_moe/configs/E=16,N=3584,device_name=NVIDIA_A100-SXM4-80GB.json +218 -0
  453. vllm/model_executor/layers/fused_moe/configs/E=16,N=3584,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  454. vllm/model_executor/layers/fused_moe/configs/E=16,N=6400,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +130 -0
  455. vllm/model_executor/layers/fused_moe/configs/E=16,N=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a16.json +146 -0
  456. vllm/model_executor/layers/fused_moe/configs/E=16,N=7168,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  457. vllm/model_executor/layers/fused_moe/configs/E=16,N=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=float8.json +146 -0
  458. vllm/model_executor/layers/fused_moe/configs/E=16,N=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=int8_w8a16.json +146 -0
  459. vllm/model_executor/layers/fused_moe/configs/E=16,N=800,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +130 -0
  460. vllm/model_executor/layers/fused_moe/configs/E=160,N=192,device_name=AMD_Instinct_MI300X.json +201 -0
  461. vllm/model_executor/layers/fused_moe/configs/E=160,N=192,device_name=AMD_Instinct_MI350_OAM,dtype=fp8_w8a8.json +164 -0
  462. vllm/model_executor/layers/fused_moe/configs/E=160,N=192,device_name=NVIDIA_A800-SXM4-80GB.json +146 -0
  463. vllm/model_executor/layers/fused_moe/configs/E=160,N=192,device_name=NVIDIA_H20-3e.json +146 -0
  464. vllm/model_executor/layers/fused_moe/configs/E=160,N=192,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +147 -0
  465. vllm/model_executor/layers/fused_moe/configs/E=160,N=320,device_name=NVIDIA_H20-3e.json +146 -0
  466. vllm/model_executor/layers/fused_moe/configs/E=160,N=384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  467. vllm/model_executor/layers/fused_moe/configs/E=160,N=384,device_name=AMD_Instinct_MI350_OAM,dtype=fp8_w8a8.json +164 -0
  468. vllm/model_executor/layers/fused_moe/configs/E=160,N=384,device_name=AMD_Instinct_MI355_OAM,dtype=fp8_w8a8.json +164 -0
  469. vllm/model_executor/layers/fused_moe/configs/E=160,N=640,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  470. vllm/model_executor/layers/fused_moe/configs/E=160,N=640,device_name=NVIDIA_GB200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  471. vllm/model_executor/layers/fused_moe/configs/E=160,N=640,device_name=NVIDIA_H100,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  472. vllm/model_executor/layers/fused_moe/configs/E=20,N=1536,device_name=NVIDIA_RTX_PRO_6000_Blackwell_Server_Edition,dtype=fp8_w8a8.json +147 -0
  473. vllm/model_executor/layers/fused_moe/configs/E=20,N=2560,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  474. vllm/model_executor/layers/fused_moe/configs/E=20,N=2560,device_name=NVIDIA_GB200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  475. vllm/model_executor/layers/fused_moe/configs/E=20,N=2560,device_name=NVIDIA_H100,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  476. vllm/model_executor/layers/fused_moe/configs/E=20,N=2560,device_name=NVIDIA_H20-3e,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  477. vllm/model_executor/layers/fused_moe/configs/E=256,N=1024,device_name=AMD_Instinct_MI325X,block_shape=[128,128].json +200 -0
  478. vllm/model_executor/layers/fused_moe/configs/E=256,N=1024,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +200 -0
  479. vllm/model_executor/layers/fused_moe/configs/E=256,N=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  480. vllm/model_executor/layers/fused_moe/configs/E=256,N=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8.json +146 -0
  481. vllm/model_executor/layers/fused_moe/configs/E=256,N=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  482. vllm/model_executor/layers/fused_moe/configs/E=256,N=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8.json +146 -0
  483. vllm/model_executor/layers/fused_moe/configs/E=256,N=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  484. vllm/model_executor/layers/fused_moe/configs/E=256,N=128,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  485. vllm/model_executor/layers/fused_moe/configs/E=256,N=128,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  486. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  487. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +200 -0
  488. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +200 -0
  489. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  490. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  491. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  492. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=NVIDIA_H20-3e,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  493. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  494. vllm/model_executor/layers/fused_moe/configs/E=256,N=256,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  495. vllm/model_executor/layers/fused_moe/configs/E=256,N=384,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +147 -0
  496. vllm/model_executor/layers/fused_moe/configs/E=256,N=512,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +200 -0
  497. vllm/model_executor/layers/fused_moe/configs/E=256,N=512,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  498. vllm/model_executor/layers/fused_moe/configs/E=256,N=64,device_name=NVIDIA_A800-SXM4-80GB.json +146 -0
  499. vllm/model_executor/layers/fused_moe/configs/E=32,N=1408,device_name=NVIDIA_B200.json +147 -0
  500. vllm/model_executor/layers/fused_moe/configs/E=32,N=2048,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +147 -0
  501. vllm/model_executor/layers/fused_moe/configs/E=32,N=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +147 -0
  502. vllm/model_executor/layers/fused_moe/configs/E=384,N=128,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  503. vllm/model_executor/layers/fused_moe/configs/E=384,N=128,device_name=NVIDIA_GB200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  504. vllm/model_executor/layers/fused_moe/configs/E=384,N=128,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  505. vllm/model_executor/layers/fused_moe/configs/E=384,N=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  506. vllm/model_executor/layers/fused_moe/configs/E=384,N=256,device_name=NVIDIA_GB200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  507. vllm/model_executor/layers/fused_moe/configs/E=40,N=1536,device_name=NVIDIA_B200,dtype=fp8_w8a8.json +147 -0
  508. vllm/model_executor/layers/fused_moe/configs/E=40,N=2560,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  509. vllm/model_executor/layers/fused_moe/configs/E=40,N=2560,device_name=NVIDIA_GB200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  510. vllm/model_executor/layers/fused_moe/configs/E=40,N=2560,device_name=NVIDIA_H100,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  511. vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_A100-SXM4-80GB.json +147 -0
  512. vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_B200.json +146 -0
  513. vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_GB200,dtype=fp8_w8a8.json +147 -0
  514. vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  515. vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_H20-3e.json +146 -0
  516. vllm/model_executor/layers/fused_moe/configs/E=512,N=128,device_name=NVIDIA_H200.json +146 -0
  517. vllm/model_executor/layers/fused_moe/configs/E=512,N=256,device_name=NVIDIA_B200.json +146 -0
  518. vllm/model_executor/layers/fused_moe/configs/E=512,N=256,device_name=NVIDIA_GB200,dtype=fp8_w8a8.json +146 -0
  519. vllm/model_executor/layers/fused_moe/configs/E=512,N=256,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +147 -0
  520. vllm/model_executor/layers/fused_moe/configs/E=512,N=256,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  521. vllm/model_executor/layers/fused_moe/configs/E=512,N=256,device_name=NVIDIA_H20-3e.json +146 -0
  522. vllm/model_executor/layers/fused_moe/configs/E=512,N=256,device_name=NVIDIA_H200.json +146 -0
  523. vllm/model_executor/layers/fused_moe/configs/E=512,N=512,device_name=NVIDIA_B200.json +146 -0
  524. vllm/model_executor/layers/fused_moe/configs/E=512,N=512,device_name=NVIDIA_GB200,dtype=fp8_w8a8.json +146 -0
  525. vllm/model_executor/layers/fused_moe/configs/E=512,N=512,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  526. vllm/model_executor/layers/fused_moe/configs/E=512,N=512,device_name=NVIDIA_H20-3e.json +146 -0
  527. vllm/model_executor/layers/fused_moe/configs/E=512,N=512,device_name=NVIDIA_H200.json +146 -0
  528. vllm/model_executor/layers/fused_moe/configs/E=512,N=64,device_name=NVIDIA_A100-SXM4-80GB.json +147 -0
  529. vllm/model_executor/layers/fused_moe/configs/E=512,N=64,device_name=NVIDIA_B200.json +146 -0
  530. vllm/model_executor/layers/fused_moe/configs/E=512,N=64,device_name=NVIDIA_H20-3e.json +146 -0
  531. vllm/model_executor/layers/fused_moe/configs/E=512,N=64,device_name=NVIDIA_H200.json +146 -0
  532. vllm/model_executor/layers/fused_moe/configs/E=60,N=1408,device_name=AMD_Instinct_MI300X.json +200 -0
  533. vllm/model_executor/layers/fused_moe/configs/E=60,N=176,device_name=AMD_Instinct_MI300X.json +200 -0
  534. vllm/model_executor/layers/fused_moe/configs/E=60,N=352,device_name=AMD_Instinct_MI300X.json +200 -0
  535. vllm/model_executor/layers/fused_moe/configs/E=60,N=704,device_name=AMD_Instinct_MI300X.json +200 -0
  536. vllm/model_executor/layers/fused_moe/configs/E=62,N=128,device_name=AMD_Instinct_MI300X.json +200 -0
  537. vllm/model_executor/layers/fused_moe/configs/E=62,N=256,device_name=AMD_Instinct_MI300X.json +200 -0
  538. vllm/model_executor/layers/fused_moe/configs/E=62,N=256,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  539. vllm/model_executor/layers/fused_moe/configs/E=62,N=512,device_name=AMD_Instinct_MI300X.json +200 -0
  540. vllm/model_executor/layers/fused_moe/configs/E=62,N=512,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  541. vllm/model_executor/layers/fused_moe/configs/E=64,N=1280,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  542. vllm/model_executor/layers/fused_moe/configs/E=64,N=1280,device_name=NVIDIA_A800-SXM4-80GB.json +146 -0
  543. vllm/model_executor/layers/fused_moe/configs/E=64,N=1280,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  544. vllm/model_executor/layers/fused_moe/configs/E=64,N=1280,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  545. vllm/model_executor/layers/fused_moe/configs/E=64,N=1280,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  546. vllm/model_executor/layers/fused_moe/configs/E=64,N=1280,device_name=NVIDIA_H200.json +146 -0
  547. vllm/model_executor/layers/fused_moe/configs/E=64,N=1408,device_name=NVIDIA_B200.json +147 -0
  548. vllm/model_executor/layers/fused_moe/configs/E=64,N=1536,device_name=NVIDIA_H20,dtype=fp8_w8a8.json +146 -0
  549. vllm/model_executor/layers/fused_moe/configs/E=64,N=2560,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  550. vllm/model_executor/layers/fused_moe/configs/E=64,N=2560,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  551. vllm/model_executor/layers/fused_moe/configs/E=64,N=2560,device_name=NVIDIA_H200.json +146 -0
  552. vllm/model_executor/layers/fused_moe/configs/E=64,N=3072,device_name=NVIDIA_H20,dtype=fp8_w8a8.json +146 -0
  553. vllm/model_executor/layers/fused_moe/configs/E=64,N=3072,device_name=NVIDIA_H20.json +146 -0
  554. vllm/model_executor/layers/fused_moe/configs/E=64,N=320,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  555. vllm/model_executor/layers/fused_moe/configs/E=64,N=320,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  556. vllm/model_executor/layers/fused_moe/configs/E=64,N=320,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  557. vllm/model_executor/layers/fused_moe/configs/E=64,N=320,device_name=NVIDIA_H200.json +146 -0
  558. vllm/model_executor/layers/fused_moe/configs/E=64,N=384,device_name=NVIDIA_H20,dtype=fp8_w8a8.json +146 -0
  559. vllm/model_executor/layers/fused_moe/configs/E=64,N=384,device_name=NVIDIA_H20.json +146 -0
  560. vllm/model_executor/layers/fused_moe/configs/E=64,N=640,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  561. vllm/model_executor/layers/fused_moe/configs/E=64,N=640,device_name=NVIDIA_A800-SXM4-80GB.json +146 -0
  562. vllm/model_executor/layers/fused_moe/configs/E=64,N=640,device_name=NVIDIA_GeForce_RTX_4090,dtype=fp8_w8a8.json +146 -0
  563. vllm/model_executor/layers/fused_moe/configs/E=64,N=640,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  564. vllm/model_executor/layers/fused_moe/configs/E=64,N=640,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  565. vllm/model_executor/layers/fused_moe/configs/E=64,N=640,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  566. vllm/model_executor/layers/fused_moe/configs/E=64,N=640,device_name=NVIDIA_H200.json +146 -0
  567. vllm/model_executor/layers/fused_moe/configs/E=64,N=768,device_name=NVIDIA_H100_PCIe,dtype=fp8_w8a8,block_shape=[128,128].json +147 -0
  568. vllm/model_executor/layers/fused_moe/configs/E=64,N=768,device_name=NVIDIA_H20,dtype=fp8_w8a8.json +146 -0
  569. vllm/model_executor/layers/fused_moe/configs/E=64,N=768,device_name=NVIDIA_H20.json +146 -0
  570. vllm/model_executor/layers/fused_moe/configs/E=64,N=896,device_name=NVIDIA_H20.json +146 -0
  571. vllm/model_executor/layers/fused_moe/configs/E=64,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=bf16.json +82 -0
  572. vllm/model_executor/layers/fused_moe/configs/E=64,N=8960,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +82 -0
  573. vllm/model_executor/layers/fused_moe/configs/E=72,N=192,device_name=AMD_Instinct_MI300X.json +200 -0
  574. vllm/model_executor/layers/fused_moe/configs/E=72,N=384,device_name=AMD_Instinct_MI300X.json +200 -0
  575. vllm/model_executor/layers/fused_moe/configs/E=72,N=384,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  576. vllm/model_executor/layers/fused_moe/configs/E=72,N=768,device_name=AMD_Instinct_MI300X.json +200 -0
  577. vllm/model_executor/layers/fused_moe/configs/E=72,N=768,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  578. vllm/model_executor/layers/fused_moe/configs/E=8,N=14336,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  579. vllm/model_executor/layers/fused_moe/configs/E=8,N=14336,device_name=AMD_Instinct_MI300X.json +200 -0
  580. vllm/model_executor/layers/fused_moe/configs/E=8,N=14336,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  581. vllm/model_executor/layers/fused_moe/configs/E=8,N=14336,device_name=AMD_Instinct_MI325X.json +200 -0
  582. vllm/model_executor/layers/fused_moe/configs/E=8,N=14336,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +138 -0
  583. vllm/model_executor/layers/fused_moe/configs/E=8,N=14336,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  584. vllm/model_executor/layers/fused_moe/configs/E=8,N=14336,device_name=NVIDIA_H200.json +146 -0
  585. vllm/model_executor/layers/fused_moe/configs/E=8,N=16384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  586. vllm/model_executor/layers/fused_moe/configs/E=8,N=16384,device_name=AMD_Instinct_MI300X.json +200 -0
  587. vllm/model_executor/layers/fused_moe/configs/E=8,N=16384,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  588. vllm/model_executor/layers/fused_moe/configs/E=8,N=16384,device_name=AMD_Instinct_MI325X.json +200 -0
  589. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  590. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=AMD_Instinct_MI300X.json +200 -0
  591. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  592. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=AMD_Instinct_MI325X.json +200 -0
  593. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=NVIDIA_A100-SXM4-40GB.json +146 -0
  594. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  595. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  596. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  597. vllm/model_executor/layers/fused_moe/configs/E=8,N=1792,device_name=NVIDIA_H200.json +146 -0
  598. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  599. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=AMD_Instinct_MI300X.json +200 -0
  600. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  601. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=AMD_Instinct_MI325X.json +200 -0
  602. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  603. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  604. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  605. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +154 -0
  606. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  607. vllm/model_executor/layers/fused_moe/configs/E=8,N=2048,device_name=NVIDIA_H200.json +146 -0
  608. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  609. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=AMD_Instinct_MI300X.json +200 -0
  610. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  611. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=AMD_Instinct_MI325X.json +200 -0
  612. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_A100-SXM4-40GB.json +146 -0
  613. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  614. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_GeForce_RTX_4090,dtype=fp8_w8a8.json +146 -0
  615. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  616. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  617. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  618. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_H200.json +146 -0
  619. vllm/model_executor/layers/fused_moe/configs/E=8,N=3584,device_name=NVIDIA_L40S.json +173 -0
  620. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  621. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=AMD_Instinct_MI300X.json +200 -0
  622. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  623. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=AMD_Instinct_MI325X.json +200 -0
  624. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  625. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  626. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  627. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  628. vllm/model_executor/layers/fused_moe/configs/E=8,N=4096,device_name=NVIDIA_H200.json +146 -0
  629. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  630. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=AMD_Instinct_MI300X.json +200 -0
  631. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  632. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=AMD_Instinct_MI325X.json +200 -0
  633. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=NVIDIA_A100-SXM4-80GB.json +146 -0
  634. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  635. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=NVIDIA_H100_80GB_HBM3.json +146 -0
  636. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  637. vllm/model_executor/layers/fused_moe/configs/E=8,N=7168,device_name=NVIDIA_H200.json +146 -0
  638. vllm/model_executor/layers/fused_moe/configs/E=8,N=8192,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8.json +164 -0
  639. vllm/model_executor/layers/fused_moe/configs/E=8,N=8192,device_name=AMD_Instinct_MI300X.json +200 -0
  640. vllm/model_executor/layers/fused_moe/configs/E=8,N=8192,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8.json +164 -0
  641. vllm/model_executor/layers/fused_moe/configs/E=8,N=8192,device_name=AMD_Instinct_MI325X.json +200 -0
  642. vllm/model_executor/layers/fused_moe/configs/E=8,N=8192,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8.json +146 -0
  643. vllm/model_executor/layers/fused_moe/configs/E=8,N=8192,device_name=NVIDIA_H200,dtype=fp8_w8a8.json +146 -0
  644. vllm/model_executor/layers/fused_moe/configs/README +12 -0
  645. vllm/model_executor/layers/fused_moe/cpu_fused_moe.py +292 -0
  646. vllm/model_executor/layers/fused_moe/cutlass_moe.py +1052 -0
  647. vllm/model_executor/layers/fused_moe/deep_gemm_moe.py +387 -0
  648. vllm/model_executor/layers/fused_moe/deep_gemm_utils.py +416 -0
  649. vllm/model_executor/layers/fused_moe/deepep_ht_prepare_finalize.py +420 -0
  650. vllm/model_executor/layers/fused_moe/deepep_ll_prepare_finalize.py +434 -0
  651. vllm/model_executor/layers/fused_moe/flashinfer_cutedsl_moe.py +376 -0
  652. vllm/model_executor/layers/fused_moe/flashinfer_cutlass_moe.py +307 -0
  653. vllm/model_executor/layers/fused_moe/flashinfer_cutlass_prepare_finalize.py +362 -0
  654. vllm/model_executor/layers/fused_moe/flashinfer_trtllm_moe.py +192 -0
  655. vllm/model_executor/layers/fused_moe/fused_batched_moe.py +1012 -0
  656. vllm/model_executor/layers/fused_moe/fused_marlin_moe.py +821 -0
  657. vllm/model_executor/layers/fused_moe/fused_moe.py +2172 -0
  658. vllm/model_executor/layers/fused_moe/fused_moe_method_base.py +121 -0
  659. vllm/model_executor/layers/fused_moe/fused_moe_modular_method.py +136 -0
  660. vllm/model_executor/layers/fused_moe/gpt_oss_triton_kernels_moe.py +524 -0
  661. vllm/model_executor/layers/fused_moe/layer.py +2152 -0
  662. vllm/model_executor/layers/fused_moe/modular_kernel.py +1332 -0
  663. vllm/model_executor/layers/fused_moe/moe_align_block_size.py +174 -0
  664. vllm/model_executor/layers/fused_moe/moe_pallas.py +83 -0
  665. vllm/model_executor/layers/fused_moe/moe_permute_unpermute.py +229 -0
  666. vllm/model_executor/layers/fused_moe/moe_torch_iterative.py +60 -0
  667. vllm/model_executor/layers/fused_moe/pplx_prepare_finalize.py +362 -0
  668. vllm/model_executor/layers/fused_moe/prepare_finalize.py +78 -0
  669. vllm/model_executor/layers/fused_moe/rocm_aiter_fused_moe.py +265 -0
  670. vllm/model_executor/layers/fused_moe/routing_simulator.py +310 -0
  671. vllm/model_executor/layers/fused_moe/shared_fused_moe.py +96 -0
  672. vllm/model_executor/layers/fused_moe/topk_weight_and_reduce.py +171 -0
  673. vllm/model_executor/layers/fused_moe/triton_deep_gemm_moe.py +163 -0
  674. vllm/model_executor/layers/fused_moe/trtllm_moe.py +143 -0
  675. vllm/model_executor/layers/fused_moe/unquantized_fused_moe_method.py +559 -0
  676. vllm/model_executor/layers/fused_moe/utils.py +332 -0
  677. vllm/model_executor/layers/kda.py +442 -0
  678. vllm/model_executor/layers/layernorm.py +442 -0
  679. vllm/model_executor/layers/lightning_attn.py +735 -0
  680. vllm/model_executor/layers/linear.py +1424 -0
  681. vllm/model_executor/layers/logits_processor.py +106 -0
  682. vllm/model_executor/layers/mamba/__init__.py +0 -0
  683. vllm/model_executor/layers/mamba/abstract.py +68 -0
  684. vllm/model_executor/layers/mamba/linear_attn.py +388 -0
  685. vllm/model_executor/layers/mamba/mamba_mixer.py +527 -0
  686. vllm/model_executor/layers/mamba/mamba_mixer2.py +930 -0
  687. vllm/model_executor/layers/mamba/mamba_utils.py +225 -0
  688. vllm/model_executor/layers/mamba/ops/__init__.py +0 -0
  689. vllm/model_executor/layers/mamba/ops/causal_conv1d.py +1240 -0
  690. vllm/model_executor/layers/mamba/ops/layernorm_gated.py +172 -0
  691. vllm/model_executor/layers/mamba/ops/mamba_ssm.py +478 -0
  692. vllm/model_executor/layers/mamba/ops/ssd_bmm.py +211 -0
  693. vllm/model_executor/layers/mamba/ops/ssd_chunk_scan.py +456 -0
  694. vllm/model_executor/layers/mamba/ops/ssd_chunk_state.py +700 -0
  695. vllm/model_executor/layers/mamba/ops/ssd_combined.py +230 -0
  696. vllm/model_executor/layers/mamba/ops/ssd_state_passing.py +157 -0
  697. vllm/model_executor/layers/mamba/short_conv.py +255 -0
  698. vllm/model_executor/layers/mla.py +176 -0
  699. vllm/model_executor/layers/pooler.py +817 -0
  700. vllm/model_executor/layers/quantization/__init__.py +179 -0
  701. vllm/model_executor/layers/quantization/auto_round.py +454 -0
  702. vllm/model_executor/layers/quantization/awq.py +277 -0
  703. vllm/model_executor/layers/quantization/awq_marlin.py +718 -0
  704. vllm/model_executor/layers/quantization/awq_triton.py +337 -0
  705. vllm/model_executor/layers/quantization/base_config.py +170 -0
  706. vllm/model_executor/layers/quantization/bitblas.py +502 -0
  707. vllm/model_executor/layers/quantization/bitsandbytes.py +644 -0
  708. vllm/model_executor/layers/quantization/compressed_tensors/__init__.py +3 -0
  709. vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors.py +963 -0
  710. vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors_moe.py +2387 -0
  711. vllm/model_executor/layers/quantization/compressed_tensors/schemes/__init__.py +35 -0
  712. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_24.py +392 -0
  713. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_scheme.py +55 -0
  714. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w4a16_24.py +176 -0
  715. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w4a16_nvfp4.py +124 -0
  716. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w4a4_nvfp4.py +218 -0
  717. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w4a8_fp8.py +183 -0
  718. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w4a8_int.py +153 -0
  719. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a16_fp8.py +138 -0
  720. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_fp8.py +200 -0
  721. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_w8a8_int8.py +125 -0
  722. vllm/model_executor/layers/quantization/compressed_tensors/schemes/compressed_tensors_wNa16.py +230 -0
  723. vllm/model_executor/layers/quantization/compressed_tensors/transform/__init__.py +0 -0
  724. vllm/model_executor/layers/quantization/compressed_tensors/transform/linear.py +260 -0
  725. vllm/model_executor/layers/quantization/compressed_tensors/transform/module.py +173 -0
  726. vllm/model_executor/layers/quantization/compressed_tensors/transform/schemes/__init__.py +0 -0
  727. vllm/model_executor/layers/quantization/compressed_tensors/transform/schemes/linear_qutlass_nvfp4.py +64 -0
  728. vllm/model_executor/layers/quantization/compressed_tensors/transform/utils.py +13 -0
  729. vllm/model_executor/layers/quantization/compressed_tensors/triton_scaled_mm.py +224 -0
  730. vllm/model_executor/layers/quantization/compressed_tensors/utils.py +216 -0
  731. vllm/model_executor/layers/quantization/cpu_wna16.py +625 -0
  732. vllm/model_executor/layers/quantization/deepspeedfp.py +218 -0
  733. vllm/model_executor/layers/quantization/experts_int8.py +225 -0
  734. vllm/model_executor/layers/quantization/fbgemm_fp8.py +195 -0
  735. vllm/model_executor/layers/quantization/fp8.py +1348 -0
  736. vllm/model_executor/layers/quantization/fp_quant.py +420 -0
  737. vllm/model_executor/layers/quantization/gguf.py +687 -0
  738. vllm/model_executor/layers/quantization/gptq.py +393 -0
  739. vllm/model_executor/layers/quantization/gptq_bitblas.py +482 -0
  740. vllm/model_executor/layers/quantization/gptq_marlin.py +842 -0
  741. vllm/model_executor/layers/quantization/gptq_marlin_24.py +320 -0
  742. vllm/model_executor/layers/quantization/hqq_marlin.py +372 -0
  743. vllm/model_executor/layers/quantization/inc.py +65 -0
  744. vllm/model_executor/layers/quantization/input_quant_fp8.py +171 -0
  745. vllm/model_executor/layers/quantization/ipex_quant.py +470 -0
  746. vllm/model_executor/layers/quantization/kernels/__init__.py +0 -0
  747. vllm/model_executor/layers/quantization/kernels/mixed_precision/MPLinearKernel.py +94 -0
  748. vllm/model_executor/layers/quantization/kernels/mixed_precision/__init__.py +105 -0
  749. vllm/model_executor/layers/quantization/kernels/mixed_precision/allspark.py +115 -0
  750. vllm/model_executor/layers/quantization/kernels/mixed_precision/bitblas.py +323 -0
  751. vllm/model_executor/layers/quantization/kernels/mixed_precision/conch.py +98 -0
  752. vllm/model_executor/layers/quantization/kernels/mixed_precision/cutlass.py +119 -0
  753. vllm/model_executor/layers/quantization/kernels/mixed_precision/dynamic_4bit.py +111 -0
  754. vllm/model_executor/layers/quantization/kernels/mixed_precision/exllama.py +161 -0
  755. vllm/model_executor/layers/quantization/kernels/mixed_precision/machete.py +159 -0
  756. vllm/model_executor/layers/quantization/kernels/mixed_precision/marlin.py +200 -0
  757. vllm/model_executor/layers/quantization/kernels/scaled_mm/ScaledMMLinearKernel.py +73 -0
  758. vllm/model_executor/layers/quantization/kernels/scaled_mm/__init__.py +97 -0
  759. vllm/model_executor/layers/quantization/kernels/scaled_mm/aiter.py +120 -0
  760. vllm/model_executor/layers/quantization/kernels/scaled_mm/cpu.py +219 -0
  761. vllm/model_executor/layers/quantization/kernels/scaled_mm/cutlass.py +140 -0
  762. vllm/model_executor/layers/quantization/kernels/scaled_mm/triton.py +42 -0
  763. vllm/model_executor/layers/quantization/kernels/scaled_mm/xla.py +105 -0
  764. vllm/model_executor/layers/quantization/kv_cache.py +146 -0
  765. vllm/model_executor/layers/quantization/modelopt.py +1637 -0
  766. vllm/model_executor/layers/quantization/moe_wna16.py +528 -0
  767. vllm/model_executor/layers/quantization/mxfp4.py +1175 -0
  768. vllm/model_executor/layers/quantization/petit.py +319 -0
  769. vllm/model_executor/layers/quantization/ptpc_fp8.py +136 -0
  770. vllm/model_executor/layers/quantization/quark/__init__.py +0 -0
  771. vllm/model_executor/layers/quantization/quark/quark.py +527 -0
  772. vllm/model_executor/layers/quantization/quark/quark_moe.py +653 -0
  773. vllm/model_executor/layers/quantization/quark/schemes/__init__.py +9 -0
  774. vllm/model_executor/layers/quantization/quark/schemes/quark_ocp_mx.py +343 -0
  775. vllm/model_executor/layers/quantization/quark/schemes/quark_scheme.py +55 -0
  776. vllm/model_executor/layers/quantization/quark/schemes/quark_w8a8_fp8.py +179 -0
  777. vllm/model_executor/layers/quantization/quark/schemes/quark_w8a8_int8.py +139 -0
  778. vllm/model_executor/layers/quantization/quark/utils.py +105 -0
  779. vllm/model_executor/layers/quantization/qutlass_utils.py +185 -0
  780. vllm/model_executor/layers/quantization/rtn.py +639 -0
  781. vllm/model_executor/layers/quantization/schema.py +90 -0
  782. vllm/model_executor/layers/quantization/torchao.py +380 -0
  783. vllm/model_executor/layers/quantization/tpu_int8.py +139 -0
  784. vllm/model_executor/layers/quantization/utils/__init__.py +6 -0
  785. vllm/model_executor/layers/quantization/utils/allspark_utils.py +67 -0
  786. vllm/model_executor/layers/quantization/utils/bitblas_utils.py +229 -0
  787. vllm/model_executor/layers/quantization/utils/configs/N=10240,K=5120,device_name=NVIDIA_L40S,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  788. vllm/model_executor/layers/quantization/utils/configs/N=12288,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  789. vllm/model_executor/layers/quantization/utils/configs/N=12288,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  790. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  791. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  792. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  793. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  794. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  795. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  796. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  797. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=1536,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  798. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  799. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  800. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  801. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  802. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  803. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  804. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  805. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  806. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  807. vllm/model_executor/layers/quantization/utils/configs/N=1536,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  808. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  809. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  810. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  811. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  812. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  813. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  814. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  815. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  816. vllm/model_executor/layers/quantization/utils/configs/N=2048,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  817. vllm/model_executor/layers/quantization/utils/configs/N=2112,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  818. vllm/model_executor/layers/quantization/utils/configs/N=2112,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  819. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  820. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  821. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  822. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  823. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  824. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  825. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  826. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  827. vllm/model_executor/layers/quantization/utils/configs/N=2304,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  828. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=1536,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  829. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=1536,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  830. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  831. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  832. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  833. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  834. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  835. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  836. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  837. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  838. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  839. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  840. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  841. vllm/model_executor/layers/quantization/utils/configs/N=24576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  842. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  843. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  844. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  845. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  846. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  847. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  848. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  849. vllm/model_executor/layers/quantization/utils/configs/N=256,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  850. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  851. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  852. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=1536,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  853. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=1536,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  854. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=1536,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  855. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=1536,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  856. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=1536,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  857. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  858. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  859. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  860. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  861. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  862. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  863. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  864. vllm/model_executor/layers/quantization/utils/configs/N=3072,K=7168,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  865. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  866. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  867. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  868. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  869. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  870. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  871. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  872. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  873. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  874. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  875. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  876. vllm/model_executor/layers/quantization/utils/configs/N=32768,K=512,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  877. vllm/model_executor/layers/quantization/utils/configs/N=36864,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  878. vllm/model_executor/layers/quantization/utils/configs/N=36864,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  879. vllm/model_executor/layers/quantization/utils/configs/N=36864,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  880. vllm/model_executor/layers/quantization/utils/configs/N=36864,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  881. vllm/model_executor/layers/quantization/utils/configs/N=36864,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  882. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  883. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  884. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  885. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  886. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  887. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  888. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  889. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=512,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  890. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  891. vllm/model_executor/layers/quantization/utils/configs/N=4096,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  892. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  893. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  894. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  895. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  896. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  897. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  898. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  899. vllm/model_executor/layers/quantization/utils/configs/N=4608,K=7168,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  900. vllm/model_executor/layers/quantization/utils/configs/N=512,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  901. vllm/model_executor/layers/quantization/utils/configs/N=512,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  902. vllm/model_executor/layers/quantization/utils/configs/N=512,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  903. vllm/model_executor/layers/quantization/utils/configs/N=512,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  904. vllm/model_executor/layers/quantization/utils/configs/N=512,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  905. vllm/model_executor/layers/quantization/utils/configs/N=512,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  906. vllm/model_executor/layers/quantization/utils/configs/N=512,K=7168,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  907. vllm/model_executor/layers/quantization/utils/configs/N=5120,K=25600,device_name=NVIDIA_L40S,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  908. vllm/model_executor/layers/quantization/utils/configs/N=5120,K=8192,device_name=NVIDIA_L40S,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  909. vllm/model_executor/layers/quantization/utils/configs/N=51200,K=5120,device_name=NVIDIA_L40S,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  910. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  911. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  912. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  913. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  914. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  915. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  916. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  917. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  918. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  919. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  920. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +18 -0
  921. vllm/model_executor/layers/quantization/utils/configs/N=576,K=7168,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  922. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  923. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  924. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  925. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  926. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  927. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  928. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  929. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  930. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1024,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  931. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  932. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  933. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  934. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  935. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  936. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  937. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  938. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  939. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=1152,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  940. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  941. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  942. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  943. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  944. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  945. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  946. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  947. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=128,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  948. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  949. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  950. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  951. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  952. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  953. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  954. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  955. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  956. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  957. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  958. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  959. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=16384,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  960. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  961. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  962. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  963. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_A100-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  964. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_A800-SXM4-80GB,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  965. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  966. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  967. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  968. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  969. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  970. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  971. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=18432,device_name=NVIDIA_L20Y,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  972. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  973. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  974. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  975. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  976. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  977. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  978. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  979. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2048,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  980. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  981. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  982. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  983. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  984. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=NVIDIA_H100_80GB_HBM3,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  985. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  986. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  987. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=2304,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  988. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=256,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  989. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=256,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  990. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=256,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  991. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=256,device_name=NVIDIA_B200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  992. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=256,device_name=NVIDIA_H20,dtype=int8_w8a8,block_shape=[128,128].json +146 -0
  993. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=256,device_name=NVIDIA_H200,dtype=fp8_w8a8,block_shape=[128,128].json +146 -0
  994. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=256,device_name=NVIDIA_L20,dtype=fp8_w8a8,block_shape=[128,128].json +26 -0
  995. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=8192,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  996. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=8192,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  997. vllm/model_executor/layers/quantization/utils/configs/N=7168,K=8192,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  998. vllm/model_executor/layers/quantization/utils/configs/N=8192,K=1536,device_name=AMD_Instinct_MI300X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  999. vllm/model_executor/layers/quantization/utils/configs/N=8192,K=1536,device_name=AMD_Instinct_MI325X,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  1000. vllm/model_executor/layers/quantization/utils/configs/N=8192,K=1536,device_name=AMD_Instinct_MI325_OAM,dtype=fp8_w8a8,block_shape=[128,128].json +164 -0
  1001. vllm/model_executor/layers/quantization/utils/configs/README.md +3 -0
  1002. vllm/model_executor/layers/quantization/utils/flashinfer_fp4_moe.py +333 -0
  1003. vllm/model_executor/layers/quantization/utils/flashinfer_utils.py +311 -0
  1004. vllm/model_executor/layers/quantization/utils/fp8_utils.py +1203 -0
  1005. vllm/model_executor/layers/quantization/utils/gptq_utils.py +158 -0
  1006. vllm/model_executor/layers/quantization/utils/int8_utils.py +489 -0
  1007. vllm/model_executor/layers/quantization/utils/layer_utils.py +41 -0
  1008. vllm/model_executor/layers/quantization/utils/machete_utils.py +56 -0
  1009. vllm/model_executor/layers/quantization/utils/marlin_utils.py +674 -0
  1010. vllm/model_executor/layers/quantization/utils/marlin_utils_fp4.py +452 -0
  1011. vllm/model_executor/layers/quantization/utils/marlin_utils_fp8.py +378 -0
  1012. vllm/model_executor/layers/quantization/utils/marlin_utils_test.py +219 -0
  1013. vllm/model_executor/layers/quantization/utils/marlin_utils_test_24.py +467 -0
  1014. vllm/model_executor/layers/quantization/utils/mxfp4_utils.py +183 -0
  1015. vllm/model_executor/layers/quantization/utils/mxfp6_utils.py +142 -0
  1016. vllm/model_executor/layers/quantization/utils/mxfp8_utils.py +24 -0
  1017. vllm/model_executor/layers/quantization/utils/nvfp4_emulation_utils.py +142 -0
  1018. vllm/model_executor/layers/quantization/utils/nvfp4_moe_support.py +67 -0
  1019. vllm/model_executor/layers/quantization/utils/ocp_mx_utils.py +51 -0
  1020. vllm/model_executor/layers/quantization/utils/petit_utils.py +124 -0
  1021. vllm/model_executor/layers/quantization/utils/quant_utils.py +687 -0
  1022. vllm/model_executor/layers/quantization/utils/w8a8_utils.py +516 -0
  1023. vllm/model_executor/layers/resampler.py +283 -0
  1024. vllm/model_executor/layers/rotary_embedding/__init__.py +292 -0
  1025. vllm/model_executor/layers/rotary_embedding/base.py +240 -0
  1026. vllm/model_executor/layers/rotary_embedding/common.py +188 -0
  1027. vllm/model_executor/layers/rotary_embedding/deepseek_scaling_rope.py +165 -0
  1028. vllm/model_executor/layers/rotary_embedding/dual_chunk_rope.py +215 -0
  1029. vllm/model_executor/layers/rotary_embedding/dynamic_ntk_alpha_rope.py +43 -0
  1030. vllm/model_executor/layers/rotary_embedding/dynamic_ntk_scaling_rope.py +68 -0
  1031. vllm/model_executor/layers/rotary_embedding/ernie45_vl_rope.py +75 -0
  1032. vllm/model_executor/layers/rotary_embedding/linear_scaling_rope.py +115 -0
  1033. vllm/model_executor/layers/rotary_embedding/llama3_rope.py +54 -0
  1034. vllm/model_executor/layers/rotary_embedding/llama4_vision_rope.py +80 -0
  1035. vllm/model_executor/layers/rotary_embedding/mrope.py +397 -0
  1036. vllm/model_executor/layers/rotary_embedding/ntk_scaling_rope.py +47 -0
  1037. vllm/model_executor/layers/rotary_embedding/phi3_long_rope_scaled_rope.py +159 -0
  1038. vllm/model_executor/layers/rotary_embedding/xdrope.py +102 -0
  1039. vllm/model_executor/layers/rotary_embedding/yarn_scaling_rope.py +84 -0
  1040. vllm/model_executor/layers/utils.py +251 -0
  1041. vllm/model_executor/layers/vocab_parallel_embedding.py +558 -0
  1042. vllm/model_executor/model_loader/__init__.py +150 -0
  1043. vllm/model_executor/model_loader/base_loader.py +57 -0
  1044. vllm/model_executor/model_loader/bitsandbytes_loader.py +822 -0
  1045. vllm/model_executor/model_loader/default_loader.py +321 -0
  1046. vllm/model_executor/model_loader/dummy_loader.py +28 -0
  1047. vllm/model_executor/model_loader/gguf_loader.py +349 -0
  1048. vllm/model_executor/model_loader/online_quantization.py +275 -0
  1049. vllm/model_executor/model_loader/runai_streamer_loader.py +116 -0
  1050. vllm/model_executor/model_loader/sharded_state_loader.py +214 -0
  1051. vllm/model_executor/model_loader/tensorizer.py +790 -0
  1052. vllm/model_executor/model_loader/tensorizer_loader.py +151 -0
  1053. vllm/model_executor/model_loader/tpu.py +118 -0
  1054. vllm/model_executor/model_loader/utils.py +296 -0
  1055. vllm/model_executor/model_loader/weight_utils.py +1147 -0
  1056. vllm/model_executor/models/__init__.py +44 -0
  1057. vllm/model_executor/models/adapters.py +543 -0
  1058. vllm/model_executor/models/afmoe.py +697 -0
  1059. vllm/model_executor/models/aimv2.py +248 -0
  1060. vllm/model_executor/models/apertus.py +569 -0
  1061. vllm/model_executor/models/arcee.py +428 -0
  1062. vllm/model_executor/models/arctic.py +634 -0
  1063. vllm/model_executor/models/aria.py +655 -0
  1064. vllm/model_executor/models/aya_vision.py +450 -0
  1065. vllm/model_executor/models/baichuan.py +494 -0
  1066. vllm/model_executor/models/bailing_moe.py +645 -0
  1067. vllm/model_executor/models/bamba.py +516 -0
  1068. vllm/model_executor/models/bee.py +157 -0
  1069. vllm/model_executor/models/bert.py +925 -0
  1070. vllm/model_executor/models/bert_with_rope.py +732 -0
  1071. vllm/model_executor/models/blip.py +350 -0
  1072. vllm/model_executor/models/blip2.py +695 -0
  1073. vllm/model_executor/models/bloom.py +390 -0
  1074. vllm/model_executor/models/chameleon.py +1098 -0
  1075. vllm/model_executor/models/chatglm.py +499 -0
  1076. vllm/model_executor/models/clip.py +1005 -0
  1077. vllm/model_executor/models/cohere2_vision.py +472 -0
  1078. vllm/model_executor/models/commandr.py +470 -0
  1079. vllm/model_executor/models/config.py +510 -0
  1080. vllm/model_executor/models/dbrx.py +485 -0
  1081. vllm/model_executor/models/deepencoder.py +676 -0
  1082. vllm/model_executor/models/deepseek_eagle.py +252 -0
  1083. vllm/model_executor/models/deepseek_mtp.py +446 -0
  1084. vllm/model_executor/models/deepseek_ocr.py +593 -0
  1085. vllm/model_executor/models/deepseek_v2.py +1715 -0
  1086. vllm/model_executor/models/deepseek_vl2.py +644 -0
  1087. vllm/model_executor/models/dots1.py +566 -0
  1088. vllm/model_executor/models/dots_ocr.py +874 -0
  1089. vllm/model_executor/models/ernie45.py +53 -0
  1090. vllm/model_executor/models/ernie45_moe.py +755 -0
  1091. vllm/model_executor/models/ernie45_vl.py +1710 -0
  1092. vllm/model_executor/models/ernie45_vl_moe.py +800 -0
  1093. vllm/model_executor/models/ernie_mtp.py +279 -0
  1094. vllm/model_executor/models/exaone.py +525 -0
  1095. vllm/model_executor/models/exaone4.py +517 -0
  1096. vllm/model_executor/models/fairseq2_llama.py +154 -0
  1097. vllm/model_executor/models/falcon.py +544 -0
  1098. vllm/model_executor/models/falcon_h1.py +680 -0
  1099. vllm/model_executor/models/flex_olmo.py +155 -0
  1100. vllm/model_executor/models/fuyu.py +373 -0
  1101. vllm/model_executor/models/gemma.py +426 -0
  1102. vllm/model_executor/models/gemma2.py +436 -0
  1103. vllm/model_executor/models/gemma3.py +577 -0
  1104. vllm/model_executor/models/gemma3_mm.py +665 -0
  1105. vllm/model_executor/models/gemma3n.py +1167 -0
  1106. vllm/model_executor/models/gemma3n_mm.py +811 -0
  1107. vllm/model_executor/models/glm.py +23 -0
  1108. vllm/model_executor/models/glm4.py +298 -0
  1109. vllm/model_executor/models/glm4_1v.py +1854 -0
  1110. vllm/model_executor/models/glm4_moe.py +738 -0
  1111. vllm/model_executor/models/glm4_moe_mtp.py +359 -0
  1112. vllm/model_executor/models/glm4v.py +785 -0
  1113. vllm/model_executor/models/gpt2.py +397 -0
  1114. vllm/model_executor/models/gpt_bigcode.py +339 -0
  1115. vllm/model_executor/models/gpt_j.py +345 -0
  1116. vllm/model_executor/models/gpt_neox.py +343 -0
  1117. vllm/model_executor/models/gpt_oss.py +745 -0
  1118. vllm/model_executor/models/granite.py +476 -0
  1119. vllm/model_executor/models/granite_speech.py +913 -0
  1120. vllm/model_executor/models/granitemoe.py +561 -0
  1121. vllm/model_executor/models/granitemoehybrid.py +704 -0
  1122. vllm/model_executor/models/granitemoeshared.py +328 -0
  1123. vllm/model_executor/models/gritlm.py +245 -0
  1124. vllm/model_executor/models/grok1.py +555 -0
  1125. vllm/model_executor/models/h2ovl.py +554 -0
  1126. vllm/model_executor/models/hunyuan_v1.py +1042 -0
  1127. vllm/model_executor/models/hunyuan_vision.py +1028 -0
  1128. vllm/model_executor/models/hyperclovax_vision.py +1166 -0
  1129. vllm/model_executor/models/idefics2_vision_model.py +427 -0
  1130. vllm/model_executor/models/idefics3.py +718 -0
  1131. vllm/model_executor/models/interfaces.py +1148 -0
  1132. vllm/model_executor/models/interfaces_base.py +243 -0
  1133. vllm/model_executor/models/intern_vit.py +454 -0
  1134. vllm/model_executor/models/internlm2.py +454 -0
  1135. vllm/model_executor/models/internlm2_ve.py +139 -0
  1136. vllm/model_executor/models/interns1.py +830 -0
  1137. vllm/model_executor/models/interns1_vit.py +433 -0
  1138. vllm/model_executor/models/internvl.py +1452 -0
  1139. vllm/model_executor/models/jais.py +397 -0
  1140. vllm/model_executor/models/jamba.py +609 -0
  1141. vllm/model_executor/models/jina_vl.py +147 -0
  1142. vllm/model_executor/models/keye.py +1765 -0
  1143. vllm/model_executor/models/keye_vl1_5.py +726 -0
  1144. vllm/model_executor/models/kimi_linear.py +658 -0
  1145. vllm/model_executor/models/kimi_vl.py +578 -0
  1146. vllm/model_executor/models/lfm2.py +516 -0
  1147. vllm/model_executor/models/lfm2_moe.py +746 -0
  1148. vllm/model_executor/models/lightonocr.py +195 -0
  1149. vllm/model_executor/models/llama.py +704 -0
  1150. vllm/model_executor/models/llama4.py +857 -0
  1151. vllm/model_executor/models/llama4_eagle.py +216 -0
  1152. vllm/model_executor/models/llama_eagle.py +213 -0
  1153. vllm/model_executor/models/llama_eagle3.py +375 -0
  1154. vllm/model_executor/models/llava.py +842 -0
  1155. vllm/model_executor/models/llava_next.py +583 -0
  1156. vllm/model_executor/models/llava_next_video.py +467 -0
  1157. vllm/model_executor/models/llava_onevision.py +923 -0
  1158. vllm/model_executor/models/longcat_flash.py +743 -0
  1159. vllm/model_executor/models/longcat_flash_mtp.py +349 -0
  1160. vllm/model_executor/models/mamba.py +276 -0
  1161. vllm/model_executor/models/mamba2.py +288 -0
  1162. vllm/model_executor/models/medusa.py +179 -0
  1163. vllm/model_executor/models/midashenglm.py +828 -0
  1164. vllm/model_executor/models/mimo.py +188 -0
  1165. vllm/model_executor/models/mimo_mtp.py +294 -0
  1166. vllm/model_executor/models/minicpm.py +657 -0
  1167. vllm/model_executor/models/minicpm3.py +234 -0
  1168. vllm/model_executor/models/minicpm_eagle.py +385 -0
  1169. vllm/model_executor/models/minicpmo.py +768 -0
  1170. vllm/model_executor/models/minicpmv.py +1744 -0
  1171. vllm/model_executor/models/minimax_m2.py +546 -0
  1172. vllm/model_executor/models/minimax_text_01.py +1010 -0
  1173. vllm/model_executor/models/minimax_vl_01.py +396 -0
  1174. vllm/model_executor/models/mistral3.py +637 -0
  1175. vllm/model_executor/models/mistral_large_3.py +63 -0
  1176. vllm/model_executor/models/mistral_large_3_eagle.py +165 -0
  1177. vllm/model_executor/models/mixtral.py +599 -0
  1178. vllm/model_executor/models/mllama4.py +1151 -0
  1179. vllm/model_executor/models/mlp_speculator.py +235 -0
  1180. vllm/model_executor/models/modernbert.py +452 -0
  1181. vllm/model_executor/models/module_mapping.py +74 -0
  1182. vllm/model_executor/models/molmo.py +1553 -0
  1183. vllm/model_executor/models/moonvit.py +686 -0
  1184. vllm/model_executor/models/mpt.py +335 -0
  1185. vllm/model_executor/models/nano_nemotron_vl.py +1732 -0
  1186. vllm/model_executor/models/nemotron.py +502 -0
  1187. vllm/model_executor/models/nemotron_h.py +850 -0
  1188. vllm/model_executor/models/nemotron_nas.py +473 -0
  1189. vllm/model_executor/models/nemotron_vl.py +653 -0
  1190. vllm/model_executor/models/nvlm_d.py +216 -0
  1191. vllm/model_executor/models/olmo.py +413 -0
  1192. vllm/model_executor/models/olmo2.py +455 -0
  1193. vllm/model_executor/models/olmoe.py +494 -0
  1194. vllm/model_executor/models/opencua.py +271 -0
  1195. vllm/model_executor/models/openpangu.py +1051 -0
  1196. vllm/model_executor/models/openpangu_mtp.py +265 -0
  1197. vllm/model_executor/models/opt.py +426 -0
  1198. vllm/model_executor/models/orion.py +366 -0
  1199. vllm/model_executor/models/ouro.py +508 -0
  1200. vllm/model_executor/models/ovis.py +559 -0
  1201. vllm/model_executor/models/ovis2_5.py +673 -0
  1202. vllm/model_executor/models/paddleocr_vl.py +1380 -0
  1203. vllm/model_executor/models/paligemma.py +412 -0
  1204. vllm/model_executor/models/persimmon.py +376 -0
  1205. vllm/model_executor/models/phi.py +370 -0
  1206. vllm/model_executor/models/phi3.py +18 -0
  1207. vllm/model_executor/models/phi3v.py +737 -0
  1208. vllm/model_executor/models/phi4_multimodal.py +1447 -0
  1209. vllm/model_executor/models/phi4mm.py +1253 -0
  1210. vllm/model_executor/models/phi4mm_audio.py +1296 -0
  1211. vllm/model_executor/models/phi4mm_utils.py +1907 -0
  1212. vllm/model_executor/models/phimoe.py +670 -0
  1213. vllm/model_executor/models/pixtral.py +1380 -0
  1214. vllm/model_executor/models/plamo2.py +966 -0
  1215. vllm/model_executor/models/plamo3.py +441 -0
  1216. vllm/model_executor/models/qwen.py +363 -0
  1217. vllm/model_executor/models/qwen2.py +569 -0
  1218. vllm/model_executor/models/qwen2_5_omni_thinker.py +1220 -0
  1219. vllm/model_executor/models/qwen2_5_vl.py +1594 -0
  1220. vllm/model_executor/models/qwen2_audio.py +473 -0
  1221. vllm/model_executor/models/qwen2_moe.py +590 -0
  1222. vllm/model_executor/models/qwen2_rm.py +123 -0
  1223. vllm/model_executor/models/qwen2_vl.py +1593 -0
  1224. vllm/model_executor/models/qwen3.py +332 -0
  1225. vllm/model_executor/models/qwen3_moe.py +738 -0
  1226. vllm/model_executor/models/qwen3_next.py +1390 -0
  1227. vllm/model_executor/models/qwen3_next_mtp.py +296 -0
  1228. vllm/model_executor/models/qwen3_omni_moe_thinker.py +1765 -0
  1229. vllm/model_executor/models/qwen3_vl.py +1686 -0
  1230. vllm/model_executor/models/qwen3_vl_moe.py +470 -0
  1231. vllm/model_executor/models/qwen_vl.py +803 -0
  1232. vllm/model_executor/models/radio.py +555 -0
  1233. vllm/model_executor/models/registry.py +1183 -0
  1234. vllm/model_executor/models/roberta.py +259 -0
  1235. vllm/model_executor/models/rvl.py +107 -0
  1236. vllm/model_executor/models/seed_oss.py +493 -0
  1237. vllm/model_executor/models/siglip.py +1245 -0
  1238. vllm/model_executor/models/siglip2navit.py +723 -0
  1239. vllm/model_executor/models/skyworkr1v.py +953 -0
  1240. vllm/model_executor/models/smolvlm.py +38 -0
  1241. vllm/model_executor/models/solar.py +485 -0
  1242. vllm/model_executor/models/stablelm.py +359 -0
  1243. vllm/model_executor/models/starcoder2.py +366 -0
  1244. vllm/model_executor/models/step3_text.py +555 -0
  1245. vllm/model_executor/models/step3_vl.py +1149 -0
  1246. vllm/model_executor/models/swin.py +514 -0
  1247. vllm/model_executor/models/tarsier.py +619 -0
  1248. vllm/model_executor/models/telechat2.py +153 -0
  1249. vllm/model_executor/models/teleflm.py +78 -0
  1250. vllm/model_executor/models/terratorch.py +319 -0
  1251. vllm/model_executor/models/transformers/__init__.py +127 -0
  1252. vllm/model_executor/models/transformers/base.py +464 -0
  1253. vllm/model_executor/models/transformers/causal.py +65 -0
  1254. vllm/model_executor/models/transformers/legacy.py +90 -0
  1255. vllm/model_executor/models/transformers/moe.py +325 -0
  1256. vllm/model_executor/models/transformers/multimodal.py +411 -0
  1257. vllm/model_executor/models/transformers/pooling.py +119 -0
  1258. vllm/model_executor/models/transformers/utils.py +213 -0
  1259. vllm/model_executor/models/ultravox.py +686 -0
  1260. vllm/model_executor/models/utils.py +832 -0
  1261. vllm/model_executor/models/vision.py +552 -0
  1262. vllm/model_executor/models/voxtral.py +842 -0
  1263. vllm/model_executor/models/whisper.py +963 -0
  1264. vllm/model_executor/models/zamba2.py +980 -0
  1265. vllm/model_executor/parameter.py +642 -0
  1266. vllm/model_executor/utils.py +94 -0
  1267. vllm/model_executor/warmup/__init__.py +0 -0
  1268. vllm/model_executor/warmup/deep_gemm_warmup.py +314 -0
  1269. vllm/model_executor/warmup/kernel_warmup.py +98 -0
  1270. vllm/multimodal/__init__.py +40 -0
  1271. vllm/multimodal/audio.py +142 -0
  1272. vllm/multimodal/base.py +26 -0
  1273. vllm/multimodal/cache.py +830 -0
  1274. vllm/multimodal/evs.py +294 -0
  1275. vllm/multimodal/hasher.py +106 -0
  1276. vllm/multimodal/image.py +130 -0
  1277. vllm/multimodal/inputs.py +1036 -0
  1278. vllm/multimodal/parse.py +544 -0
  1279. vllm/multimodal/processing.py +2240 -0
  1280. vllm/multimodal/profiling.py +369 -0
  1281. vllm/multimodal/registry.py +357 -0
  1282. vllm/multimodal/utils.py +523 -0
  1283. vllm/multimodal/video.py +333 -0
  1284. vllm/outputs.py +345 -0
  1285. vllm/platforms/__init__.py +277 -0
  1286. vllm/platforms/cpu.py +410 -0
  1287. vllm/platforms/cuda.py +642 -0
  1288. vllm/platforms/interface.py +656 -0
  1289. vllm/platforms/rocm.py +513 -0
  1290. vllm/platforms/tpu.py +275 -0
  1291. vllm/platforms/xpu.py +261 -0
  1292. vllm/plugins/__init__.py +81 -0
  1293. vllm/plugins/io_processors/__init__.py +68 -0
  1294. vllm/plugins/io_processors/interface.py +77 -0
  1295. vllm/plugins/lora_resolvers/__init__.py +0 -0
  1296. vllm/plugins/lora_resolvers/filesystem_resolver.py +52 -0
  1297. vllm/pooling_params.py +230 -0
  1298. vllm/profiler/__init__.py +0 -0
  1299. vllm/profiler/gpu_profiler.py +216 -0
  1300. vllm/profiler/layerwise_profile.py +392 -0
  1301. vllm/profiler/utils.py +151 -0
  1302. vllm/py.typed +2 -0
  1303. vllm/ray/__init__.py +0 -0
  1304. vllm/ray/lazy_utils.py +30 -0
  1305. vllm/ray/ray_env.py +79 -0
  1306. vllm/reasoning/__init__.py +92 -0
  1307. vllm/reasoning/abs_reasoning_parsers.py +290 -0
  1308. vllm/reasoning/basic_parsers.py +162 -0
  1309. vllm/reasoning/deepseek_r1_reasoning_parser.py +67 -0
  1310. vllm/reasoning/deepseek_v3_reasoning_parser.py +62 -0
  1311. vllm/reasoning/ernie45_reasoning_parser.py +165 -0
  1312. vllm/reasoning/glm4_moe_reasoning_parser.py +171 -0
  1313. vllm/reasoning/gptoss_reasoning_parser.py +173 -0
  1314. vllm/reasoning/granite_reasoning_parser.py +363 -0
  1315. vllm/reasoning/hunyuan_a13b_reasoning_parser.py +237 -0
  1316. vllm/reasoning/identity_reasoning_parser.py +58 -0
  1317. vllm/reasoning/minimax_m2_reasoning_parser.py +67 -0
  1318. vllm/reasoning/mistral_reasoning_parser.py +55 -0
  1319. vllm/reasoning/olmo3_reasoning_parser.py +302 -0
  1320. vllm/reasoning/qwen3_reasoning_parser.py +67 -0
  1321. vllm/reasoning/seedoss_reasoning_parser.py +27 -0
  1322. vllm/reasoning/step3_reasoning_parser.py +107 -0
  1323. vllm/sampling_params.py +597 -0
  1324. vllm/scalar_type.py +355 -0
  1325. vllm/scripts.py +17 -0
  1326. vllm/sequence.py +98 -0
  1327. vllm/tasks.py +13 -0
  1328. vllm/third_party/__init__.py +0 -0
  1329. vllm/third_party/pynvml.py +6140 -0
  1330. vllm/tokenizers/__init__.py +24 -0
  1331. vllm/tokenizers/detokenizer_utils.py +198 -0
  1332. vllm/tokenizers/hf.py +124 -0
  1333. vllm/tokenizers/mistral.py +554 -0
  1334. vllm/tokenizers/protocol.py +111 -0
  1335. vllm/tokenizers/registry.py +233 -0
  1336. vllm/tracing.py +135 -0
  1337. vllm/transformers_utils/__init__.py +26 -0
  1338. vllm/transformers_utils/chat_templates/__init__.py +5 -0
  1339. vllm/transformers_utils/chat_templates/registry.py +73 -0
  1340. vllm/transformers_utils/chat_templates/template_basic.jinja +3 -0
  1341. vllm/transformers_utils/chat_templates/template_blip2.jinja +11 -0
  1342. vllm/transformers_utils/chat_templates/template_chatml.jinja +10 -0
  1343. vllm/transformers_utils/chat_templates/template_deepseek_ocr.jinja +14 -0
  1344. vllm/transformers_utils/chat_templates/template_deepseek_vl2.jinja +23 -0
  1345. vllm/transformers_utils/chat_templates/template_fuyu.jinja +3 -0
  1346. vllm/transformers_utils/chat_templates/template_minicpmv45.jinja +93 -0
  1347. vllm/transformers_utils/config.py +1081 -0
  1348. vllm/transformers_utils/config_parser_base.py +20 -0
  1349. vllm/transformers_utils/configs/__init__.py +84 -0
  1350. vllm/transformers_utils/configs/afmoe.py +87 -0
  1351. vllm/transformers_utils/configs/arctic.py +216 -0
  1352. vllm/transformers_utils/configs/chatglm.py +75 -0
  1353. vllm/transformers_utils/configs/deepseek_vl2.py +126 -0
  1354. vllm/transformers_utils/configs/dotsocr.py +71 -0
  1355. vllm/transformers_utils/configs/eagle.py +90 -0
  1356. vllm/transformers_utils/configs/falcon.py +89 -0
  1357. vllm/transformers_utils/configs/flex_olmo.py +82 -0
  1358. vllm/transformers_utils/configs/hunyuan_vl.py +322 -0
  1359. vllm/transformers_utils/configs/jais.py +243 -0
  1360. vllm/transformers_utils/configs/kimi_linear.py +148 -0
  1361. vllm/transformers_utils/configs/kimi_vl.py +38 -0
  1362. vllm/transformers_utils/configs/lfm2_moe.py +163 -0
  1363. vllm/transformers_utils/configs/medusa.py +65 -0
  1364. vllm/transformers_utils/configs/midashenglm.py +103 -0
  1365. vllm/transformers_utils/configs/mistral.py +235 -0
  1366. vllm/transformers_utils/configs/mlp_speculator.py +69 -0
  1367. vllm/transformers_utils/configs/moonvit.py +33 -0
  1368. vllm/transformers_utils/configs/nemotron.py +214 -0
  1369. vllm/transformers_utils/configs/nemotron_h.py +282 -0
  1370. vllm/transformers_utils/configs/olmo3.py +83 -0
  1371. vllm/transformers_utils/configs/ovis.py +182 -0
  1372. vllm/transformers_utils/configs/qwen3_next.py +275 -0
  1373. vllm/transformers_utils/configs/radio.py +89 -0
  1374. vllm/transformers_utils/configs/speculators/__init__.py +2 -0
  1375. vllm/transformers_utils/configs/speculators/algos.py +38 -0
  1376. vllm/transformers_utils/configs/speculators/base.py +114 -0
  1377. vllm/transformers_utils/configs/step3_vl.py +178 -0
  1378. vllm/transformers_utils/configs/ultravox.py +118 -0
  1379. vllm/transformers_utils/dynamic_module.py +59 -0
  1380. vllm/transformers_utils/gguf_utils.py +209 -0
  1381. vllm/transformers_utils/processor.py +423 -0
  1382. vllm/transformers_utils/processors/__init__.py +23 -0
  1383. vllm/transformers_utils/processors/deepseek_ocr.py +438 -0
  1384. vllm/transformers_utils/processors/deepseek_vl2.py +406 -0
  1385. vllm/transformers_utils/processors/hunyuan_vl.py +233 -0
  1386. vllm/transformers_utils/processors/hunyuan_vl_image.py +477 -0
  1387. vllm/transformers_utils/processors/ovis.py +453 -0
  1388. vllm/transformers_utils/processors/ovis2_5.py +468 -0
  1389. vllm/transformers_utils/repo_utils.py +287 -0
  1390. vllm/transformers_utils/runai_utils.py +104 -0
  1391. vllm/transformers_utils/s3_utils.py +95 -0
  1392. vllm/transformers_utils/tokenizer.py +127 -0
  1393. vllm/transformers_utils/tokenizer_base.py +33 -0
  1394. vllm/transformers_utils/utils.py +184 -0
  1395. vllm/triton_utils/__init__.py +20 -0
  1396. vllm/triton_utils/importing.py +103 -0
  1397. vllm/usage/__init__.py +0 -0
  1398. vllm/usage/usage_lib.py +294 -0
  1399. vllm/utils/__init__.py +66 -0
  1400. vllm/utils/argparse_utils.py +504 -0
  1401. vllm/utils/async_utils.py +310 -0
  1402. vllm/utils/cache.py +214 -0
  1403. vllm/utils/collection_utils.py +112 -0
  1404. vllm/utils/counter.py +45 -0
  1405. vllm/utils/deep_gemm.py +399 -0
  1406. vllm/utils/flashinfer.py +532 -0
  1407. vllm/utils/func_utils.py +236 -0
  1408. vllm/utils/gc_utils.py +151 -0
  1409. vllm/utils/hashing.py +81 -0
  1410. vllm/utils/import_utils.py +449 -0
  1411. vllm/utils/jsontree.py +158 -0
  1412. vllm/utils/math_utils.py +32 -0
  1413. vllm/utils/mem_constants.py +13 -0
  1414. vllm/utils/mem_utils.py +232 -0
  1415. vllm/utils/nccl.py +64 -0
  1416. vllm/utils/network_utils.py +331 -0
  1417. vllm/utils/platform_utils.py +59 -0
  1418. vllm/utils/profiling.py +56 -0
  1419. vllm/utils/registry.py +51 -0
  1420. vllm/utils/serial_utils.py +169 -0
  1421. vllm/utils/system_utils.py +265 -0
  1422. vllm/utils/tensor_schema.py +255 -0
  1423. vllm/utils/torch_utils.py +647 -0
  1424. vllm/v1/__init__.py +0 -0
  1425. vllm/v1/attention/__init__.py +0 -0
  1426. vllm/v1/attention/backends/__init__.py +0 -0
  1427. vllm/v1/attention/backends/cpu_attn.py +497 -0
  1428. vllm/v1/attention/backends/flash_attn.py +1050 -0
  1429. vllm/v1/attention/backends/flashinfer.py +1572 -0
  1430. vllm/v1/attention/backends/flex_attention.py +945 -0
  1431. vllm/v1/attention/backends/gdn_attn.py +387 -0
  1432. vllm/v1/attention/backends/linear_attn.py +77 -0
  1433. vllm/v1/attention/backends/mamba1_attn.py +165 -0
  1434. vllm/v1/attention/backends/mamba2_attn.py +354 -0
  1435. vllm/v1/attention/backends/mamba_attn.py +117 -0
  1436. vllm/v1/attention/backends/mla/__init__.py +0 -0
  1437. vllm/v1/attention/backends/mla/aiter_triton_mla.py +74 -0
  1438. vllm/v1/attention/backends/mla/common.py +2069 -0
  1439. vllm/v1/attention/backends/mla/cutlass_mla.py +278 -0
  1440. vllm/v1/attention/backends/mla/flashattn_mla.py +340 -0
  1441. vllm/v1/attention/backends/mla/flashinfer_mla.py +174 -0
  1442. vllm/v1/attention/backends/mla/flashmla.py +317 -0
  1443. vllm/v1/attention/backends/mla/flashmla_sparse.py +551 -0
  1444. vllm/v1/attention/backends/mla/indexer.py +369 -0
  1445. vllm/v1/attention/backends/mla/rocm_aiter_mla.py +275 -0
  1446. vllm/v1/attention/backends/mla/rocm_aiter_mla_sparse.py +325 -0
  1447. vllm/v1/attention/backends/mla/triton_mla.py +171 -0
  1448. vllm/v1/attention/backends/pallas.py +436 -0
  1449. vllm/v1/attention/backends/rocm_aiter_fa.py +1000 -0
  1450. vllm/v1/attention/backends/rocm_aiter_unified_attn.py +206 -0
  1451. vllm/v1/attention/backends/rocm_attn.py +359 -0
  1452. vllm/v1/attention/backends/short_conv_attn.py +105 -0
  1453. vllm/v1/attention/backends/tree_attn.py +428 -0
  1454. vllm/v1/attention/backends/triton_attn.py +377 -0
  1455. vllm/v1/attention/backends/utils.py +1149 -0
  1456. vllm/v1/core/__init__.py +0 -0
  1457. vllm/v1/core/block_pool.py +466 -0
  1458. vllm/v1/core/encoder_cache_manager.py +343 -0
  1459. vllm/v1/core/kv_cache_coordinator.py +570 -0
  1460. vllm/v1/core/kv_cache_manager.py +408 -0
  1461. vllm/v1/core/kv_cache_metrics.py +96 -0
  1462. vllm/v1/core/kv_cache_utils.py +1471 -0
  1463. vllm/v1/core/sched/__init__.py +0 -0
  1464. vllm/v1/core/sched/async_scheduler.py +68 -0
  1465. vllm/v1/core/sched/interface.py +187 -0
  1466. vllm/v1/core/sched/output.py +230 -0
  1467. vllm/v1/core/sched/request_queue.py +217 -0
  1468. vllm/v1/core/sched/scheduler.py +1726 -0
  1469. vllm/v1/core/sched/utils.py +72 -0
  1470. vllm/v1/core/single_type_kv_cache_manager.py +801 -0
  1471. vllm/v1/cudagraph_dispatcher.py +183 -0
  1472. vllm/v1/engine/__init__.py +214 -0
  1473. vllm/v1/engine/async_llm.py +874 -0
  1474. vllm/v1/engine/coordinator.py +377 -0
  1475. vllm/v1/engine/core.py +1421 -0
  1476. vllm/v1/engine/core_client.py +1406 -0
  1477. vllm/v1/engine/detokenizer.py +351 -0
  1478. vllm/v1/engine/exceptions.py +18 -0
  1479. vllm/v1/engine/input_processor.py +636 -0
  1480. vllm/v1/engine/llm_engine.py +416 -0
  1481. vllm/v1/engine/logprobs.py +189 -0
  1482. vllm/v1/engine/output_processor.py +658 -0
  1483. vllm/v1/engine/parallel_sampling.py +145 -0
  1484. vllm/v1/engine/processor.py +20 -0
  1485. vllm/v1/engine/utils.py +1068 -0
  1486. vllm/v1/executor/__init__.py +6 -0
  1487. vllm/v1/executor/abstract.py +352 -0
  1488. vllm/v1/executor/multiproc_executor.py +888 -0
  1489. vllm/v1/executor/ray_distributed_executor.py +8 -0
  1490. vllm/v1/executor/ray_executor.py +626 -0
  1491. vllm/v1/executor/ray_utils.py +465 -0
  1492. vllm/v1/executor/uniproc_executor.py +183 -0
  1493. vllm/v1/kv_cache_interface.py +404 -0
  1494. vllm/v1/kv_offload/__init__.py +0 -0
  1495. vllm/v1/kv_offload/abstract.py +161 -0
  1496. vllm/v1/kv_offload/arc_manager.py +237 -0
  1497. vllm/v1/kv_offload/backend.py +97 -0
  1498. vllm/v1/kv_offload/backends/__init__.py +0 -0
  1499. vllm/v1/kv_offload/backends/cpu.py +62 -0
  1500. vllm/v1/kv_offload/cpu.py +86 -0
  1501. vllm/v1/kv_offload/factory.py +56 -0
  1502. vllm/v1/kv_offload/lru_manager.py +139 -0
  1503. vllm/v1/kv_offload/mediums.py +39 -0
  1504. vllm/v1/kv_offload/spec.py +66 -0
  1505. vllm/v1/kv_offload/worker/__init__.py +0 -0
  1506. vllm/v1/kv_offload/worker/cpu_gpu.py +191 -0
  1507. vllm/v1/kv_offload/worker/worker.py +144 -0
  1508. vllm/v1/metrics/__init__.py +0 -0
  1509. vllm/v1/metrics/loggers.py +1268 -0
  1510. vllm/v1/metrics/prometheus.py +82 -0
  1511. vllm/v1/metrics/ray_wrappers.py +194 -0
  1512. vllm/v1/metrics/reader.py +257 -0
  1513. vllm/v1/metrics/stats.py +431 -0
  1514. vllm/v1/outputs.py +237 -0
  1515. vllm/v1/pool/__init__.py +0 -0
  1516. vllm/v1/pool/metadata.py +82 -0
  1517. vllm/v1/request.py +280 -0
  1518. vllm/v1/sample/__init__.py +0 -0
  1519. vllm/v1/sample/logits_processor/__init__.py +352 -0
  1520. vllm/v1/sample/logits_processor/builtin.py +278 -0
  1521. vllm/v1/sample/logits_processor/interface.py +106 -0
  1522. vllm/v1/sample/logits_processor/state.py +165 -0
  1523. vllm/v1/sample/metadata.py +44 -0
  1524. vllm/v1/sample/ops/__init__.py +0 -0
  1525. vllm/v1/sample/ops/bad_words.py +52 -0
  1526. vllm/v1/sample/ops/logprobs.py +25 -0
  1527. vllm/v1/sample/ops/penalties.py +57 -0
  1528. vllm/v1/sample/ops/topk_topp_sampler.py +384 -0
  1529. vllm/v1/sample/rejection_sampler.py +805 -0
  1530. vllm/v1/sample/sampler.py +319 -0
  1531. vllm/v1/sample/tpu/__init__.py +0 -0
  1532. vllm/v1/sample/tpu/metadata.py +120 -0
  1533. vllm/v1/sample/tpu/sampler.py +215 -0
  1534. vllm/v1/serial_utils.py +532 -0
  1535. vllm/v1/spec_decode/__init__.py +0 -0
  1536. vllm/v1/spec_decode/eagle.py +1325 -0
  1537. vllm/v1/spec_decode/medusa.py +73 -0
  1538. vllm/v1/spec_decode/metadata.py +66 -0
  1539. vllm/v1/spec_decode/metrics.py +225 -0
  1540. vllm/v1/spec_decode/ngram_proposer.py +291 -0
  1541. vllm/v1/spec_decode/suffix_decoding.py +101 -0
  1542. vllm/v1/spec_decode/utils.py +121 -0
  1543. vllm/v1/structured_output/__init__.py +338 -0
  1544. vllm/v1/structured_output/backend_guidance.py +265 -0
  1545. vllm/v1/structured_output/backend_lm_format_enforcer.py +177 -0
  1546. vllm/v1/structured_output/backend_outlines.py +324 -0
  1547. vllm/v1/structured_output/backend_types.py +136 -0
  1548. vllm/v1/structured_output/backend_xgrammar.py +362 -0
  1549. vllm/v1/structured_output/request.py +94 -0
  1550. vllm/v1/structured_output/utils.py +469 -0
  1551. vllm/v1/utils.py +414 -0
  1552. vllm/v1/worker/__init__.py +0 -0
  1553. vllm/v1/worker/block_table.py +343 -0
  1554. vllm/v1/worker/cpu_model_runner.py +122 -0
  1555. vllm/v1/worker/cpu_worker.py +210 -0
  1556. vllm/v1/worker/dp_utils.py +250 -0
  1557. vllm/v1/worker/ec_connector_model_runner_mixin.py +87 -0
  1558. vllm/v1/worker/gpu/README.md +4 -0
  1559. vllm/v1/worker/gpu/__init__.py +0 -0
  1560. vllm/v1/worker/gpu/async_utils.py +97 -0
  1561. vllm/v1/worker/gpu/attn_utils.py +189 -0
  1562. vllm/v1/worker/gpu/block_table.py +314 -0
  1563. vllm/v1/worker/gpu/cudagraph_utils.py +259 -0
  1564. vllm/v1/worker/gpu/dp_utils.py +31 -0
  1565. vllm/v1/worker/gpu/input_batch.py +430 -0
  1566. vllm/v1/worker/gpu/model_runner.py +1007 -0
  1567. vllm/v1/worker/gpu/sample/__init__.py +0 -0
  1568. vllm/v1/worker/gpu/sample/gumbel.py +101 -0
  1569. vllm/v1/worker/gpu/sample/logprob.py +167 -0
  1570. vllm/v1/worker/gpu/sample/metadata.py +179 -0
  1571. vllm/v1/worker/gpu/sample/penalties.py +154 -0
  1572. vllm/v1/worker/gpu/sample/sampler.py +75 -0
  1573. vllm/v1/worker/gpu/spec_decode/__init__.py +18 -0
  1574. vllm/v1/worker/gpu/spec_decode/eagle.py +565 -0
  1575. vllm/v1/worker/gpu/spec_decode/eagle_cudagraph.py +115 -0
  1576. vllm/v1/worker/gpu/spec_decode/rejection_sample.py +83 -0
  1577. vllm/v1/worker/gpu/states.py +309 -0
  1578. vllm/v1/worker/gpu/structured_outputs.py +76 -0
  1579. vllm/v1/worker/gpu_input_batch.py +971 -0
  1580. vllm/v1/worker/gpu_model_runner.py +5360 -0
  1581. vllm/v1/worker/gpu_ubatch_wrapper.py +472 -0
  1582. vllm/v1/worker/gpu_worker.py +922 -0
  1583. vllm/v1/worker/kv_connector_model_runner_mixin.py +309 -0
  1584. vllm/v1/worker/lora_model_runner_mixin.py +212 -0
  1585. vllm/v1/worker/tpu_input_batch.py +583 -0
  1586. vllm/v1/worker/tpu_model_runner.py +2196 -0
  1587. vllm/v1/worker/tpu_worker.py +351 -0
  1588. vllm/v1/worker/ubatch_utils.py +73 -0
  1589. vllm/v1/worker/ubatching.py +231 -0
  1590. vllm/v1/worker/utils.py +365 -0
  1591. vllm/v1/worker/worker_base.py +377 -0
  1592. vllm/v1/worker/xpu_model_runner.py +48 -0
  1593. vllm/v1/worker/xpu_worker.py +198 -0
  1594. vllm/version.py +39 -0
  1595. vllm/vllm_flash_attn/.gitkeep +0 -0
  1596. vllm_cpu-0.12.0.dist-info/METADATA +300 -0
  1597. vllm_cpu-0.12.0.dist-info/RECORD +1600 -0
  1598. vllm_cpu-0.12.0.dist-info/WHEEL +5 -0
  1599. vllm_cpu-0.12.0.dist-info/entry_points.txt +5 -0
  1600. vllm_cpu-0.12.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1726 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
+ import itertools
4
+ import time
5
+ from collections import defaultdict
6
+ from collections.abc import Iterable
7
+ from typing import Any
8
+
9
+ from vllm import envs
10
+ from vllm.config import VllmConfig
11
+ from vllm.distributed.ec_transfer.ec_connector.base import (
12
+ ECConnectorMetadata,
13
+ ECConnectorRole,
14
+ )
15
+ from vllm.distributed.ec_transfer.ec_connector.factory import ECConnectorFactory
16
+ from vllm.distributed.kv_events import EventPublisherFactory, KVEventBatch
17
+ from vllm.distributed.kv_transfer.kv_connector.factory import KVConnectorFactory
18
+ from vllm.distributed.kv_transfer.kv_connector.v1 import (
19
+ KVConnectorBase_V1,
20
+ KVConnectorRole,
21
+ SupportsHMA,
22
+ )
23
+ from vllm.distributed.kv_transfer.kv_connector.v1.base import KVConnectorMetadata
24
+ from vllm.distributed.kv_transfer.kv_connector.v1.metrics import KVConnectorStats
25
+ from vllm.logger import init_logger
26
+ from vllm.multimodal import MULTIMODAL_REGISTRY, MultiModalRegistry
27
+ from vllm.v1.core.encoder_cache_manager import (
28
+ EncoderCacheManager,
29
+ compute_encoder_budget,
30
+ )
31
+ from vllm.v1.core.kv_cache_manager import KVCacheBlocks, KVCacheManager
32
+ from vllm.v1.core.kv_cache_metrics import KVCacheMetricsCollector
33
+ from vllm.v1.core.sched.interface import SchedulerInterface
34
+ from vllm.v1.core.sched.output import (
35
+ CachedRequestData,
36
+ GrammarOutput,
37
+ NewRequestData,
38
+ SchedulerOutput,
39
+ )
40
+ from vllm.v1.core.sched.request_queue import SchedulingPolicy, create_request_queue
41
+ from vllm.v1.core.sched.utils import check_stop, remove_all
42
+ from vllm.v1.engine import EngineCoreEventType, EngineCoreOutput, EngineCoreOutputs
43
+ from vllm.v1.kv_cache_interface import KVCacheConfig
44
+ from vllm.v1.metrics.stats import (
45
+ PrefixCacheStats,
46
+ SchedulerStats,
47
+ )
48
+ from vllm.v1.outputs import DraftTokenIds, KVConnectorOutput, ModelRunnerOutput
49
+ from vllm.v1.request import Request, RequestStatus
50
+ from vllm.v1.spec_decode.metrics import SpecDecodingStats
51
+ from vllm.v1.structured_output import StructuredOutputManager
52
+ from vllm.v1.utils import record_function_or_nullcontext
53
+
54
+ logger = init_logger(__name__)
55
+
56
+
57
+ class Scheduler(SchedulerInterface):
58
+ def __init__(
59
+ self,
60
+ vllm_config: VllmConfig,
61
+ kv_cache_config: KVCacheConfig,
62
+ structured_output_manager: StructuredOutputManager,
63
+ block_size: int,
64
+ mm_registry: MultiModalRegistry = MULTIMODAL_REGISTRY,
65
+ include_finished_set: bool = False,
66
+ log_stats: bool = False,
67
+ ) -> None:
68
+ self.vllm_config = vllm_config
69
+ self.scheduler_config = vllm_config.scheduler_config
70
+ self.cache_config = vllm_config.cache_config
71
+ self.lora_config = vllm_config.lora_config
72
+ self.kv_cache_config = kv_cache_config
73
+ self.kv_events_config = vllm_config.kv_events_config
74
+ self.parallel_config = vllm_config.parallel_config
75
+ self.log_stats = log_stats
76
+ self.observability_config = vllm_config.observability_config
77
+ self.kv_metrics_collector: KVCacheMetricsCollector | None = None
78
+ if self.observability_config.kv_cache_metrics:
79
+ self.kv_metrics_collector = KVCacheMetricsCollector(
80
+ self.observability_config.kv_cache_metrics_sample,
81
+ )
82
+ self.structured_output_manager = structured_output_manager
83
+ self.is_encoder_decoder = vllm_config.model_config.is_encoder_decoder
84
+
85
+ # include_finished_set controls whether a separate set of finished
86
+ # request ids should be included in the EngineCoreOutputs returned
87
+ # by update_from_outputs(). This is currently used in the multi-engine
88
+ # case to track request lifetimes efficiently.
89
+ self.finished_req_ids_dict: dict[int, set[str]] | None = (
90
+ defaultdict(set) if include_finished_set else None
91
+ )
92
+ self.prev_step_scheduled_req_ids: set[str] = set()
93
+
94
+ # Scheduling constraints.
95
+ self.max_num_running_reqs = self.scheduler_config.max_num_seqs
96
+ self.max_num_scheduled_tokens = self.scheduler_config.max_num_batched_tokens
97
+ self.max_model_len = vllm_config.model_config.max_model_len
98
+ self.enable_kv_cache_events = (
99
+ self.kv_events_config is not None
100
+ and self.kv_events_config.enable_kv_cache_events
101
+ )
102
+
103
+ # Create KVConnector for the Scheduler. Note that each Worker
104
+ # will have a corresponding KVConnector with Role=WORKER.
105
+ # KV Connector pushes/pull of remote KVs for P/D and offloading.
106
+ self.connector = None
107
+ self.connector_prefix_cache_stats: PrefixCacheStats | None = None
108
+ if self.vllm_config.kv_transfer_config is not None:
109
+ assert not self.is_encoder_decoder, (
110
+ "Encoder-decoder models are not currently supported with KV connectors"
111
+ )
112
+ self.connector = KVConnectorFactory.create_connector(
113
+ config=self.vllm_config,
114
+ role=KVConnectorRole.SCHEDULER,
115
+ kv_cache_config=self.kv_cache_config,
116
+ )
117
+ if self.log_stats:
118
+ self.connector_prefix_cache_stats = PrefixCacheStats()
119
+
120
+ self.kv_event_publisher = EventPublisherFactory.create(
121
+ self.kv_events_config,
122
+ self.parallel_config.data_parallel_rank,
123
+ )
124
+ self.ec_connector = None
125
+ if self.vllm_config.ec_transfer_config is not None:
126
+ self.ec_connector = ECConnectorFactory.create_connector(
127
+ config=self.vllm_config, role=ECConnectorRole.SCHEDULER
128
+ )
129
+
130
+ num_gpu_blocks = self.cache_config.num_gpu_blocks
131
+ assert num_gpu_blocks is not None and num_gpu_blocks > 0
132
+
133
+ self.block_size = block_size
134
+ self.dcp_world_size = vllm_config.parallel_config.decode_context_parallel_size
135
+ self.pcp_world_size = vllm_config.parallel_config.prefill_context_parallel_size
136
+
137
+ # req_id -> Request
138
+ self.requests: dict[str, Request] = {}
139
+ # Scheduling policy
140
+ try:
141
+ self.policy = SchedulingPolicy(self.scheduler_config.policy)
142
+ except ValueError as e:
143
+ raise ValueError(
144
+ f"Unknown scheduling policy: {self.scheduler_config.policy}"
145
+ ) from e
146
+ # Priority queues for requests.
147
+ self.waiting = create_request_queue(self.policy)
148
+ self.running: list[Request] = []
149
+
150
+ # The request IDs that are finished in between the previous and the
151
+ # current steps. This is used to notify the workers about the finished
152
+ # requests so that they can free the cached states for those requests.
153
+ # This is flushed at the end of each scheduling step.
154
+ self.finished_req_ids: set[str] = set()
155
+
156
+ # KV Connector: requests in process of async KV loading or recving
157
+ self.finished_recving_kv_req_ids: set[str] = set()
158
+ self.failed_recving_kv_req_ids: set[str] = set()
159
+
160
+ # Encoder-related.
161
+ # Calculate encoder cache size if applicable
162
+ # NOTE: For now we use the same budget for both compute and space.
163
+ # This can be changed when we make encoder cache for embedding caching
164
+ # across requests.
165
+ encoder_compute_budget, encoder_cache_size = compute_encoder_budget(
166
+ model_config=vllm_config.model_config,
167
+ scheduler_config=vllm_config.scheduler_config,
168
+ mm_registry=mm_registry,
169
+ )
170
+
171
+ # NOTE(woosuk): Here, "encoder" includes the vision encoder (and
172
+ # projector if needed) for MM models as well as encoder-decoder
173
+ # transformers.
174
+ self.max_num_encoder_input_tokens = encoder_compute_budget
175
+ # NOTE: For the models without encoder (e.g., text-only models),
176
+ # the encoder cache will not be initialized because cache size is 0
177
+ # for these models.
178
+ self.encoder_cache_manager = EncoderCacheManager(cache_size=encoder_cache_size)
179
+
180
+ speculative_config = vllm_config.speculative_config
181
+ self.use_eagle = False
182
+ self.num_spec_tokens = self.num_lookahead_tokens = 0
183
+ if speculative_config:
184
+ self.num_spec_tokens = speculative_config.num_speculative_tokens
185
+ if speculative_config.use_eagle():
186
+ self.use_eagle = True
187
+ self.num_lookahead_tokens = self.num_spec_tokens
188
+
189
+ # Create the KV cache manager.
190
+ self.kv_cache_manager = KVCacheManager(
191
+ kv_cache_config=kv_cache_config,
192
+ max_model_len=self.max_model_len,
193
+ enable_caching=self.cache_config.enable_prefix_caching,
194
+ use_eagle=self.use_eagle,
195
+ log_stats=self.log_stats,
196
+ enable_kv_cache_events=self.enable_kv_cache_events,
197
+ dcp_world_size=self.dcp_world_size,
198
+ pcp_world_size=self.pcp_world_size,
199
+ hash_block_size=self.block_size,
200
+ metrics_collector=self.kv_metrics_collector,
201
+ )
202
+ self.use_pp = self.parallel_config.pipeline_parallel_size > 1
203
+ self.use_v2_model_runner = envs.VLLM_USE_V2_MODEL_RUNNER
204
+
205
+ def schedule(self) -> SchedulerOutput:
206
+ # NOTE(woosuk) on the scheduling algorithm:
207
+ # There's no "decoding phase" nor "prefill phase" in the scheduler.
208
+ # Each request just has the num_computed_tokens and
209
+ # num_tokens_with_spec. num_tokens_with_spec =
210
+ # len(prompt_token_ids) + len(output_token_ids) + len(spec_token_ids).
211
+ # At each step, the scheduler tries to assign tokens to the requests
212
+ # so that each request's num_computed_tokens can catch up its
213
+ # num_tokens_with_spec. This is general enough to cover
214
+ # chunked prefills, prefix caching, speculative decoding,
215
+ # and the "jump decoding" optimization in the future.
216
+
217
+ scheduled_new_reqs: list[Request] = []
218
+ scheduled_resumed_reqs: list[Request] = []
219
+ scheduled_running_reqs: list[Request] = []
220
+ preempted_reqs: list[Request] = []
221
+
222
+ req_to_new_blocks: dict[str, KVCacheBlocks] = {}
223
+ num_scheduled_tokens: dict[str, int] = {}
224
+ token_budget = self.max_num_scheduled_tokens
225
+ # Encoder-related.
226
+ scheduled_encoder_inputs: dict[str, list[int]] = {}
227
+ encoder_compute_budget = self.max_num_encoder_input_tokens
228
+ # Spec decode-related.
229
+ scheduled_spec_decode_tokens: dict[str, list[int]] = {}
230
+
231
+ # For logging.
232
+ scheduled_timestamp = time.monotonic()
233
+
234
+ # First, schedule the RUNNING requests.
235
+ req_index = 0
236
+ while req_index < len(self.running) and token_budget > 0:
237
+ request = self.running[req_index]
238
+
239
+ if (
240
+ request.num_output_placeholders > 0
241
+ # This is (num_computed_tokens + 1) - (num_output_placeholders - 1).
242
+ # Since output placeholders are also included in the computed tokens
243
+ # count, we subtract (num_output_placeholders - 1) to remove any draft
244
+ # tokens, so that we can be sure no further steps are needed even if
245
+ # they are all rejected.
246
+ and request.num_computed_tokens + 2 - request.num_output_placeholders
247
+ >= request.num_prompt_tokens + request.max_tokens
248
+ ):
249
+ # Async scheduling: Avoid scheduling an extra step when we are sure that
250
+ # the previous step has reached request.max_tokens. We don't schedule
251
+ # partial draft tokens since this prevents uniform decode optimizations.
252
+ req_index += 1
253
+ continue
254
+
255
+ num_new_tokens = (
256
+ request.num_tokens_with_spec
257
+ + request.num_output_placeholders
258
+ - request.num_computed_tokens
259
+ )
260
+ if 0 < self.scheduler_config.long_prefill_token_threshold < num_new_tokens:
261
+ num_new_tokens = self.scheduler_config.long_prefill_token_threshold
262
+ num_new_tokens = min(num_new_tokens, token_budget)
263
+
264
+ # Make sure the input position does not exceed the max model len.
265
+ # This is necessary when using spec decoding.
266
+ num_new_tokens = min(
267
+ num_new_tokens, self.max_model_len - 1 - request.num_computed_tokens
268
+ )
269
+
270
+ # Schedule encoder inputs.
271
+ encoder_inputs_to_schedule = None
272
+ external_load_encoder_input: list[int] = []
273
+ new_encoder_compute_budget = encoder_compute_budget
274
+ if request.has_encoder_inputs:
275
+ (
276
+ encoder_inputs_to_schedule,
277
+ num_new_tokens,
278
+ new_encoder_compute_budget,
279
+ external_load_encoder_input,
280
+ ) = self._try_schedule_encoder_inputs(
281
+ request,
282
+ request.num_computed_tokens,
283
+ num_new_tokens,
284
+ encoder_compute_budget,
285
+ shift_computed_tokens=1 if self.use_eagle else 0,
286
+ )
287
+
288
+ if num_new_tokens == 0:
289
+ # The request cannot be scheduled because one of the following
290
+ # reasons:
291
+ # 1. No new tokens to schedule. This may happen when
292
+ # (1) PP>1 and we have already scheduled all prompt tokens
293
+ # but they are not finished yet.
294
+ # (2) Async scheduling and the request has reached to either
295
+ # its max_total_tokens or max_model_len.
296
+ # 2. The encoder budget is exhausted.
297
+ # 3. The encoder cache is exhausted.
298
+ # NOTE(woosuk): Here, by doing `continue` instead of `break`,
299
+ # we do not strictly follow the FCFS scheduling policy and
300
+ # allow the lower-priority requests to be scheduled.
301
+ req_index += 1
302
+ continue
303
+
304
+ # Schedule newly needed KV blocks for the request.
305
+ with record_function_or_nullcontext("schedule: allocate_slots"):
306
+ while True:
307
+ new_blocks = self.kv_cache_manager.allocate_slots(
308
+ request,
309
+ num_new_tokens,
310
+ num_lookahead_tokens=self.num_lookahead_tokens,
311
+ )
312
+
313
+ if new_blocks is not None:
314
+ # The request can be scheduled.
315
+ break
316
+
317
+ # The request cannot be scheduled.
318
+ # Preempt the lowest-priority request.
319
+ if self.policy == SchedulingPolicy.PRIORITY:
320
+ preempted_req = max(
321
+ self.running,
322
+ key=lambda r: (r.priority, r.arrival_time),
323
+ )
324
+ self.running.remove(preempted_req)
325
+ if preempted_req in scheduled_running_reqs:
326
+ scheduled_running_reqs.remove(preempted_req)
327
+ token_budget += num_scheduled_tokens[
328
+ preempted_req.request_id
329
+ ]
330
+ req_to_new_blocks.pop(preempted_req.request_id)
331
+ num_scheduled_tokens.pop(preempted_req.request_id)
332
+ scheduled_spec_decode_tokens.pop(
333
+ preempted_req.request_id, None
334
+ )
335
+ preempted_encoder_inputs = scheduled_encoder_inputs.pop(
336
+ preempted_req.request_id, None
337
+ )
338
+ if preempted_encoder_inputs:
339
+ # Restore encoder compute budget if the preempted
340
+ # request had encoder inputs scheduled in this step.
341
+ num_tokens_to_restore = sum(
342
+ preempted_req.get_num_encoder_tokens(i)
343
+ for i in preempted_encoder_inputs
344
+ )
345
+ encoder_compute_budget += num_tokens_to_restore
346
+ req_index -= 1
347
+ else:
348
+ preempted_req = self.running.pop()
349
+
350
+ self._preempt_request(preempted_req, scheduled_timestamp)
351
+ preempted_reqs.append(preempted_req)
352
+ if preempted_req == request:
353
+ # No more request to preempt. Cannot schedule this request.
354
+ break
355
+
356
+ if new_blocks is None:
357
+ # Cannot schedule this request.
358
+ break
359
+
360
+ # Schedule the request.
361
+ scheduled_running_reqs.append(request)
362
+ req_to_new_blocks[request.request_id] = new_blocks
363
+ num_scheduled_tokens[request.request_id] = num_new_tokens
364
+ token_budget -= num_new_tokens
365
+ req_index += 1
366
+
367
+ # Speculative decode related.
368
+ if request.spec_token_ids:
369
+ num_scheduled_spec_tokens = (
370
+ num_new_tokens
371
+ + request.num_computed_tokens
372
+ - request.num_tokens
373
+ - request.num_output_placeholders
374
+ )
375
+ if num_scheduled_spec_tokens > 0:
376
+ # Trim spec_token_ids list to num_scheduled_spec_tokens.
377
+ del request.spec_token_ids[num_scheduled_spec_tokens:]
378
+ scheduled_spec_decode_tokens[request.request_id] = (
379
+ request.spec_token_ids
380
+ )
381
+ # New spec tokens will be set in `update_draft_token_ids` before the
382
+ # next step when applicable.
383
+ request.spec_token_ids = []
384
+
385
+ # Encoder-related.
386
+ if encoder_inputs_to_schedule:
387
+ scheduled_encoder_inputs[request.request_id] = (
388
+ encoder_inputs_to_schedule
389
+ )
390
+ # Allocate the encoder cache.
391
+ for i in encoder_inputs_to_schedule:
392
+ self.encoder_cache_manager.allocate(request, i)
393
+ encoder_compute_budget = new_encoder_compute_budget
394
+ if external_load_encoder_input:
395
+ for i in external_load_encoder_input:
396
+ self.encoder_cache_manager.allocate(request, i)
397
+ if self.ec_connector is not None:
398
+ self.ec_connector.update_state_after_alloc(request, i)
399
+
400
+ # Record the LoRAs in scheduled_running_reqs
401
+ scheduled_loras: set[int] = set()
402
+ if self.lora_config:
403
+ scheduled_loras = set(
404
+ req.lora_request.lora_int_id
405
+ for req in scheduled_running_reqs
406
+ if req.lora_request and req.lora_request.lora_int_id > 0
407
+ )
408
+ assert len(scheduled_loras) <= self.lora_config.max_loras
409
+
410
+ # Use a temporary RequestQueue to collect requests that need to be
411
+ # skipped and put back at the head of the waiting queue later
412
+ skipped_waiting_requests = create_request_queue(self.policy)
413
+
414
+ # Next, schedule the WAITING requests.
415
+ if not preempted_reqs:
416
+ while self.waiting and token_budget > 0:
417
+ if len(self.running) == self.max_num_running_reqs:
418
+ break
419
+
420
+ request = self.waiting.peek_request()
421
+
422
+ # KVTransfer: skip request if still waiting for remote kvs.
423
+ if request.status == RequestStatus.WAITING_FOR_REMOTE_KVS:
424
+ is_ready = self._update_waiting_for_remote_kv(request)
425
+ if is_ready:
426
+ request.status = RequestStatus.WAITING
427
+ else:
428
+ logger.debug(
429
+ "%s is still in WAITING_FOR_REMOTE_KVS state.",
430
+ request.request_id,
431
+ )
432
+ self.waiting.pop_request()
433
+ skipped_waiting_requests.prepend_request(request)
434
+ continue
435
+
436
+ # Skip request if the structured output request is still waiting
437
+ # for FSM compilation.
438
+ if request.status == RequestStatus.WAITING_FOR_FSM:
439
+ structured_output_req = request.structured_output_request
440
+ if structured_output_req and structured_output_req.grammar:
441
+ request.status = RequestStatus.WAITING
442
+ else:
443
+ self.waiting.pop_request()
444
+ skipped_waiting_requests.prepend_request(request)
445
+ continue
446
+
447
+ # Check that adding the request still respects the max_loras
448
+ # constraint.
449
+ if (
450
+ self.lora_config
451
+ and request.lora_request
452
+ and (
453
+ len(scheduled_loras) == self.lora_config.max_loras
454
+ and request.lora_request.lora_int_id not in scheduled_loras
455
+ )
456
+ ):
457
+ # Scheduling would exceed max_loras, skip.
458
+ self.waiting.pop_request()
459
+ skipped_waiting_requests.prepend_request(request)
460
+ continue
461
+
462
+ num_external_computed_tokens = 0
463
+ load_kv_async = False
464
+
465
+ # Get already-cached tokens.
466
+ if request.num_computed_tokens == 0:
467
+ # Get locally-cached tokens.
468
+ new_computed_blocks, num_new_local_computed_tokens = (
469
+ self.kv_cache_manager.get_computed_blocks(request)
470
+ )
471
+
472
+ # Get externally-cached tokens if using a KVConnector.
473
+ if self.connector is not None:
474
+ ext_tokens, load_kv_async = (
475
+ self.connector.get_num_new_matched_tokens(
476
+ request, num_new_local_computed_tokens
477
+ )
478
+ )
479
+
480
+ if ext_tokens is None:
481
+ # The request cannot be scheduled because
482
+ # the KVConnector couldn't determine
483
+ # the number of matched tokens.
484
+ self.waiting.pop_request()
485
+ skipped_waiting_requests.prepend_request(request)
486
+ continue
487
+
488
+ request.num_external_computed_tokens = ext_tokens
489
+ num_external_computed_tokens = ext_tokens
490
+
491
+ # Total computed tokens (local + external).
492
+ num_computed_tokens = (
493
+ num_new_local_computed_tokens + num_external_computed_tokens
494
+ )
495
+ else:
496
+ # KVTransfer: WAITING reqs have num_computed_tokens > 0
497
+ # after async KV recvs are completed.
498
+ new_computed_blocks = self.kv_cache_manager.empty_kv_cache_blocks
499
+ num_new_local_computed_tokens = 0
500
+ num_computed_tokens = request.num_computed_tokens
501
+
502
+ encoder_inputs_to_schedule = None
503
+ external_load_encoder_input = []
504
+ new_encoder_compute_budget = encoder_compute_budget
505
+
506
+ if load_kv_async:
507
+ # KVTransfer: loading remote KV, do not allocate for new work.
508
+ assert num_external_computed_tokens > 0
509
+ num_new_tokens = 0
510
+ else:
511
+ # Number of tokens to be scheduled.
512
+ # We use `request.num_tokens` instead of
513
+ # `request.num_prompt_tokens` to consider the resumed
514
+ # requests, which have output tokens.
515
+ num_new_tokens = request.num_tokens - num_computed_tokens
516
+ threshold = self.scheduler_config.long_prefill_token_threshold
517
+ if 0 < threshold < num_new_tokens:
518
+ num_new_tokens = threshold
519
+
520
+ # chunked prefill has to be enabled explicitly to allow
521
+ # pooling requests to be chunked
522
+ if (
523
+ not self.scheduler_config.enable_chunked_prefill
524
+ and num_new_tokens > token_budget
525
+ ):
526
+ # If chunked_prefill is disabled,
527
+ # we can stop the scheduling here.
528
+ break
529
+
530
+ num_new_tokens = min(num_new_tokens, token_budget)
531
+ assert num_new_tokens > 0
532
+
533
+ # Schedule encoder inputs.
534
+ if request.has_encoder_inputs:
535
+ (
536
+ encoder_inputs_to_schedule,
537
+ num_new_tokens,
538
+ new_encoder_compute_budget,
539
+ external_load_encoder_input,
540
+ ) = self._try_schedule_encoder_inputs(
541
+ request,
542
+ num_computed_tokens,
543
+ num_new_tokens,
544
+ encoder_compute_budget,
545
+ shift_computed_tokens=1 if self.use_eagle else 0,
546
+ )
547
+ if num_new_tokens == 0:
548
+ # The request cannot be scheduled.
549
+ break
550
+
551
+ # Handles an edge case when P/D Disaggregation
552
+ # is used with Spec Decoding where an
553
+ # extra block gets allocated which
554
+ # creates a mismatch between the number
555
+ # of local and remote blocks.
556
+ effective_lookahead_tokens = (
557
+ 0 if request.num_computed_tokens == 0 else self.num_lookahead_tokens
558
+ )
559
+
560
+ # Determine if we need to allocate cross-attention blocks.
561
+ if self.is_encoder_decoder and request.has_encoder_inputs:
562
+ # TODO(russellb): For Whisper, we know that the input is
563
+ # always padded to the maximum length. If we support other
564
+ # encoder-decoder models, this will need to be updated if we
565
+ # want to only allocate what is needed.
566
+ num_encoder_tokens = (
567
+ self.scheduler_config.max_num_encoder_input_tokens
568
+ )
569
+ else:
570
+ num_encoder_tokens = 0
571
+
572
+ new_blocks = self.kv_cache_manager.allocate_slots(
573
+ request,
574
+ num_new_tokens + num_external_computed_tokens,
575
+ num_new_local_computed_tokens,
576
+ new_computed_blocks,
577
+ num_lookahead_tokens=effective_lookahead_tokens,
578
+ delay_cache_blocks=load_kv_async,
579
+ num_encoder_tokens=num_encoder_tokens,
580
+ )
581
+
582
+ if new_blocks is None:
583
+ # The request cannot be scheduled.
584
+ break
585
+
586
+ # KVTransfer: the connector uses this info to determine
587
+ # if a load is needed. Note that
588
+ # This information is used to determine if a load is
589
+ # needed for this request.
590
+ if self.connector is not None:
591
+ self.connector.update_state_after_alloc(
592
+ request,
593
+ new_computed_blocks + new_blocks,
594
+ num_external_computed_tokens,
595
+ )
596
+
597
+ # Request was already popped from self.waiting
598
+ # unless it was re-added above due to new_blocks being None.
599
+ request = self.waiting.pop_request()
600
+ if load_kv_async:
601
+ # If loading async, allocate memory and put request
602
+ # into the WAITING_FOR_REMOTE_KV state.
603
+ skipped_waiting_requests.prepend_request(request)
604
+ request.status = RequestStatus.WAITING_FOR_REMOTE_KVS
605
+ continue
606
+
607
+ self._update_connector_prefix_cache_stats(request)
608
+
609
+ req_index += 1
610
+ self.running.append(request)
611
+ if self.log_stats:
612
+ request.record_event(
613
+ EngineCoreEventType.SCHEDULED, scheduled_timestamp
614
+ )
615
+ if request.status == RequestStatus.WAITING:
616
+ scheduled_new_reqs.append(request)
617
+ elif request.status == RequestStatus.PREEMPTED:
618
+ scheduled_resumed_reqs.append(request)
619
+ else:
620
+ raise RuntimeError(f"Invalid request status: {request.status}")
621
+
622
+ if self.lora_config and request.lora_request:
623
+ scheduled_loras.add(request.lora_request.lora_int_id)
624
+ req_to_new_blocks[request.request_id] = (
625
+ self.kv_cache_manager.get_blocks(request.request_id)
626
+ )
627
+ num_scheduled_tokens[request.request_id] = num_new_tokens
628
+ token_budget -= num_new_tokens
629
+ request.status = RequestStatus.RUNNING
630
+ request.num_computed_tokens = num_computed_tokens
631
+ # Count the number of prefix cached tokens.
632
+ if request.num_cached_tokens < 0:
633
+ request.num_cached_tokens = num_computed_tokens
634
+ # Encoder-related.
635
+ if encoder_inputs_to_schedule:
636
+ scheduled_encoder_inputs[request.request_id] = (
637
+ encoder_inputs_to_schedule
638
+ )
639
+ # Allocate the encoder cache.
640
+ for i in encoder_inputs_to_schedule:
641
+ self.encoder_cache_manager.allocate(request, i)
642
+ encoder_compute_budget = new_encoder_compute_budget
643
+ # Allocate for external load encoder cache
644
+ if external_load_encoder_input:
645
+ for i in external_load_encoder_input:
646
+ self.encoder_cache_manager.allocate(request, i)
647
+ if self.ec_connector is not None:
648
+ self.ec_connector.update_state_after_alloc(request, i)
649
+ # Put back any skipped requests at the head of the waiting queue
650
+ if skipped_waiting_requests:
651
+ self.waiting.prepend_requests(skipped_waiting_requests)
652
+
653
+ # Check if the scheduling constraints are satisfied.
654
+ total_num_scheduled_tokens = sum(num_scheduled_tokens.values())
655
+ assert total_num_scheduled_tokens <= self.max_num_scheduled_tokens
656
+
657
+ assert token_budget >= 0
658
+ assert len(self.running) <= self.max_num_running_reqs
659
+ # Since some requests in the RUNNING queue may not be scheduled in
660
+ # this step, the total number of scheduled requests can be smaller than
661
+ # len(self.running).
662
+ assert len(scheduled_new_reqs) + len(scheduled_resumed_reqs) + len(
663
+ scheduled_running_reqs
664
+ ) <= len(self.running)
665
+
666
+ # Get the longest common prefix among all requests in the running queue.
667
+ # This can be potentially used for cascade attention.
668
+ num_common_prefix_blocks = [0] * len(self.kv_cache_config.kv_cache_groups)
669
+ with record_function_or_nullcontext("schedule: get_num_common_prefix_blocks"):
670
+ if self.running:
671
+ any_request = self.running[0]
672
+ num_common_prefix_blocks = (
673
+ self.kv_cache_manager.get_num_common_prefix_blocks(
674
+ any_request.request_id
675
+ )
676
+ )
677
+
678
+ # Construct the scheduler output.
679
+ if self.use_v2_model_runner:
680
+ scheduled_new_reqs = scheduled_new_reqs + scheduled_resumed_reqs
681
+ scheduled_resumed_reqs = []
682
+ new_reqs_data = [
683
+ NewRequestData.from_request(
684
+ req,
685
+ req_to_new_blocks[req.request_id].get_block_ids(),
686
+ req._all_token_ids,
687
+ )
688
+ for req in scheduled_new_reqs
689
+ ]
690
+ else:
691
+ new_reqs_data = [
692
+ NewRequestData.from_request(
693
+ req, req_to_new_blocks[req.request_id].get_block_ids()
694
+ )
695
+ for req in scheduled_new_reqs
696
+ ]
697
+
698
+ with record_function_or_nullcontext("schedule: make_cached_request_data"):
699
+ cached_reqs_data = self._make_cached_request_data(
700
+ scheduled_running_reqs,
701
+ scheduled_resumed_reqs,
702
+ num_scheduled_tokens,
703
+ scheduled_spec_decode_tokens,
704
+ req_to_new_blocks,
705
+ )
706
+
707
+ # Record the request ids that were scheduled in this step.
708
+ self.prev_step_scheduled_req_ids.clear()
709
+ self.prev_step_scheduled_req_ids.update(num_scheduled_tokens.keys())
710
+
711
+ scheduler_output = SchedulerOutput(
712
+ scheduled_new_reqs=new_reqs_data,
713
+ scheduled_cached_reqs=cached_reqs_data,
714
+ num_scheduled_tokens=num_scheduled_tokens,
715
+ total_num_scheduled_tokens=total_num_scheduled_tokens,
716
+ scheduled_spec_decode_tokens=scheduled_spec_decode_tokens,
717
+ scheduled_encoder_inputs=scheduled_encoder_inputs,
718
+ num_common_prefix_blocks=num_common_prefix_blocks,
719
+ preempted_req_ids={req.request_id for req in preempted_reqs},
720
+ # finished_req_ids is an existing state in the scheduler,
721
+ # instead of being newly scheduled in this step.
722
+ # It contains the request IDs that are finished in between
723
+ # the previous and the current steps.
724
+ finished_req_ids=self.finished_req_ids,
725
+ free_encoder_mm_hashes=self.encoder_cache_manager.get_freed_mm_hashes(),
726
+ )
727
+
728
+ # NOTE(Kuntai): this function is designed for multiple purposes:
729
+ # 1. Plan the KV cache store
730
+ # 2. Wrap up all the KV cache load / save ops into an opaque object
731
+ # 3. Clear the internal states of the connector
732
+ if self.connector is not None:
733
+ meta: KVConnectorMetadata = self.connector.build_connector_meta(
734
+ scheduler_output
735
+ )
736
+ scheduler_output.kv_connector_metadata = meta
737
+
738
+ # Build the connector meta for ECConnector
739
+ if self.ec_connector is not None:
740
+ ec_meta: ECConnectorMetadata = self.ec_connector.build_connector_meta(
741
+ scheduler_output
742
+ )
743
+ scheduler_output.ec_connector_metadata = ec_meta
744
+
745
+ with record_function_or_nullcontext("schedule: update_after_schedule"):
746
+ self._update_after_schedule(scheduler_output)
747
+ return scheduler_output
748
+
749
+ def _preempt_request(
750
+ self,
751
+ request: Request,
752
+ timestamp: float,
753
+ ) -> None:
754
+ """Preempt a request and put it back to the waiting queue.
755
+
756
+ NOTE: The request should be popped from the running queue outside of this
757
+ method.
758
+ """
759
+ assert request.status == RequestStatus.RUNNING, (
760
+ "Only running requests can be preempted"
761
+ )
762
+ self.kv_cache_manager.free(request)
763
+ self.encoder_cache_manager.free(request)
764
+ request.status = RequestStatus.PREEMPTED
765
+ request.num_computed_tokens = 0
766
+ request.num_preemptions += 1
767
+ if self.log_stats:
768
+ request.record_event(EngineCoreEventType.PREEMPTED, timestamp)
769
+
770
+ # Put the request back to the waiting queue.
771
+ self.waiting.prepend_request(request)
772
+
773
+ def _update_after_schedule(
774
+ self,
775
+ scheduler_output: SchedulerOutput,
776
+ ) -> None:
777
+ # Advance the number of computed tokens for the request AFTER
778
+ # the request is scheduled.
779
+ # 1. The scheduler_output of the current step has to include the
780
+ # original number of scheduled tokens to determine input IDs.
781
+ # 2. Advance the number of computed tokens here allowing us to
782
+ # schedule the prefill request again immediately in the next
783
+ # scheduling step.
784
+ # 3. If some tokens (e.g. spec tokens) are rejected later, the number of
785
+ # computed tokens will be adjusted in update_from_output.
786
+ num_scheduled_tokens = scheduler_output.num_scheduled_tokens
787
+ for req_id, num_scheduled_token in num_scheduled_tokens.items():
788
+ request = self.requests[req_id]
789
+ request.num_computed_tokens += num_scheduled_token
790
+
791
+ # NOTE: _free_encoder_inputs relies on num_computed_tokens, which
792
+ # may be updated again in _update_from_output for speculative
793
+ # decoding. However, it is safe to call the method here because
794
+ # encoder inputs are always part of the prompt, not the output,
795
+ # and thus are unaffected by speculative decoding.
796
+ if request.has_encoder_inputs:
797
+ self._free_encoder_inputs(request)
798
+
799
+ # Clear the finished request IDs.
800
+ # NOTE: We shouldn't do self.finished_req_ids.clear() here because
801
+ # it will also affect the scheduler output.
802
+ self.finished_req_ids = set()
803
+
804
+ def _make_cached_request_data(
805
+ self,
806
+ running_reqs: list[Request],
807
+ resumed_reqs: list[Request],
808
+ num_scheduled_tokens: dict[str, int],
809
+ spec_decode_tokens: dict[str, list[int]],
810
+ req_to_new_blocks: dict[str, KVCacheBlocks],
811
+ ) -> CachedRequestData:
812
+ req_ids: list[str] = []
813
+ new_token_ids: list[list[int]] = []
814
+ new_block_ids: list[tuple[list[int], ...] | None] = []
815
+ all_token_ids: dict[str, list[int]] = {}
816
+ num_computed_tokens: list[int] = []
817
+ num_output_tokens: list[int] = []
818
+ resumed_req_ids = set()
819
+
820
+ num_running_reqs = len(running_reqs)
821
+ for idx, req in enumerate(itertools.chain(running_reqs, resumed_reqs)):
822
+ req_id = req.request_id
823
+ req_ids.append(req_id)
824
+ if self.use_pp:
825
+ # When using PP, the scheduler sends the sampled tokens back,
826
+ # because there's no direct communication between the first-
827
+ # stage worker and the last-stage worker. Otherwise, we don't
828
+ # need to send the sampled tokens back because the model runner
829
+ # will cache them.
830
+ num_tokens = num_scheduled_tokens[req_id] - len(
831
+ spec_decode_tokens.get(req_id, ())
832
+ )
833
+ token_ids = req.all_token_ids[
834
+ req.num_computed_tokens : req.num_computed_tokens + num_tokens
835
+ ]
836
+ new_token_ids.append(token_ids)
837
+ scheduled_in_prev_step = req_id in self.prev_step_scheduled_req_ids
838
+ if idx >= num_running_reqs:
839
+ assert not scheduled_in_prev_step
840
+ resumed_req_ids.add(req_id)
841
+ if not scheduled_in_prev_step:
842
+ all_token_ids[req_id] = req.all_token_ids.copy()
843
+ new_block_ids.append(
844
+ req_to_new_blocks[req_id].get_block_ids(allow_none=True)
845
+ )
846
+ num_computed_tokens.append(req.num_computed_tokens)
847
+ num_output_tokens.append(
848
+ req.num_output_tokens + req.num_output_placeholders
849
+ )
850
+
851
+ return CachedRequestData(
852
+ req_ids=req_ids,
853
+ resumed_req_ids=resumed_req_ids,
854
+ new_token_ids=new_token_ids,
855
+ all_token_ids=all_token_ids,
856
+ new_block_ids=new_block_ids,
857
+ num_computed_tokens=num_computed_tokens,
858
+ num_output_tokens=num_output_tokens,
859
+ )
860
+
861
+ def _try_schedule_encoder_inputs(
862
+ self,
863
+ request: Request,
864
+ num_computed_tokens: int,
865
+ num_new_tokens: int,
866
+ encoder_compute_budget: int,
867
+ shift_computed_tokens: int = 0,
868
+ ) -> tuple[list[int], int, int, list[int]]:
869
+ """
870
+ Determine which encoder inputs need to be scheduled in the current step,
871
+ and update `num_new_tokens` and encoder token budget accordingly.
872
+
873
+ An encoder input will be scheduled if:
874
+ - Its output tokens overlap with the range of tokens being computed
875
+ in this step, i.e.,
876
+ [num_computed_tokens, num_computed_tokens + num_new_tokens).
877
+ - It is not already computed and stored in the encoder cache.
878
+ - It is not exist on remote encoder cache (via ECConnector)
879
+ - There is sufficient encoder token budget to process it.
880
+ - The encoder cache has space to store it.
881
+
882
+ If an encoder input cannot be scheduled due to cache or budget
883
+ limitations, the method adjusts `num_new_tokens` to schedule only the
884
+ decoder tokens up to just before the unschedulable encoder input.
885
+
886
+ Note that num_computed_tokens includes both locally cached
887
+ blocks and externally cached blocks (via KVConnector).
888
+ """
889
+ if num_new_tokens == 0 or not request.has_encoder_inputs:
890
+ return [], num_new_tokens, encoder_compute_budget, []
891
+ encoder_inputs_to_schedule: list[int] = []
892
+ mm_features = request.mm_features
893
+ assert mm_features is not None
894
+ assert len(mm_features) > 0
895
+ external_load_encoder_input = []
896
+
897
+ # Check remote cache first
898
+ if self.ec_connector is not None:
899
+ remote_cache_has_item = self.ec_connector.has_caches(request)
900
+ # NOTE: since scheduler operates on the request level (possibly with
901
+ # multiple encoder inputs per request), we need to create temporary
902
+ # trackers for accounting at the encoder input level.
903
+ mm_hashes_to_schedule = set()
904
+ num_tokens_to_schedule = 0
905
+ for i, mm_feature in enumerate(mm_features):
906
+ start_pos = mm_feature.mm_position.offset
907
+ num_encoder_tokens = mm_feature.mm_position.length
908
+
909
+ # The encoder output is needed if the two ranges overlap:
910
+ # [num_computed_tokens, num_computed_tokens + num_new_tokens) and
911
+ # [start_pos, start_pos + num_encoder_tokens)
912
+ if (
913
+ start_pos
914
+ >= num_computed_tokens + num_new_tokens + shift_computed_tokens
915
+ ):
916
+ # The encoder input is not needed in this step.
917
+ break
918
+
919
+ if self.is_encoder_decoder and num_computed_tokens > 0:
920
+ assert start_pos == 0, (
921
+ "Encoder input should be processed at the beginning of "
922
+ "the sequence when encoder-decoder models are used."
923
+ )
924
+ # Encoder input has already been computed
925
+ # The calculation here is a bit different. We don't turn encoder
926
+ # output into tokens that get processed by the decoder and
927
+ # reflected in num_computed_tokens. Instead, start_pos reflects
928
+ # the position where we need to ensure we calculate encoder
929
+ # inputs. This should always be 0 to ensure we calculate encoder
930
+ # inputs before running the decoder. Once we've calculated some
931
+ # decoder tokens (num_computed_tokens > 0), then we know we
932
+ # already calculated encoder inputs and can skip here.
933
+ continue
934
+ elif start_pos + num_encoder_tokens <= num_computed_tokens:
935
+ # The encoder input is already computed and stored
936
+ # in the decoder's KV cache.
937
+ continue
938
+
939
+ if not self.is_encoder_decoder:
940
+ # We are not using the encoder cache for encoder-decoder models,
941
+ # yet.
942
+ if request.mm_features[i].identifier in mm_hashes_to_schedule:
943
+ # The same encoder input has already been scheduled in the
944
+ # current step.
945
+ continue
946
+
947
+ if self.encoder_cache_manager.check_and_update_cache(request, i):
948
+ # The encoder input is already computed and cached from a
949
+ # previous step.
950
+ continue
951
+
952
+ # If no encoder input chunking is allowed, we do not want to
953
+ # partially schedule a multimodal item. If the scheduled range would
954
+ # only cover part of the mm input, roll back to before the mm item.
955
+ if (
956
+ self.scheduler_config.disable_chunked_mm_input
957
+ and num_computed_tokens < start_pos
958
+ and (num_computed_tokens + num_new_tokens)
959
+ < (start_pos + num_encoder_tokens)
960
+ ):
961
+ num_new_tokens = start_pos - num_computed_tokens
962
+ break
963
+
964
+ if not self.encoder_cache_manager.can_allocate(
965
+ request, i, encoder_compute_budget, num_tokens_to_schedule
966
+ ):
967
+ # The encoder cache is full or the encoder budget is exhausted.
968
+ # NOTE(woosuk): We assume that the encoder input tokens should
969
+ # be processed altogether, as the encoder usually uses
970
+ # bidirectional attention.
971
+ if num_computed_tokens + shift_computed_tokens < start_pos:
972
+ # We only schedule the decoder tokens just before the
973
+ # encoder input.
974
+ num_new_tokens = start_pos - (
975
+ num_computed_tokens + shift_computed_tokens
976
+ )
977
+ else:
978
+ # Because of prefix caching, num_computed_tokens is greater
979
+ # than start_pos even though its encoder input is not
980
+ # available. In this case, we can't schedule any token for
981
+ # the request in this step.
982
+ num_new_tokens = 0
983
+ break
984
+
985
+ if self.ec_connector is not None and remote_cache_has_item[i]:
986
+ mm_hashes_to_schedule.add(request.mm_features[i].identifier)
987
+ external_load_encoder_input.append(i)
988
+ num_tokens_to_schedule += num_encoder_tokens
989
+ continue
990
+
991
+ num_tokens_to_schedule += num_encoder_tokens
992
+ encoder_compute_budget -= num_encoder_tokens
993
+ mm_hashes_to_schedule.add(request.mm_features[i].identifier)
994
+ encoder_inputs_to_schedule.append(i)
995
+
996
+ return (
997
+ encoder_inputs_to_schedule,
998
+ num_new_tokens,
999
+ encoder_compute_budget,
1000
+ external_load_encoder_input,
1001
+ )
1002
+
1003
+ def get_grammar_bitmask(
1004
+ self,
1005
+ scheduler_output: SchedulerOutput,
1006
+ ) -> GrammarOutput | None:
1007
+ # Collect list of scheduled request ids that use structured output.
1008
+ # The corresponding rows of the bitmask will be in this order.
1009
+ # PERF: in case of chunked prefill,
1010
+ # request might not include any new tokens.
1011
+ # Therefore, we might introduce some additional
1012
+ # cycle to fill in the bitmask, which could be a big no-op.
1013
+ structured_output_request_ids = [
1014
+ req_id
1015
+ for req_id in scheduler_output.num_scheduled_tokens
1016
+ if (req := self.requests.get(req_id)) and req.use_structured_output
1017
+ ]
1018
+ if not structured_output_request_ids:
1019
+ return None
1020
+
1021
+ bitmask = self.structured_output_manager.grammar_bitmask(
1022
+ self.requests,
1023
+ structured_output_request_ids,
1024
+ scheduler_output.scheduled_spec_decode_tokens,
1025
+ )
1026
+ return GrammarOutput(structured_output_request_ids, bitmask)
1027
+
1028
+ def update_from_output(
1029
+ self,
1030
+ scheduler_output: SchedulerOutput,
1031
+ model_runner_output: ModelRunnerOutput,
1032
+ ) -> dict[int, EngineCoreOutputs]:
1033
+ sampled_token_ids = model_runner_output.sampled_token_ids
1034
+ logprobs = model_runner_output.logprobs
1035
+ prompt_logprobs_dict = model_runner_output.prompt_logprobs_dict
1036
+ num_scheduled_tokens = scheduler_output.num_scheduled_tokens
1037
+ pooler_outputs = model_runner_output.pooler_output
1038
+ num_nans_in_logits = model_runner_output.num_nans_in_logits
1039
+ kv_connector_output = model_runner_output.kv_connector_output
1040
+
1041
+ outputs: dict[int, list[EngineCoreOutput]] = defaultdict(list)
1042
+ spec_decoding_stats: SpecDecodingStats | None = None
1043
+ kv_connector_stats: KVConnectorStats | None = (
1044
+ kv_connector_output.kv_connector_stats if kv_connector_output else None
1045
+ )
1046
+ if kv_connector_stats and self.connector:
1047
+ kv_stats = self.connector.get_kv_connector_stats()
1048
+ if kv_stats:
1049
+ kv_connector_stats = kv_connector_stats.aggregate(kv_stats)
1050
+
1051
+ failed_kv_load_req_ids = None
1052
+ if kv_connector_output and kv_connector_output.invalid_block_ids:
1053
+ # These blocks contain externally computed tokens that failed to
1054
+ # load. Identify affected requests and adjust their computed token
1055
+ # count to trigger recomputation of the invalid blocks.
1056
+ failed_kv_load_req_ids = self._handle_invalid_blocks(
1057
+ kv_connector_output.invalid_block_ids
1058
+ )
1059
+
1060
+ # NOTE(woosuk): As len(num_scheduled_tokens) can be up to 1K or more,
1061
+ # the below loop can be a performance bottleneck. We should do our best
1062
+ # to avoid expensive operations inside the loop.
1063
+ stopped_running_reqs: set[Request] = set()
1064
+ stopped_preempted_reqs: set[Request] = set()
1065
+ for req_id, num_tokens_scheduled in num_scheduled_tokens.items():
1066
+ assert num_tokens_scheduled > 0
1067
+ if failed_kv_load_req_ids and req_id in failed_kv_load_req_ids:
1068
+ # Skip requests that were recovered from KV load failure
1069
+ continue
1070
+ request = self.requests.get(req_id)
1071
+ if request is None:
1072
+ # The request is already finished. This can happen if the
1073
+ # request is aborted while the model is executing it (e.g.,
1074
+ # in pipeline parallelism).
1075
+ continue
1076
+
1077
+ req_index = model_runner_output.req_id_to_index[req_id]
1078
+ generated_token_ids = (
1079
+ sampled_token_ids[req_index] if sampled_token_ids else []
1080
+ )
1081
+
1082
+ scheduled_spec_token_ids = (
1083
+ scheduler_output.scheduled_spec_decode_tokens.get(req_id)
1084
+ )
1085
+ if scheduled_spec_token_ids:
1086
+ num_draft_tokens = len(scheduled_spec_token_ids)
1087
+ num_accepted = len(generated_token_ids) - 1
1088
+ num_rejected = num_draft_tokens - num_accepted
1089
+ # num_computed_tokens represents the number of tokens
1090
+ # processed in the current step, considering scheduled
1091
+ # tokens and rejections. If some tokens are rejected,
1092
+ # num_computed_tokens is decreased by the number of rejected
1093
+ # tokens.
1094
+ if request.num_computed_tokens > 0:
1095
+ request.num_computed_tokens -= num_rejected
1096
+ # If async scheduling, num_output_placeholders also includes
1097
+ # the scheduled spec tokens count and so is similarly adjusted.
1098
+ if request.num_output_placeholders > 0:
1099
+ request.num_output_placeholders -= num_rejected
1100
+ spec_decoding_stats = self.make_spec_decoding_stats(
1101
+ spec_decoding_stats,
1102
+ num_draft_tokens=num_draft_tokens,
1103
+ num_accepted_tokens=num_accepted,
1104
+ )
1105
+
1106
+ stopped = False
1107
+ new_logprobs = None
1108
+ new_token_ids = generated_token_ids
1109
+ kv_transfer_params = None
1110
+ status_before_stop = request.status
1111
+
1112
+ # Check for stop and update request status.
1113
+ if new_token_ids:
1114
+ new_token_ids, stopped = self._update_request_with_output(
1115
+ request, new_token_ids
1116
+ )
1117
+
1118
+ # Stop checking for pooler models.
1119
+ pooler_output = None
1120
+ if pooler_outputs:
1121
+ pooler_output = pooler_outputs[req_index]
1122
+ stopped = check_stop(request, self.max_model_len, pooler_output)
1123
+
1124
+ if stopped:
1125
+ kv_transfer_params = self._free_request(request)
1126
+ if status_before_stop == RequestStatus.RUNNING:
1127
+ stopped_running_reqs.add(request)
1128
+ else:
1129
+ stopped_preempted_reqs.add(request)
1130
+
1131
+ # Extract sample logprobs if needed.
1132
+ if (
1133
+ request.sampling_params is not None
1134
+ and request.sampling_params.logprobs is not None
1135
+ and logprobs
1136
+ ):
1137
+ new_logprobs = logprobs.slice_request(req_index, len(new_token_ids))
1138
+
1139
+ if new_token_ids and self.structured_output_manager.should_advance(request):
1140
+ struct_output_request = request.structured_output_request
1141
+ assert struct_output_request is not None
1142
+ assert struct_output_request.grammar is not None
1143
+ struct_output_request.grammar.accept_tokens(req_id, new_token_ids)
1144
+
1145
+ if num_nans_in_logits is not None and req_id in num_nans_in_logits:
1146
+ request.num_nans_in_logits = num_nans_in_logits[req_id]
1147
+
1148
+ # Get prompt logprobs for this request.
1149
+ prompt_logprobs_tensors = prompt_logprobs_dict.get(req_id)
1150
+ if new_token_ids or pooler_output is not None or kv_transfer_params:
1151
+ # Add EngineCoreOutput for this Request.
1152
+ outputs[request.client_index].append(
1153
+ EngineCoreOutput(
1154
+ request_id=req_id,
1155
+ new_token_ids=new_token_ids,
1156
+ finish_reason=request.get_finished_reason(),
1157
+ new_logprobs=new_logprobs,
1158
+ new_prompt_logprobs_tensors=prompt_logprobs_tensors,
1159
+ pooling_output=pooler_output,
1160
+ stop_reason=request.stop_reason,
1161
+ events=request.take_events(),
1162
+ kv_transfer_params=kv_transfer_params,
1163
+ trace_headers=request.trace_headers,
1164
+ num_cached_tokens=request.num_cached_tokens,
1165
+ num_nans_in_logits=request.num_nans_in_logits,
1166
+ )
1167
+ )
1168
+ else:
1169
+ # Invariant: EngineCore returns no partial prefill outputs.
1170
+ assert not prompt_logprobs_tensors
1171
+
1172
+ # Remove the stopped requests from the running and waiting queues.
1173
+ if stopped_running_reqs:
1174
+ self.running = remove_all(self.running, stopped_running_reqs)
1175
+ if stopped_preempted_reqs:
1176
+ # This is a rare case and unlikely to impact performance.
1177
+ self.waiting.remove_requests(stopped_preempted_reqs)
1178
+
1179
+ # KV Connector: update state for finished KV Transfers.
1180
+ if kv_connector_output:
1181
+ self._update_from_kv_xfer_finished(kv_connector_output)
1182
+
1183
+ # collect KV cache events from KV cache manager
1184
+ events = self.kv_cache_manager.take_events()
1185
+
1186
+ # collect KV cache events from connector
1187
+ if self.connector is not None:
1188
+ connector_events = self.connector.take_events()
1189
+ if connector_events:
1190
+ if events is None:
1191
+ events = list(connector_events)
1192
+ else:
1193
+ events.extend(connector_events)
1194
+
1195
+ # publish collected KV cache events
1196
+ if events:
1197
+ batch = KVEventBatch(ts=time.time(), events=events)
1198
+ self.kv_event_publisher.publish(batch)
1199
+
1200
+ # Create EngineCoreOutputs for all clients that have requests with
1201
+ # outputs in this step.
1202
+ engine_core_outputs = {
1203
+ client_index: EngineCoreOutputs(outputs=outs)
1204
+ for client_index, outs in outputs.items()
1205
+ }
1206
+
1207
+ finished_req_ids = self.finished_req_ids_dict
1208
+ if finished_req_ids:
1209
+ # Include ids of requests that finished since last outputs
1210
+ # were sent.
1211
+ for client_index, finished_set in finished_req_ids.items():
1212
+ # Set finished request set in EngineCoreOutputs for this client.
1213
+ if (eco := engine_core_outputs.get(client_index)) is not None:
1214
+ eco.finished_requests = finished_set
1215
+ else:
1216
+ engine_core_outputs[client_index] = EngineCoreOutputs(
1217
+ finished_requests=finished_set
1218
+ )
1219
+ finished_req_ids.clear()
1220
+
1221
+ if (
1222
+ stats := self.make_stats(spec_decoding_stats, kv_connector_stats)
1223
+ ) is not None:
1224
+ # Return stats to only one of the front-ends.
1225
+ if (eco := next(iter(engine_core_outputs.values()), None)) is None:
1226
+ # We must return the stats even if there are no request
1227
+ # outputs this step.
1228
+ engine_core_outputs[0] = eco = EngineCoreOutputs()
1229
+ eco.scheduler_stats = stats
1230
+
1231
+ return engine_core_outputs
1232
+
1233
+ def _update_request_with_output(
1234
+ self,
1235
+ request: Request,
1236
+ new_token_ids: list[int],
1237
+ ) -> tuple[list[int], bool]:
1238
+ # Append generated tokens and check for stop. Note that if
1239
+ # a request is still being prefilled, we expect the model runner
1240
+ # to return empty token ids for the request.
1241
+ stopped = False
1242
+ for num_new, output_token_id in enumerate(new_token_ids, 1):
1243
+ request.append_output_token_ids(output_token_id)
1244
+
1245
+ # Check for stop and update request state.
1246
+ # This must be called before we make the EngineCoreOutput.
1247
+ stopped = check_stop(request, self.max_model_len)
1248
+ if stopped:
1249
+ del new_token_ids[num_new:] # Trim new tokens if needed.
1250
+ break
1251
+ return new_token_ids, stopped
1252
+
1253
+ def _free_encoder_inputs(self, request: Request) -> None:
1254
+ cached_encoder_input_ids = self.encoder_cache_manager.get_cached_input_ids(
1255
+ request
1256
+ )
1257
+ # OPTIMIZATION: Avoid list(set) if the set is empty.
1258
+ if not cached_encoder_input_ids:
1259
+ return
1260
+
1261
+ # Here, we use list(set) to avoid modifying the set while iterating
1262
+ # over it.
1263
+ for input_id in list(cached_encoder_input_ids):
1264
+ mm_feature = request.mm_features[input_id]
1265
+ start_pos = mm_feature.mm_position.offset
1266
+ num_tokens = mm_feature.mm_position.length
1267
+ if self.is_encoder_decoder and request.num_computed_tokens > 0:
1268
+ # With Whisper, as soon as we've generated a single token,
1269
+ # we know we're done with the encoder input. Cross Attention
1270
+ # KVs have been calculated and cached already.
1271
+ self.encoder_cache_manager.free_encoder_input(request, input_id)
1272
+ elif start_pos + num_tokens <= request.num_computed_tokens:
1273
+ # The encoder output is already processed and stored
1274
+ # in the decoder's KV cache.
1275
+ self.encoder_cache_manager.free_encoder_input(request, input_id)
1276
+
1277
+ def update_draft_token_ids(
1278
+ self,
1279
+ draft_token_ids: DraftTokenIds,
1280
+ ) -> None:
1281
+ for req_id, spec_token_ids in zip(
1282
+ draft_token_ids.req_ids,
1283
+ draft_token_ids.draft_token_ids,
1284
+ ):
1285
+ request = self.requests.get(req_id)
1286
+ if request is None or request.is_finished():
1287
+ # The request may have been finished. Skip.
1288
+ continue
1289
+
1290
+ # Add newly generated spec token ids to the request.
1291
+ if self.structured_output_manager.should_advance(request):
1292
+ metadata = request.structured_output_request
1293
+ request.spec_token_ids = metadata.grammar.validate_tokens( # type: ignore[union-attr]
1294
+ spec_token_ids
1295
+ )
1296
+ else:
1297
+ request.spec_token_ids = spec_token_ids
1298
+
1299
+ def get_request_counts(self) -> tuple[int, int]:
1300
+ """Returns (num_running_reqs, num_waiting_reqs)."""
1301
+ return len(self.running), len(self.waiting)
1302
+
1303
+ def add_request(self, request: Request) -> None:
1304
+ self.waiting.add_request(request)
1305
+ self.requests[request.request_id] = request
1306
+ if self.log_stats:
1307
+ request.record_event(EngineCoreEventType.QUEUED)
1308
+
1309
+ def finish_requests(
1310
+ self,
1311
+ request_ids: str | Iterable[str],
1312
+ finished_status: RequestStatus,
1313
+ ) -> None:
1314
+ """Handles the finish signal from outside the scheduler.
1315
+
1316
+ For example, the API server can abort a request when the client
1317
+ disconnects.
1318
+ """
1319
+ assert RequestStatus.is_finished(finished_status)
1320
+ if isinstance(request_ids, str):
1321
+ request_ids = (request_ids,)
1322
+ else:
1323
+ request_ids = set(request_ids)
1324
+
1325
+ running_requests_to_remove = set()
1326
+ waiting_requests_to_remove = []
1327
+ valid_requests = []
1328
+
1329
+ # First pass: collect requests to remove from queues
1330
+ for req_id in request_ids:
1331
+ request = self.requests.get(req_id)
1332
+ if request is None or request.is_finished():
1333
+ # Invalid request ID.
1334
+ continue
1335
+
1336
+ valid_requests.append(request)
1337
+ if request.status == RequestStatus.RUNNING:
1338
+ running_requests_to_remove.add(request)
1339
+ else:
1340
+ waiting_requests_to_remove.append(request)
1341
+
1342
+ # Remove all requests from queues at once for better efficiency
1343
+ if running_requests_to_remove:
1344
+ self.running = remove_all(self.running, running_requests_to_remove)
1345
+ if waiting_requests_to_remove:
1346
+ self.waiting.remove_requests(waiting_requests_to_remove)
1347
+
1348
+ # Second pass: set status and free requests
1349
+ for request in valid_requests:
1350
+ request.status = finished_status
1351
+ self._free_request(request)
1352
+
1353
+ def _free_request(self, request: Request) -> dict[str, Any] | None:
1354
+ assert request.is_finished()
1355
+
1356
+ delay_free_blocks, kv_xfer_params = self._connector_finished(request)
1357
+ self.encoder_cache_manager.free(request)
1358
+ request_id = request.request_id
1359
+ self.finished_req_ids.add(request_id)
1360
+ if self.finished_req_ids_dict is not None:
1361
+ self.finished_req_ids_dict[request.client_index].add(request_id)
1362
+
1363
+ if not delay_free_blocks:
1364
+ self._free_blocks(request)
1365
+
1366
+ return kv_xfer_params
1367
+
1368
+ def _free_blocks(self, request: Request):
1369
+ assert request.is_finished()
1370
+ self.kv_cache_manager.free(request)
1371
+ del self.requests[request.request_id]
1372
+
1373
+ def get_num_unfinished_requests(self) -> int:
1374
+ return len(self.waiting) + len(self.running)
1375
+
1376
+ def has_finished_requests(self) -> bool:
1377
+ return len(self.finished_req_ids) > 0
1378
+
1379
+ def reset_prefix_cache(self, reset_running_requests: bool = False) -> bool:
1380
+ """Reset the KV prefix cache.
1381
+
1382
+ If reset_running_requests is True, all the running requests will be
1383
+ preempted and moved to the waiting queue.
1384
+ Otherwise, this method will only reset the KV prefix cache when there
1385
+ is no running requests taking KV cache.
1386
+ """
1387
+ if reset_running_requests:
1388
+ # For logging.
1389
+ timestamp = time.monotonic()
1390
+ # Invalidate all the current running requests KV's by pushing them to
1391
+ # the waiting queue. In this case, we can reduce the ref count of all
1392
+ # the kv blocks to 0 and thus we can make sure the reset is successful.
1393
+ # Preempt in reverse order so the requests will be added back to the
1394
+ # running queue in FIFO order.
1395
+ while self.running:
1396
+ request = self.running.pop()
1397
+ self._preempt_request(request, timestamp)
1398
+ # NOTE(zhuohan): For async scheduling, we need to discard the latest
1399
+ # output token on the fly to avoid a redundant repetitive output token.
1400
+ request.num_output_placeholders = 0
1401
+ request.discard_latest_async_tokens = True
1402
+
1403
+ # Clear scheduled request ids cache. Since we are forcing preemption
1404
+ # + resumption in the same step, we must act as if these requests were
1405
+ # not scheduled in the prior step. They will be flushed from the
1406
+ # persistent batch in the model runner.
1407
+ self.prev_step_scheduled_req_ids.clear()
1408
+
1409
+ reset_successful = self.kv_cache_manager.reset_prefix_cache()
1410
+ if reset_running_requests and not reset_successful:
1411
+ raise RuntimeError(
1412
+ "Failed to reset KV cache even when all the running requests are "
1413
+ "preempted and moved to the waiting queue. This is likely due to "
1414
+ "the presence of running requests waiting for remote KV transfer, "
1415
+ "which is not supported yet."
1416
+ )
1417
+ return reset_successful
1418
+
1419
+ def make_stats(
1420
+ self,
1421
+ spec_decoding_stats: SpecDecodingStats | None = None,
1422
+ kv_connector_stats: KVConnectorStats | None = None,
1423
+ ) -> SchedulerStats | None:
1424
+ if not self.log_stats:
1425
+ return None
1426
+ prefix_cache_stats = self.kv_cache_manager.make_prefix_cache_stats()
1427
+ assert prefix_cache_stats is not None
1428
+ connector_prefix_cache_stats = self._make_connector_prefix_cache_stats()
1429
+ eviction_events = (
1430
+ self.kv_metrics_collector.drain_events()
1431
+ if self.kv_metrics_collector is not None
1432
+ else []
1433
+ )
1434
+ spec_stats = spec_decoding_stats
1435
+ connector_stats_payload = (
1436
+ kv_connector_stats.data if kv_connector_stats else None
1437
+ )
1438
+ return SchedulerStats(
1439
+ num_running_reqs=len(self.running),
1440
+ num_waiting_reqs=len(self.waiting),
1441
+ kv_cache_usage=self.kv_cache_manager.usage,
1442
+ prefix_cache_stats=prefix_cache_stats,
1443
+ connector_prefix_cache_stats=connector_prefix_cache_stats,
1444
+ kv_cache_eviction_events=eviction_events,
1445
+ spec_decoding_stats=spec_stats,
1446
+ kv_connector_stats=connector_stats_payload,
1447
+ )
1448
+
1449
+ def make_spec_decoding_stats(
1450
+ self,
1451
+ spec_decoding_stats: SpecDecodingStats | None,
1452
+ num_draft_tokens: int,
1453
+ num_accepted_tokens: int,
1454
+ ) -> SpecDecodingStats | None:
1455
+ if not self.log_stats:
1456
+ return None
1457
+ if spec_decoding_stats is None:
1458
+ spec_decoding_stats = SpecDecodingStats.new(self.num_spec_tokens)
1459
+ spec_decoding_stats.observe_draft(
1460
+ num_draft_tokens=num_draft_tokens, num_accepted_tokens=num_accepted_tokens
1461
+ )
1462
+ return spec_decoding_stats
1463
+
1464
+ def shutdown(self) -> None:
1465
+ if self.kv_event_publisher:
1466
+ self.kv_event_publisher.shutdown()
1467
+ if self.connector is not None:
1468
+ self.connector.shutdown()
1469
+
1470
+ ########################################################################
1471
+ # KV Connector Related Methods
1472
+ ########################################################################
1473
+
1474
+ def _update_connector_prefix_cache_stats(self, request: Request) -> None:
1475
+ if self.connector_prefix_cache_stats is None:
1476
+ return
1477
+
1478
+ self.connector_prefix_cache_stats.record(
1479
+ num_tokens=request.num_tokens,
1480
+ num_hits=request.num_external_computed_tokens,
1481
+ preempted=request.num_preemptions > 0,
1482
+ )
1483
+
1484
+ def _make_connector_prefix_cache_stats(self) -> PrefixCacheStats | None:
1485
+ if self.connector_prefix_cache_stats is None:
1486
+ return None
1487
+ stats = self.connector_prefix_cache_stats
1488
+ self.connector_prefix_cache_stats = PrefixCacheStats()
1489
+ return stats
1490
+
1491
+ def get_kv_connector(self) -> KVConnectorBase_V1 | None:
1492
+ return self.connector
1493
+
1494
+ def _connector_finished(
1495
+ self, request: Request
1496
+ ) -> tuple[bool, dict[str, Any] | None]:
1497
+ """
1498
+ Invoke the KV connector request_finished() method if applicable.
1499
+
1500
+ Returns optional kv transfer parameters to be included with the
1501
+ request outputs.
1502
+ """
1503
+ if self.connector is None:
1504
+ return False, None
1505
+
1506
+ block_ids = self.kv_cache_manager.get_block_ids(request.request_id)
1507
+
1508
+ if not isinstance(self.connector, SupportsHMA):
1509
+ # NOTE(Kuntai): We should deprecate this code path after we enforce
1510
+ # all connectors to support HMA.
1511
+ # Hybrid memory allocator should be already turned off for this
1512
+ # code path, but let's double-check here.
1513
+ assert len(self.kv_cache_config.kv_cache_groups) == 1
1514
+ return self.connector.request_finished(request, block_ids[0])
1515
+
1516
+ return self.connector.request_finished_all_groups(request, block_ids)
1517
+
1518
+ def _update_waiting_for_remote_kv(self, request: Request) -> bool:
1519
+ """
1520
+ KV Connector: check if the request_id is finished_recving.
1521
+
1522
+ The finished_recving_kv_req_ids list is populated
1523
+ on the previous steps()'s update_from_output based
1524
+ on the worker side connector.
1525
+
1526
+ When the kv transfer is ready, we cache the blocks
1527
+ and the request state will be moved back to WAITING from
1528
+ WAITING_FOR_REMOTE_KV.
1529
+ """
1530
+ assert self.connector is not None
1531
+ if request.request_id not in self.finished_recving_kv_req_ids:
1532
+ return False
1533
+
1534
+ if request.request_id in self.failed_recving_kv_req_ids:
1535
+ # Request had KV load failures; num_computed_tokens was already
1536
+ # updated in _update_requests_with_invalid_blocks
1537
+ if request.num_computed_tokens:
1538
+ # Cache any valid computed tokens.
1539
+ self.kv_cache_manager.cache_blocks(request, request.num_computed_tokens)
1540
+ else:
1541
+ # No valid computed tokens, release allocated blocks.
1542
+ # There may be a local cache hit on retry.
1543
+ self.kv_cache_manager.free(request)
1544
+
1545
+ self.failed_recving_kv_req_ids.remove(request.request_id)
1546
+ else:
1547
+ # Now that the blocks are ready, actually cache them.
1548
+ (block_ids,) = self.kv_cache_manager.get_block_ids(request.request_id)
1549
+ num_computed_tokens = len(block_ids) * self.block_size
1550
+ # Handle the case where num request tokens less than one block.
1551
+ num_computed_tokens = min(num_computed_tokens, request.num_tokens)
1552
+ if num_computed_tokens == request.num_tokens:
1553
+ num_computed_tokens -= 1
1554
+ # This will cache the blocks iff caching is enabled.
1555
+ self.kv_cache_manager.cache_blocks(request, num_computed_tokens)
1556
+
1557
+ # Update the request state for scheduling.
1558
+ request.num_computed_tokens = num_computed_tokens
1559
+
1560
+ # Return that we are ready.
1561
+ self.finished_recving_kv_req_ids.remove(request.request_id)
1562
+ return True
1563
+
1564
+ def _update_from_kv_xfer_finished(self, kv_connector_output: KVConnectorOutput):
1565
+ """
1566
+ KV Connector: update the scheduler state based on the output.
1567
+
1568
+ The Worker side connectors add finished_recving and
1569
+ finished_sending reqs to the output.
1570
+ * if finished_sending: free the blocks
1571
+ # if finished_recving: add to state so we can
1572
+ schedule the request during the next step.
1573
+ """
1574
+
1575
+ if self.connector is not None:
1576
+ self.connector.update_connector_output(kv_connector_output)
1577
+
1578
+ # KV Connector:: update recv and send status from last step.
1579
+ for req_id in kv_connector_output.finished_recving or ():
1580
+ logger.debug("Finished recving KV transfer for request %s", req_id)
1581
+ self.finished_recving_kv_req_ids.add(req_id)
1582
+ for req_id in kv_connector_output.finished_sending or ():
1583
+ logger.debug("Finished sending KV transfer for request %s", req_id)
1584
+ assert req_id in self.requests
1585
+ self._free_blocks(self.requests[req_id])
1586
+
1587
+ def _update_requests_with_invalid_blocks(
1588
+ self, requests: Iterable[Request], invalid_block_ids: set[int]
1589
+ ) -> tuple[set[str], int]:
1590
+ """
1591
+ Identify and update requests affected by invalid KV cache blocks.
1592
+
1593
+ This method scans the given requests, detects those with invalid blocks
1594
+ and adjusts their `num_computed_tokens` to the longest valid prefix.
1595
+ For observability, it also accumulates the total number of tokens that
1596
+ will need to be recomputed across all affected requests.
1597
+
1598
+ Args:
1599
+ requests: The set of requests to scan for invalid blocks.
1600
+ invalid_block_ids: IDs of invalid blocks.
1601
+
1602
+ Returns:
1603
+ tuple:
1604
+ - affected_req_ids (set[str]): IDs of requests impacted by
1605
+ invalid blocks.
1606
+ - total_affected_tokens (int): Total number of tokens that must
1607
+ be recomputed across all affected requests (for observability).
1608
+ """
1609
+ affected_req_ids: set[str] = set()
1610
+ total_affected_tokens = 0
1611
+ # If a block is invalid and shared by multiple requests in the batch,
1612
+ # these requests must be rescheduled, but only the first will recompute
1613
+ # it. This set tracks blocks already marked for recomputation.
1614
+ marked_invalid_block_ids: set[int] = set()
1615
+ for request in requests:
1616
+ is_affected = False
1617
+ marked_invalid_block = False
1618
+ req_id = request.request_id
1619
+ # TODO (davidb): add support for hybrid memory allocator
1620
+ (req_block_ids,) = self.kv_cache_manager.get_block_ids(req_id)
1621
+ # We iterate only over blocks that may contain externally computed
1622
+ # tokens
1623
+ if request.status == RequestStatus.WAITING_FOR_REMOTE_KVS:
1624
+ # Async loading. If num_computed_tokens is set it implies we
1625
+ # already processed some block failures for it in a prior step
1626
+ req_num_computed_tokens = (
1627
+ request.num_computed_tokens
1628
+ if req_id in self.failed_recving_kv_req_ids
1629
+ else len(req_block_ids) * self.block_size
1630
+ )
1631
+ else:
1632
+ # Sync loading. num_computed_tokens includes new tokens
1633
+ req_num_computed_tokens = request.num_cached_tokens
1634
+
1635
+ req_num_computed_blocks = (
1636
+ req_num_computed_tokens + self.block_size - 1
1637
+ ) // self.block_size
1638
+ for idx, block_id in zip(range(req_num_computed_blocks), req_block_ids):
1639
+ if block_id not in invalid_block_ids:
1640
+ continue
1641
+
1642
+ is_affected = True
1643
+
1644
+ if block_id in marked_invalid_block_ids:
1645
+ # This invalid block is shared with a previous request
1646
+ # and was already marked for recomputation.
1647
+ # This means this request can still consider this block
1648
+ # as computed when rescheduled.
1649
+ # Currently this only applies to sync loading; Async
1650
+ # loading does not yet support block sharing
1651
+ continue
1652
+
1653
+ marked_invalid_block_ids.add(block_id)
1654
+
1655
+ if marked_invalid_block:
1656
+ # This request has already marked an invalid block for
1657
+ # recomputation and updated its num_computed_tokens.
1658
+ continue
1659
+
1660
+ marked_invalid_block = True
1661
+ # Truncate the computed tokens at the first failed block
1662
+ request.num_computed_tokens = idx * self.block_size
1663
+ num_affected_tokens = (
1664
+ req_num_computed_tokens - request.num_computed_tokens
1665
+ )
1666
+ total_affected_tokens += num_affected_tokens
1667
+ request.num_external_computed_tokens -= num_affected_tokens
1668
+
1669
+ if is_affected:
1670
+ if not marked_invalid_block:
1671
+ # All invalid blocks of this request are shared with
1672
+ # previous requests and will be recomputed by them.
1673
+ # Revert to considering only cached tokens as computed.
1674
+ # Currently this only applies to sync loading; Async
1675
+ # loading does not yet support block sharing
1676
+ total_affected_tokens += (
1677
+ request.num_computed_tokens - request.num_cached_tokens
1678
+ )
1679
+ request.num_computed_tokens = request.num_cached_tokens
1680
+
1681
+ affected_req_ids.add(request.request_id)
1682
+
1683
+ return affected_req_ids, total_affected_tokens
1684
+
1685
+ def _handle_invalid_blocks(self, invalid_block_ids: set[int]) -> set[str]:
1686
+ total_requests_to_reschedule = 0
1687
+ total_tokens_to_reschedule = 0
1688
+
1689
+ # --- Handle async KV loads (WAITING_FOR_REMOTE_KVS) ---
1690
+ async_load_reqs = (
1691
+ req
1692
+ for req in self.waiting
1693
+ if req.status == RequestStatus.WAITING_FOR_REMOTE_KVS
1694
+ )
1695
+ async_affected_req_ids, num_tokens_to_reschedule = (
1696
+ self._update_requests_with_invalid_blocks(
1697
+ async_load_reqs, invalid_block_ids
1698
+ )
1699
+ )
1700
+
1701
+ total_requests_to_reschedule += len(async_affected_req_ids)
1702
+ total_tokens_to_reschedule += num_tokens_to_reschedule
1703
+
1704
+ # Mark requests with async KV load failures; they will be rescheduled
1705
+ # once loading completes.
1706
+ self.failed_recving_kv_req_ids |= async_affected_req_ids
1707
+
1708
+ # --- Handle sync KV loads (running requests) ---
1709
+ sync_affected_req_ids, num_tokens_to_reschedule = (
1710
+ self._update_requests_with_invalid_blocks(self.running, invalid_block_ids)
1711
+ )
1712
+
1713
+ total_requests_to_reschedule += len(sync_affected_req_ids)
1714
+ total_tokens_to_reschedule += num_tokens_to_reschedule
1715
+
1716
+ if total_requests_to_reschedule:
1717
+ logger.warning(
1718
+ "Recovered from KV load failure: "
1719
+ "%d request(s) rescheduled (%d tokens affected).",
1720
+ total_requests_to_reschedule,
1721
+ total_tokens_to_reschedule,
1722
+ )
1723
+
1724
+ # Return the IDs of affected running requests to skip in
1725
+ # update_from_output.
1726
+ return sync_affected_req_ids