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,1837 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
+
4
+ import asyncio
5
+ import inspect
6
+ import json
7
+ from abc import ABC, abstractmethod
8
+ from collections import Counter, defaultdict, deque
9
+ from collections.abc import Awaitable, Callable, Iterable
10
+ from functools import cached_property, lru_cache, partial
11
+ from pathlib import Path
12
+ from typing import Any, Generic, Literal, TypeAlias, TypeVar, cast
13
+
14
+ import jinja2
15
+ import jinja2.ext
16
+ import jinja2.meta
17
+ import jinja2.nodes
18
+ import jinja2.parser
19
+ import jinja2.sandbox
20
+ import transformers.utils.chat_template_utils as hf_chat_utils
21
+ from openai.types.chat import (
22
+ ChatCompletionAssistantMessageParam,
23
+ ChatCompletionContentPartImageParam,
24
+ ChatCompletionContentPartInputAudioParam,
25
+ ChatCompletionContentPartRefusalParam,
26
+ ChatCompletionContentPartTextParam,
27
+ ChatCompletionMessageToolCallParam,
28
+ ChatCompletionToolMessageParam,
29
+ )
30
+ from openai.types.chat import (
31
+ ChatCompletionContentPartParam as OpenAIChatCompletionContentPartParam,
32
+ )
33
+ from openai.types.chat import (
34
+ ChatCompletionMessageParam as OpenAIChatCompletionMessageParam,
35
+ )
36
+ from openai.types.chat.chat_completion_content_part_input_audio_param import InputAudio
37
+ from openai.types.responses import ResponseInputImageParam
38
+ from openai_harmony import Message as OpenAIHarmonyMessage
39
+ from PIL import Image
40
+ from pydantic import BaseModel, ConfigDict, TypeAdapter
41
+ from transformers import PreTrainedTokenizer, PreTrainedTokenizerFast, ProcessorMixin
42
+
43
+ # pydantic needs the TypedDict from typing_extensions
44
+ from typing_extensions import Required, TypedDict
45
+
46
+ from vllm import envs
47
+ from vllm.config import ModelConfig
48
+ from vllm.logger import init_logger
49
+ from vllm.model_executor.models import SupportsMultiModal
50
+ from vllm.multimodal import MULTIMODAL_REGISTRY, MultiModalDataDict, MultiModalUUIDDict
51
+ from vllm.multimodal.utils import MEDIA_CONNECTOR_REGISTRY, MediaConnector
52
+ from vllm.tokenizers import MistralTokenizer, TokenizerLike
53
+ from vllm.transformers_utils.chat_templates import get_chat_template_fallback_path
54
+ from vllm.transformers_utils.processor import cached_get_processor
55
+ from vllm.utils import random_uuid
56
+ from vllm.utils.func_utils import supports_kw
57
+
58
+ logger = init_logger(__name__)
59
+
60
+ MODALITY_PLACEHOLDERS_MAP = {
61
+ "image": "<##IMAGE##>",
62
+ "audio": "<##AUDIO##>",
63
+ "video": "<##VIDEO##>",
64
+ }
65
+
66
+
67
+ class AudioURL(TypedDict, total=False):
68
+ url: Required[str]
69
+ """
70
+ Either a URL of the audio or a data URL with base64 encoded audio data.
71
+ """
72
+
73
+
74
+ class ChatCompletionContentPartAudioParam(TypedDict, total=False):
75
+ audio_url: Required[AudioURL]
76
+
77
+ type: Required[Literal["audio_url"]]
78
+ """The type of the content part."""
79
+
80
+
81
+ class ChatCompletionContentPartImageEmbedsParam(TypedDict, total=False):
82
+ image_embeds: str | dict[str, str] | None
83
+ """
84
+ The image embeddings. It can be either:
85
+ - A single base64 string.
86
+ - A dictionary where each value is a base64 string.
87
+ """
88
+ type: Required[Literal["image_embeds"]]
89
+ """The type of the content part."""
90
+ uuid: str | None
91
+ """
92
+ User-provided UUID of a media. User must guarantee that it is properly
93
+ generated and unique for different medias.
94
+ """
95
+
96
+
97
+ class ChatCompletionContentPartAudioEmbedsParam(TypedDict, total=False):
98
+ audio_embeds: str | dict[str, str] | None
99
+ """
100
+ The audio embeddings. It can be either:
101
+ - A single base64 string representing a serialized torch tensor.
102
+ - A dictionary where each value is a base64 string.
103
+ """
104
+ type: Required[Literal["audio_embeds"]]
105
+ """The type of the content part."""
106
+ uuid: str | None
107
+ """
108
+ User-provided UUID of a media. User must guarantee that it is properly
109
+ generated and unique for different medias.
110
+ """
111
+
112
+
113
+ class VideoURL(TypedDict, total=False):
114
+ url: Required[str]
115
+ """
116
+ Either a URL of the video or a data URL with base64 encoded video data.
117
+ """
118
+
119
+
120
+ class ChatCompletionContentPartVideoParam(TypedDict, total=False):
121
+ video_url: Required[VideoURL]
122
+
123
+ type: Required[Literal["video_url"]]
124
+ """The type of the content part."""
125
+
126
+
127
+ class PILImage(BaseModel):
128
+ """
129
+ A PIL.Image.Image object.
130
+ """
131
+
132
+ image_pil: Image.Image
133
+ model_config = ConfigDict(arbitrary_types_allowed=True)
134
+
135
+
136
+ class CustomChatCompletionContentPILImageParam(TypedDict, total=False):
137
+ """A simpler version of the param that only accepts a PIL image.
138
+
139
+ Example:
140
+ {
141
+ "image_pil": ImageAsset('cherry_blossom').pil_image
142
+ }
143
+ """
144
+
145
+ image_pil: PILImage | None
146
+ uuid: str | None
147
+ """
148
+ User-provided UUID of a media. User must guarantee that it is properly
149
+ generated and unique for different medias.
150
+ """
151
+
152
+
153
+ class CustomChatCompletionContentSimpleImageParam(TypedDict, total=False):
154
+ """A simpler version of the param that only accepts a plain image_url.
155
+ This is supported by OpenAI API, although it is not documented.
156
+
157
+ Example:
158
+ {
159
+ "image_url": "https://example.com/image.jpg"
160
+ }
161
+ """
162
+
163
+ image_url: str | None
164
+ uuid: str | None
165
+ """
166
+ User-provided UUID of a media. User must guarantee that it is properly
167
+ generated and unique for different medias.
168
+ """
169
+
170
+
171
+ class CustomChatCompletionContentSimpleAudioParam(TypedDict, total=False):
172
+ """A simpler version of the param that only accepts a plain audio_url.
173
+
174
+ Example:
175
+ {
176
+ "audio_url": "https://example.com/audio.mp3"
177
+ }
178
+ """
179
+
180
+ audio_url: str | None
181
+
182
+
183
+ class CustomChatCompletionContentSimpleVideoParam(TypedDict, total=False):
184
+ """A simpler version of the param that only accepts a plain audio_url.
185
+
186
+ Example:
187
+ {
188
+ "video_url": "https://example.com/video.mp4"
189
+ }
190
+ """
191
+
192
+ video_url: str | None
193
+ uuid: str | None
194
+ """
195
+ User-provided UUID of a media. User must guarantee that it is properly
196
+ generated and unique for different medias.
197
+ """
198
+
199
+
200
+ class CustomThinkCompletionContentParam(TypedDict, total=False):
201
+ """A Think Completion Content Param that accepts a plain text and a boolean.
202
+
203
+ Example:
204
+ {
205
+ "thinking": "I am thinking about the answer",
206
+ "closed": True,
207
+ "type": "thinking"
208
+ }
209
+ """
210
+
211
+ thinking: Required[str]
212
+ """The thinking content."""
213
+
214
+ closed: bool
215
+ """Whether the thinking is closed."""
216
+
217
+ type: Required[Literal["thinking"]]
218
+ """The thinking type."""
219
+
220
+
221
+ ChatCompletionContentPartParam: TypeAlias = (
222
+ OpenAIChatCompletionContentPartParam
223
+ | ChatCompletionContentPartAudioParam
224
+ | ChatCompletionContentPartInputAudioParam
225
+ | ChatCompletionContentPartVideoParam
226
+ | ChatCompletionContentPartRefusalParam
227
+ | CustomChatCompletionContentPILImageParam
228
+ | CustomChatCompletionContentSimpleImageParam
229
+ | ChatCompletionContentPartImageEmbedsParam
230
+ | ChatCompletionContentPartAudioEmbedsParam
231
+ | CustomChatCompletionContentSimpleAudioParam
232
+ | CustomChatCompletionContentSimpleVideoParam
233
+ | str
234
+ | CustomThinkCompletionContentParam
235
+ )
236
+
237
+
238
+ class CustomChatCompletionMessageParam(TypedDict, total=False):
239
+ """Enables custom roles in the Chat Completion API."""
240
+
241
+ role: Required[str]
242
+ """The role of the message's author."""
243
+
244
+ content: str | list[ChatCompletionContentPartParam]
245
+ """The contents of the message."""
246
+
247
+ name: str
248
+ """An optional name for the participant.
249
+
250
+ Provides the model information to differentiate between participants of the
251
+ same role.
252
+ """
253
+
254
+ tool_call_id: str | None
255
+ """Tool call that this message is responding to."""
256
+
257
+ tool_calls: Iterable[ChatCompletionMessageToolCallParam] | None
258
+ """The tool calls generated by the model, such as function calls."""
259
+
260
+ reasoning: str | None
261
+ """The reasoning content for interleaved thinking."""
262
+
263
+
264
+ ChatCompletionMessageParam: TypeAlias = (
265
+ OpenAIChatCompletionMessageParam
266
+ | CustomChatCompletionMessageParam
267
+ | OpenAIHarmonyMessage
268
+ )
269
+
270
+
271
+ # TODO: Make fields ReadOnly once mypy supports it
272
+ class ConversationMessage(TypedDict, total=False):
273
+ role: Required[str]
274
+ """The role of the message's author."""
275
+
276
+ content: str | None | list[dict[str, str]]
277
+ """The contents of the message"""
278
+
279
+ tool_call_id: str | None
280
+ """Tool call that this message is responding to."""
281
+
282
+ name: str | None
283
+ """The name of the function to call"""
284
+
285
+ tool_calls: Iterable[ChatCompletionMessageToolCallParam] | None
286
+ """The tool calls generated by the model, such as function calls."""
287
+
288
+ reasoning: str | None
289
+ """The reasoning content for interleaved thinking."""
290
+
291
+ reasoning_content: str | None
292
+ """Deprecated: The reasoning content for interleaved thinking."""
293
+
294
+
295
+ # Passed in by user
296
+ ChatTemplateContentFormatOption = Literal["auto", "string", "openai"]
297
+
298
+ # Used internally
299
+ _ChatTemplateContentFormat = Literal["string", "openai"]
300
+
301
+
302
+ def _is_var_access(node: jinja2.nodes.Node, varname: str) -> bool:
303
+ if isinstance(node, jinja2.nodes.Name):
304
+ return node.ctx == "load" and node.name == varname
305
+
306
+ return False
307
+
308
+
309
+ def _is_attr_access(node: jinja2.nodes.Node, varname: str, key: str) -> bool:
310
+ if isinstance(node, jinja2.nodes.Getitem):
311
+ return (
312
+ _is_var_access(node.node, varname)
313
+ and isinstance(node.arg, jinja2.nodes.Const)
314
+ and node.arg.value == key
315
+ )
316
+
317
+ if isinstance(node, jinja2.nodes.Getattr):
318
+ return _is_var_access(node.node, varname) and node.attr == key
319
+
320
+ return False
321
+
322
+
323
+ def _is_var_or_elems_access(
324
+ node: jinja2.nodes.Node,
325
+ varname: str,
326
+ key: str | None = None,
327
+ ) -> bool:
328
+ if isinstance(node, jinja2.nodes.Filter):
329
+ return node.node is not None and _is_var_or_elems_access(
330
+ node.node, varname, key
331
+ )
332
+ if isinstance(node, jinja2.nodes.Test):
333
+ return _is_var_or_elems_access(node.node, varname, key)
334
+
335
+ if isinstance(node, jinja2.nodes.Getitem) and isinstance(
336
+ node.arg, jinja2.nodes.Slice
337
+ ):
338
+ return _is_var_or_elems_access(node.node, varname, key)
339
+
340
+ return _is_attr_access(node, varname, key) if key else _is_var_access(node, varname)
341
+
342
+
343
+ def _iter_nodes_assign_var_or_elems(root: jinja2.nodes.Node, varname: str):
344
+ # Global variable that is implicitly defined at the root
345
+ yield root, varname
346
+
347
+ # Iterative BFS
348
+ related_varnames = deque([varname])
349
+ while related_varnames:
350
+ related_varname = related_varnames.popleft()
351
+
352
+ for assign_ast in root.find_all(jinja2.nodes.Assign):
353
+ lhs = assign_ast.target
354
+ rhs = assign_ast.node
355
+
356
+ if _is_var_or_elems_access(rhs, related_varname):
357
+ assert isinstance(lhs, jinja2.nodes.Name)
358
+ yield assign_ast, lhs.name
359
+
360
+ # Avoid infinite looping for self-assignment
361
+ if lhs.name != related_varname:
362
+ related_varnames.append(lhs.name)
363
+
364
+
365
+ # NOTE: The proper way to handle this is to build a CFG so that we can handle
366
+ # the scope in which each variable is defined, but that is too complicated
367
+ def _iter_nodes_assign_messages_item(root: jinja2.nodes.Node):
368
+ messages_varnames = [
369
+ varname for _, varname in _iter_nodes_assign_var_or_elems(root, "messages")
370
+ ]
371
+
372
+ # Search for {%- for message in messages -%} loops
373
+ for loop_ast in root.find_all(jinja2.nodes.For):
374
+ loop_iter = loop_ast.iter
375
+ loop_target = loop_ast.target
376
+
377
+ for varname in messages_varnames:
378
+ if _is_var_or_elems_access(loop_iter, varname):
379
+ assert isinstance(loop_target, jinja2.nodes.Name)
380
+ yield loop_ast, loop_target.name
381
+ break
382
+
383
+
384
+ def _iter_nodes_assign_content_item(root: jinja2.nodes.Node):
385
+ message_varnames = [
386
+ varname for _, varname in _iter_nodes_assign_messages_item(root)
387
+ ]
388
+
389
+ # Search for {%- for content in message['content'] -%} loops
390
+ for loop_ast in root.find_all(jinja2.nodes.For):
391
+ loop_iter = loop_ast.iter
392
+ loop_target = loop_ast.target
393
+
394
+ for varname in message_varnames:
395
+ if _is_var_or_elems_access(loop_iter, varname, "content"):
396
+ assert isinstance(loop_target, jinja2.nodes.Name)
397
+ yield loop_ast, loop_target.name
398
+ break
399
+
400
+
401
+ def _try_extract_ast(chat_template: str) -> jinja2.nodes.Template | None:
402
+ try:
403
+ jinja_compiled = hf_chat_utils._compile_jinja_template(chat_template)
404
+ return jinja_compiled.environment.parse(chat_template)
405
+ except Exception:
406
+ logger.exception("Error when compiling Jinja template")
407
+ return None
408
+
409
+
410
+ @lru_cache(maxsize=32)
411
+ def _detect_content_format(
412
+ chat_template: str,
413
+ *,
414
+ default: _ChatTemplateContentFormat,
415
+ ) -> _ChatTemplateContentFormat:
416
+ jinja_ast = _try_extract_ast(chat_template)
417
+ if jinja_ast is None:
418
+ return default
419
+
420
+ try:
421
+ next(_iter_nodes_assign_content_item(jinja_ast))
422
+ except StopIteration:
423
+ return "string"
424
+ except Exception:
425
+ logger.exception("Error when parsing AST of Jinja template")
426
+ return default
427
+ else:
428
+ return "openai"
429
+
430
+
431
+ def resolve_mistral_chat_template(
432
+ chat_template: str | None,
433
+ **kwargs: Any,
434
+ ) -> str | None:
435
+ if chat_template is not None or kwargs.get("chat_template_kwargs") is not None:
436
+ raise ValueError(
437
+ "'chat_template' or 'chat_template_kwargs' cannot be overridden "
438
+ "for mistral tokenizer."
439
+ )
440
+
441
+ return None
442
+
443
+
444
+ _PROCESSOR_CHAT_TEMPLATES = dict[tuple[str, bool], str | None]()
445
+ """
446
+ Used in `_try_get_processor_chat_template` to avoid calling
447
+ `cached_get_processor` again if the processor fails to be loaded.
448
+
449
+ This is needed because `lru_cache` does not cache when an exception happens.
450
+ """
451
+
452
+
453
+ def _try_get_processor_chat_template(
454
+ tokenizer: PreTrainedTokenizer | PreTrainedTokenizerFast,
455
+ model_config: ModelConfig,
456
+ ) -> str | None:
457
+ cache_key = (tokenizer.name_or_path, model_config.trust_remote_code)
458
+ if cache_key in _PROCESSOR_CHAT_TEMPLATES:
459
+ return _PROCESSOR_CHAT_TEMPLATES[cache_key]
460
+
461
+ try:
462
+ processor = cached_get_processor(
463
+ tokenizer.name_or_path,
464
+ processor_cls=(
465
+ PreTrainedTokenizer,
466
+ PreTrainedTokenizerFast,
467
+ ProcessorMixin,
468
+ ),
469
+ trust_remote_code=model_config.trust_remote_code,
470
+ )
471
+ if (
472
+ isinstance(processor, ProcessorMixin)
473
+ and hasattr(processor, "chat_template")
474
+ and (chat_template := processor.chat_template) is not None
475
+ ):
476
+ _PROCESSOR_CHAT_TEMPLATES[cache_key] = chat_template
477
+ return chat_template
478
+ except Exception:
479
+ logger.debug(
480
+ "Failed to load AutoProcessor chat template for %s",
481
+ tokenizer.name_or_path,
482
+ exc_info=True,
483
+ )
484
+
485
+ _PROCESSOR_CHAT_TEMPLATES[cache_key] = None
486
+ return None
487
+
488
+
489
+ def resolve_hf_chat_template(
490
+ tokenizer: PreTrainedTokenizer | PreTrainedTokenizerFast,
491
+ chat_template: str | None,
492
+ tools: list[dict[str, Any]] | None,
493
+ *,
494
+ model_config: ModelConfig,
495
+ ) -> str | None:
496
+ # 1st priority: The given chat template
497
+ if chat_template is not None:
498
+ return chat_template
499
+
500
+ # 2nd priority: AutoProcessor chat template, unless tool calling is enabled
501
+ if tools is None:
502
+ chat_template = _try_get_processor_chat_template(tokenizer, model_config)
503
+ if chat_template is not None:
504
+ return chat_template
505
+
506
+ # 3rd priority: AutoTokenizer chat template
507
+ try:
508
+ return tokenizer.get_chat_template(chat_template, tools=tools)
509
+ except Exception:
510
+ logger.debug(
511
+ "Failed to load AutoTokenizer chat template for %s",
512
+ tokenizer.name_or_path,
513
+ exc_info=True,
514
+ )
515
+
516
+ # 4th priority: Predefined fallbacks
517
+ path = get_chat_template_fallback_path(
518
+ model_type=model_config.hf_config.model_type,
519
+ tokenizer_name_or_path=model_config.tokenizer,
520
+ )
521
+ if path is not None:
522
+ logger.info_once(
523
+ "Loading chat template fallback for %s as there isn't one "
524
+ "defined on HF Hub.",
525
+ tokenizer.name_or_path,
526
+ )
527
+ chat_template = load_chat_template(path)
528
+ else:
529
+ logger.debug_once(
530
+ "There is no chat template fallback for %s", tokenizer.name_or_path
531
+ )
532
+
533
+ return chat_template
534
+
535
+
536
+ def _resolve_chat_template_content_format(
537
+ chat_template: str | None,
538
+ tools: list[dict[str, Any]] | None,
539
+ tokenizer: TokenizerLike,
540
+ *,
541
+ model_config: ModelConfig,
542
+ ) -> _ChatTemplateContentFormat:
543
+ if isinstance(tokenizer, (PreTrainedTokenizer, PreTrainedTokenizerFast)):
544
+ hf_chat_template = resolve_hf_chat_template(
545
+ tokenizer,
546
+ chat_template=chat_template,
547
+ tools=tools,
548
+ model_config=model_config,
549
+ )
550
+ else:
551
+ hf_chat_template = None
552
+
553
+ jinja_text = (
554
+ hf_chat_template
555
+ if isinstance(hf_chat_template, str)
556
+ else load_chat_template(chat_template, is_literal=True)
557
+ )
558
+
559
+ detected_format = (
560
+ "string"
561
+ if jinja_text is None
562
+ else _detect_content_format(jinja_text, default="string")
563
+ )
564
+
565
+ return detected_format
566
+
567
+
568
+ @lru_cache
569
+ def _log_chat_template_content_format(
570
+ chat_template: str | None,
571
+ given_format: ChatTemplateContentFormatOption,
572
+ detected_format: ChatTemplateContentFormatOption,
573
+ ):
574
+ logger.info(
575
+ "Detected the chat template content format to be '%s'. "
576
+ "You can set `--chat-template-content-format` to override this.",
577
+ detected_format,
578
+ )
579
+
580
+ if given_format != "auto" and given_format != detected_format:
581
+ logger.warning(
582
+ "You specified `--chat-template-content-format %s` "
583
+ "which is different from the detected format '%s'. "
584
+ "If our automatic detection is incorrect, please consider "
585
+ "opening a GitHub issue so that we can improve it: "
586
+ "https://github.com/vllm-project/vllm/issues/new/choose",
587
+ given_format,
588
+ detected_format,
589
+ )
590
+
591
+
592
+ def resolve_chat_template_content_format(
593
+ chat_template: str | None,
594
+ tools: list[dict[str, Any]] | None,
595
+ given_format: ChatTemplateContentFormatOption,
596
+ tokenizer: TokenizerLike,
597
+ *,
598
+ model_config: ModelConfig,
599
+ ) -> _ChatTemplateContentFormat:
600
+ if given_format != "auto":
601
+ return given_format
602
+
603
+ detected_format = _resolve_chat_template_content_format(
604
+ chat_template,
605
+ tools,
606
+ tokenizer,
607
+ model_config=model_config,
608
+ )
609
+
610
+ _log_chat_template_content_format(
611
+ chat_template,
612
+ given_format=given_format,
613
+ detected_format=detected_format,
614
+ )
615
+
616
+ return detected_format
617
+
618
+
619
+ ModalityStr = Literal["image", "audio", "video", "image_embeds", "audio_embeds"]
620
+ _T = TypeVar("_T")
621
+
622
+
623
+ class BaseMultiModalItemTracker(ABC, Generic[_T]):
624
+ """
625
+ Tracks multi-modal items in a given request and ensures that the number
626
+ of multi-modal items in a given request does not exceed the configured
627
+ maximum per prompt.
628
+ """
629
+
630
+ def __init__(self, model_config: ModelConfig, tokenizer: TokenizerLike):
631
+ super().__init__()
632
+
633
+ self._model_config = model_config
634
+ self._tokenizer = tokenizer
635
+
636
+ self._items_by_modality = defaultdict[str, list[_T | None]](list)
637
+ self._uuids_by_modality = defaultdict[str, list[str | None]](list)
638
+
639
+ @property
640
+ def model_config(self) -> ModelConfig:
641
+ return self._model_config
642
+
643
+ @cached_property
644
+ def model_cls(self) -> type[SupportsMultiModal]:
645
+ from vllm.model_executor.model_loader import get_model_cls
646
+
647
+ model_cls = get_model_cls(self.model_config)
648
+ return cast(type[SupportsMultiModal], model_cls)
649
+
650
+ @property
651
+ def allowed_local_media_path(self):
652
+ return self._model_config.allowed_local_media_path
653
+
654
+ @property
655
+ def allowed_media_domains(self):
656
+ return self._model_config.allowed_media_domains
657
+
658
+ @property
659
+ def mm_registry(self):
660
+ return MULTIMODAL_REGISTRY
661
+
662
+ @cached_property
663
+ def mm_processor(self):
664
+ return self.mm_registry.create_processor(self.model_config)
665
+
666
+ def add(
667
+ self,
668
+ modality: ModalityStr,
669
+ item: _T | None,
670
+ uuid: str | None = None,
671
+ ) -> str | None:
672
+ """
673
+ Add a multi-modal item to the current prompt and returns the
674
+ placeholder string to use, if any.
675
+
676
+ An optional uuid can be added which serves as a unique identifier of the
677
+ media.
678
+ """
679
+ input_modality = modality.replace("_embeds", "")
680
+ num_items = len(self._items_by_modality[modality]) + 1
681
+
682
+ self.mm_processor.validate_num_items(input_modality, num_items)
683
+
684
+ self._items_by_modality[modality].append(item)
685
+ self._uuids_by_modality[modality].append(uuid)
686
+
687
+ return self.model_cls.get_placeholder_str(modality, num_items)
688
+
689
+ def all_mm_uuids(self) -> MultiModalUUIDDict | None:
690
+ if not self._items_by_modality:
691
+ return None
692
+ mm_uuids = {}
693
+ uuids_by_modality = dict(self._uuids_by_modality)
694
+ if "image" in uuids_by_modality and "image_embeds" in uuids_by_modality:
695
+ raise ValueError("Mixing raw image and embedding inputs is not allowed")
696
+
697
+ if "image_embeds" in uuids_by_modality:
698
+ image_embeds_uuids = uuids_by_modality["image_embeds"]
699
+ if len(image_embeds_uuids) > 1:
700
+ raise ValueError("Only one message can have {'type': 'image_embeds'}")
701
+ mm_uuids["image"] = uuids_by_modality["image_embeds"]
702
+ if "image" in uuids_by_modality:
703
+ mm_uuids["image"] = uuids_by_modality["image"] # UUIDs of images
704
+ if "audio_embeds" in uuids_by_modality:
705
+ audio_embeds_uuids = uuids_by_modality["audio_embeds"]
706
+ if len(audio_embeds_uuids) > 1:
707
+ raise ValueError("Only one message can have {'type': 'audio_embeds'}")
708
+ mm_uuids["audio"] = uuids_by_modality["audio_embeds"]
709
+ if "audio" in uuids_by_modality:
710
+ mm_uuids["audio"] = uuids_by_modality["audio"] # UUIDs of audios
711
+ if "video" in uuids_by_modality:
712
+ mm_uuids["video"] = uuids_by_modality["video"] # UUIDs of videos
713
+ return mm_uuids
714
+
715
+ @abstractmethod
716
+ def create_parser(self) -> "BaseMultiModalContentParser":
717
+ raise NotImplementedError
718
+
719
+
720
+ class MultiModalItemTracker(BaseMultiModalItemTracker[object]):
721
+ def all_mm_data(self) -> MultiModalDataDict | None:
722
+ if not self._items_by_modality:
723
+ return None
724
+ mm_inputs = {}
725
+ items_by_modality = dict(self._items_by_modality)
726
+ if "image" in items_by_modality and "image_embeds" in items_by_modality:
727
+ raise ValueError("Mixing raw image and embedding inputs is not allowed")
728
+ if "audio" in items_by_modality and "audio_embeds" in items_by_modality:
729
+ raise ValueError("Mixing raw audio and embedding inputs is not allowed")
730
+
731
+ if "image_embeds" in items_by_modality:
732
+ image_embeds_lst = items_by_modality["image_embeds"]
733
+ if len(image_embeds_lst) > 1:
734
+ raise ValueError("Only one message can have {'type': 'image_embeds'}")
735
+ mm_inputs["image"] = image_embeds_lst[0]
736
+ if "image" in items_by_modality:
737
+ mm_inputs["image"] = items_by_modality["image"] # A list of images
738
+ if "audio_embeds" in items_by_modality:
739
+ audio_embeds_lst = items_by_modality["audio_embeds"]
740
+ if len(audio_embeds_lst) > 1:
741
+ raise ValueError("Only one message can have {'type': 'audio_embeds'}")
742
+ mm_inputs["audio"] = audio_embeds_lst[0]
743
+ if "audio" in items_by_modality:
744
+ mm_inputs["audio"] = items_by_modality["audio"] # A list of audios
745
+ if "video" in items_by_modality:
746
+ mm_inputs["video"] = items_by_modality["video"] # A list of videos
747
+ return mm_inputs
748
+
749
+ def create_parser(self) -> "BaseMultiModalContentParser":
750
+ return MultiModalContentParser(self)
751
+
752
+
753
+ class AsyncMultiModalItemTracker(BaseMultiModalItemTracker[Awaitable[object]]):
754
+ async def all_mm_data(self) -> MultiModalDataDict | None:
755
+ if not self._items_by_modality:
756
+ return None
757
+ mm_inputs = {}
758
+ items_by_modality = {}
759
+ for modality, items in self._items_by_modality.items():
760
+ coros = []
761
+ for item in items:
762
+ if item is not None:
763
+ coros.append(item)
764
+ else:
765
+ coros.append(asyncio.sleep(0))
766
+ items_by_modality[modality] = await asyncio.gather(*coros)
767
+
768
+ if "image" in items_by_modality and "image_embeds" in items_by_modality:
769
+ raise ValueError("Mixing raw image and embedding inputs is not allowed")
770
+ if "audio" in items_by_modality and "audio_embeds" in items_by_modality:
771
+ raise ValueError("Mixing raw audio and embedding inputs is not allowed")
772
+
773
+ if "image_embeds" in items_by_modality:
774
+ image_embeds_lst = items_by_modality["image_embeds"]
775
+ if len(image_embeds_lst) > 1:
776
+ raise ValueError("Only one message can have {'type': 'image_embeds'}")
777
+ mm_inputs["image"] = image_embeds_lst[0]
778
+ if "image" in items_by_modality:
779
+ mm_inputs["image"] = items_by_modality["image"] # A list of images
780
+ if "audio_embeds" in items_by_modality:
781
+ audio_embeds_lst = items_by_modality["audio_embeds"]
782
+ if len(audio_embeds_lst) > 1:
783
+ raise ValueError("Only one message can have {'type': 'audio_embeds'}")
784
+ mm_inputs["audio"] = audio_embeds_lst[0]
785
+ if "audio" in items_by_modality:
786
+ mm_inputs["audio"] = items_by_modality["audio"] # A list of audios
787
+ if "video" in items_by_modality:
788
+ mm_inputs["video"] = items_by_modality["video"] # A list of videos
789
+ return mm_inputs
790
+
791
+ def create_parser(self) -> "BaseMultiModalContentParser":
792
+ return AsyncMultiModalContentParser(self)
793
+
794
+
795
+ class BaseMultiModalContentParser(ABC):
796
+ def __init__(self) -> None:
797
+ super().__init__()
798
+
799
+ # stores model placeholders list with corresponding
800
+ # general MM placeholder:
801
+ # {
802
+ # "<##IMAGE##>": ["<image>", "<image>", "<image>"],
803
+ # "<##AUDIO##>": ["<audio>", "<audio>"]
804
+ # }
805
+ self._placeholder_storage: dict[str, list] = defaultdict(list)
806
+
807
+ def _add_placeholder(self, modality: ModalityStr, placeholder: str | None):
808
+ mod_placeholder = MODALITY_PLACEHOLDERS_MAP[modality]
809
+ if placeholder:
810
+ self._placeholder_storage[mod_placeholder].append(placeholder)
811
+
812
+ def mm_placeholder_storage(self) -> dict[str, list]:
813
+ return dict(self._placeholder_storage)
814
+
815
+ @abstractmethod
816
+ def parse_image(self, image_url: str | None, uuid: str | None = None) -> None:
817
+ raise NotImplementedError
818
+
819
+ @abstractmethod
820
+ def parse_image_embeds(
821
+ self,
822
+ image_embeds: str | dict[str, str] | None,
823
+ uuid: str | None = None,
824
+ ) -> None:
825
+ raise NotImplementedError
826
+
827
+ @abstractmethod
828
+ def parse_image_pil(
829
+ self, image_pil: Image.Image | None, uuid: str | None = None
830
+ ) -> None:
831
+ raise NotImplementedError
832
+
833
+ @abstractmethod
834
+ def parse_audio(self, audio_url: str | None, uuid: str | None = None) -> None:
835
+ raise NotImplementedError
836
+
837
+ @abstractmethod
838
+ def parse_input_audio(
839
+ self, input_audio: InputAudio | None, uuid: str | None = None
840
+ ) -> None:
841
+ raise NotImplementedError
842
+
843
+ @abstractmethod
844
+ def parse_audio_embeds(
845
+ self,
846
+ audio_embeds: str | dict[str, str] | None,
847
+ uuid: str | None = None,
848
+ ) -> None:
849
+ raise NotImplementedError
850
+
851
+ @abstractmethod
852
+ def parse_video(self, video_url: str | None, uuid: str | None = None) -> None:
853
+ raise NotImplementedError
854
+
855
+
856
+ class MultiModalContentParser(BaseMultiModalContentParser):
857
+ def __init__(self, tracker: MultiModalItemTracker) -> None:
858
+ super().__init__()
859
+
860
+ self._tracker = tracker
861
+ multimodal_config = self._tracker.model_config.multimodal_config
862
+ media_io_kwargs = getattr(multimodal_config, "media_io_kwargs", None)
863
+
864
+ self._connector: MediaConnector = MEDIA_CONNECTOR_REGISTRY.load(
865
+ envs.VLLM_MEDIA_CONNECTOR,
866
+ media_io_kwargs=media_io_kwargs,
867
+ allowed_local_media_path=tracker.allowed_local_media_path,
868
+ allowed_media_domains=tracker.allowed_media_domains,
869
+ )
870
+
871
+ @property
872
+ def model_config(self) -> ModelConfig:
873
+ return self._tracker.model_config
874
+
875
+ def parse_image(self, image_url: str | None, uuid: str | None = None) -> None:
876
+ image = self._connector.fetch_image(image_url) if image_url else None
877
+
878
+ placeholder = self._tracker.add("image", image, uuid)
879
+ self._add_placeholder("image", placeholder)
880
+
881
+ def parse_image_embeds(
882
+ self,
883
+ image_embeds: str | dict[str, str] | None,
884
+ uuid: str | None = None,
885
+ ) -> None:
886
+ mm_config = self.model_config.get_multimodal_config()
887
+ if not mm_config.enable_mm_embeds:
888
+ raise ValueError(
889
+ "You must set `--enable-mm-embeds` to input `image_embeds`"
890
+ )
891
+
892
+ if isinstance(image_embeds, dict):
893
+ embeds = {
894
+ k: self._connector.fetch_image_embedding(v)
895
+ for k, v in image_embeds.items()
896
+ }
897
+ placeholder = self._tracker.add("image_embeds", embeds, uuid)
898
+
899
+ if isinstance(image_embeds, str):
900
+ embedding = self._connector.fetch_image_embedding(image_embeds)
901
+ placeholder = self._tracker.add("image_embeds", embedding, uuid)
902
+
903
+ if image_embeds is None:
904
+ placeholder = self._tracker.add("image_embeds", None, uuid)
905
+
906
+ self._add_placeholder("image", placeholder)
907
+
908
+ def parse_audio_embeds(
909
+ self,
910
+ audio_embeds: str | dict[str, str] | None,
911
+ uuid: str | None = None,
912
+ ) -> None:
913
+ mm_config = self.model_config.get_multimodal_config()
914
+ if not mm_config.enable_mm_embeds:
915
+ raise ValueError(
916
+ "You must set `--enable-mm-embeds` to input `audio_embeds`"
917
+ )
918
+
919
+ if isinstance(audio_embeds, dict):
920
+ embeds = {
921
+ k: self._connector.fetch_audio_embedding(v)
922
+ for k, v in audio_embeds.items()
923
+ }
924
+ placeholder = self._tracker.add("audio_embeds", embeds, uuid)
925
+ elif isinstance(audio_embeds, str):
926
+ embedding = self._connector.fetch_audio_embedding(audio_embeds)
927
+ placeholder = self._tracker.add("audio_embeds", embedding, uuid)
928
+ else:
929
+ placeholder = self._tracker.add("audio_embeds", None, uuid)
930
+
931
+ self._add_placeholder("audio", placeholder)
932
+
933
+ def parse_image_pil(
934
+ self, image_pil: Image.Image | None, uuid: str | None = None
935
+ ) -> None:
936
+ placeholder = self._tracker.add("image", image_pil, uuid)
937
+ self._add_placeholder("image", placeholder)
938
+
939
+ def parse_audio(self, audio_url: str | None, uuid: str | None = None) -> None:
940
+ audio = self._connector.fetch_audio(audio_url) if audio_url else None
941
+
942
+ placeholder = self._tracker.add("audio", audio, uuid)
943
+ self._add_placeholder("audio", placeholder)
944
+
945
+ def parse_input_audio(
946
+ self, input_audio: InputAudio | None, uuid: str | None = None
947
+ ) -> None:
948
+ if input_audio:
949
+ audio_data = input_audio.get("data", "")
950
+ audio_format = input_audio.get("format", "")
951
+ if audio_data:
952
+ audio_url = f"data:audio/{audio_format};base64,{audio_data}"
953
+ else:
954
+ # If a UUID is provided, audio data may be empty.
955
+ audio_url = None
956
+ else:
957
+ audio_url = None
958
+
959
+ return self.parse_audio(audio_url, uuid)
960
+
961
+ def parse_video(self, video_url: str | None, uuid: str | None = None) -> None:
962
+ video = self._connector.fetch_video(video_url=video_url) if video_url else None
963
+
964
+ placeholder = self._tracker.add("video", video, uuid)
965
+ self._add_placeholder("video", placeholder)
966
+
967
+
968
+ class AsyncMultiModalContentParser(BaseMultiModalContentParser):
969
+ def __init__(self, tracker: AsyncMultiModalItemTracker) -> None:
970
+ super().__init__()
971
+
972
+ self._tracker = tracker
973
+ multimodal_config = self._tracker.model_config.multimodal_config
974
+ media_io_kwargs = getattr(multimodal_config, "media_io_kwargs", None)
975
+ self._connector: MediaConnector = MEDIA_CONNECTOR_REGISTRY.load(
976
+ envs.VLLM_MEDIA_CONNECTOR,
977
+ media_io_kwargs=media_io_kwargs,
978
+ allowed_local_media_path=tracker.allowed_local_media_path,
979
+ allowed_media_domains=tracker.allowed_media_domains,
980
+ )
981
+
982
+ @property
983
+ def model_config(self) -> ModelConfig:
984
+ return self._tracker.model_config
985
+
986
+ def parse_image(self, image_url: str | None, uuid: str | None = None) -> None:
987
+ image_coro = self._connector.fetch_image_async(image_url) if image_url else None
988
+
989
+ placeholder = self._tracker.add("image", image_coro, uuid)
990
+ self._add_placeholder("image", placeholder)
991
+
992
+ def parse_image_embeds(
993
+ self,
994
+ image_embeds: str | dict[str, str] | None,
995
+ uuid: str | None = None,
996
+ ) -> None:
997
+ mm_config = self.model_config.get_multimodal_config()
998
+ if not mm_config.enable_mm_embeds:
999
+ raise ValueError(
1000
+ "You must set `--enable-mm-embeds` to input `image_embeds`"
1001
+ )
1002
+
1003
+ future: asyncio.Future[str | dict[str, str] | None] = asyncio.Future()
1004
+
1005
+ if isinstance(image_embeds, dict):
1006
+ embeds = {
1007
+ k: self._connector.fetch_image_embedding(v)
1008
+ for k, v in image_embeds.items()
1009
+ }
1010
+ future.set_result(embeds)
1011
+
1012
+ if isinstance(image_embeds, str):
1013
+ embedding = self._connector.fetch_image_embedding(image_embeds)
1014
+ future.set_result(embedding)
1015
+
1016
+ if image_embeds is None:
1017
+ future.set_result(None)
1018
+
1019
+ placeholder = self._tracker.add("image_embeds", future, uuid)
1020
+ self._add_placeholder("image", placeholder)
1021
+
1022
+ def parse_audio_embeds(
1023
+ self,
1024
+ audio_embeds: str | dict[str, str] | None,
1025
+ uuid: str | None = None,
1026
+ ) -> None:
1027
+ mm_config = self.model_config.get_multimodal_config()
1028
+ if not mm_config.enable_mm_embeds:
1029
+ raise ValueError(
1030
+ "You must set `--enable-mm-embeds` to input `audio_embeds`"
1031
+ )
1032
+
1033
+ logger.info(
1034
+ "🎵 Parsing audio_embeds: type=%s, uuid=%s, is_dict=%s, "
1035
+ "is_str=%s, is_none=%s",
1036
+ type(audio_embeds).__name__,
1037
+ uuid,
1038
+ isinstance(audio_embeds, dict),
1039
+ isinstance(audio_embeds, str),
1040
+ audio_embeds is None,
1041
+ )
1042
+
1043
+ future: asyncio.Future[str | dict[str, str] | None] = asyncio.Future()
1044
+
1045
+ if isinstance(audio_embeds, dict):
1046
+ logger.info(
1047
+ "🎵 Processing dict audio_embeds with %d entries",
1048
+ len(audio_embeds),
1049
+ )
1050
+ embeds = {
1051
+ k: self._connector.fetch_audio_embedding(v)
1052
+ for k, v in audio_embeds.items()
1053
+ }
1054
+ future.set_result(embeds)
1055
+ logger.info(
1056
+ "🎵 Successfully loaded %d audio embeddings from dict",
1057
+ len(embeds),
1058
+ )
1059
+
1060
+ if isinstance(audio_embeds, str):
1061
+ base64_size = len(audio_embeds)
1062
+ logger.info(
1063
+ "🎵 Processing base64 audio_embeds: %d chars (%.2f KB)",
1064
+ base64_size,
1065
+ base64_size / 1024,
1066
+ )
1067
+ embedding = self._connector.fetch_audio_embedding(audio_embeds)
1068
+ future.set_result(embedding)
1069
+ logger.info(
1070
+ "🎵 Successfully loaded audio embedding tensor: shape=%s, dtype=%s",
1071
+ embedding.shape,
1072
+ embedding.dtype,
1073
+ )
1074
+
1075
+ if audio_embeds is None:
1076
+ logger.info("🎵 Audio embeds is None (UUID-only reference)")
1077
+ future.set_result(None)
1078
+
1079
+ placeholder = self._tracker.add("audio_embeds", future, uuid)
1080
+ self._add_placeholder("audio", placeholder)
1081
+ logger.info("🎵 Added audio_embeds placeholder with uuid=%s", uuid)
1082
+
1083
+ def parse_image_pil(
1084
+ self, image_pil: Image.Image | None, uuid: str | None = None
1085
+ ) -> None:
1086
+ future: asyncio.Future[Image.Image | None] = asyncio.Future()
1087
+ if image_pil:
1088
+ future.set_result(image_pil)
1089
+ else:
1090
+ future.set_result(None)
1091
+
1092
+ placeholder = self._tracker.add("image", future, uuid)
1093
+ self._add_placeholder("image", placeholder)
1094
+
1095
+ def parse_audio(self, audio_url: str | None, uuid: str | None = None) -> None:
1096
+ audio_coro = self._connector.fetch_audio_async(audio_url) if audio_url else None
1097
+
1098
+ placeholder = self._tracker.add("audio", audio_coro, uuid)
1099
+ self._add_placeholder("audio", placeholder)
1100
+
1101
+ def parse_input_audio(
1102
+ self, input_audio: InputAudio | None, uuid: str | None = None
1103
+ ) -> None:
1104
+ if input_audio:
1105
+ audio_data = input_audio.get("data", "")
1106
+ audio_format = input_audio.get("format", "")
1107
+ if audio_data:
1108
+ audio_url = f"data:audio/{audio_format};base64,{audio_data}"
1109
+ else:
1110
+ # If a UUID is provided, audio data may be empty.
1111
+ audio_url = None
1112
+ else:
1113
+ audio_url = None
1114
+
1115
+ return self.parse_audio(audio_url, uuid)
1116
+
1117
+ def parse_video(self, video_url: str | None, uuid: str | None = None) -> None:
1118
+ video = (
1119
+ self._connector.fetch_video_async(video_url=video_url)
1120
+ if video_url
1121
+ else None
1122
+ )
1123
+
1124
+ placeholder = self._tracker.add("video", video, uuid)
1125
+ self._add_placeholder("video", placeholder)
1126
+
1127
+
1128
+ def validate_chat_template(chat_template: Path | str | None):
1129
+ """Raises if the provided chat template appears invalid."""
1130
+ if chat_template is None:
1131
+ return
1132
+
1133
+ elif isinstance(chat_template, Path) and not chat_template.exists():
1134
+ raise FileNotFoundError("the supplied chat template path doesn't exist")
1135
+
1136
+ elif isinstance(chat_template, str):
1137
+ JINJA_CHARS = "{}\n"
1138
+ if (
1139
+ not any(c in chat_template for c in JINJA_CHARS)
1140
+ and not Path(chat_template).exists()
1141
+ ):
1142
+ raise ValueError(
1143
+ f"The supplied chat template string ({chat_template}) "
1144
+ f"appears path-like, but doesn't exist!"
1145
+ )
1146
+
1147
+ else:
1148
+ raise TypeError(f"{type(chat_template)} is not a valid chat template type")
1149
+
1150
+
1151
+ def _load_chat_template(
1152
+ chat_template: Path | str | None,
1153
+ *,
1154
+ is_literal: bool = False,
1155
+ ) -> str | None:
1156
+ if chat_template is None:
1157
+ return None
1158
+
1159
+ if is_literal:
1160
+ if isinstance(chat_template, Path):
1161
+ raise TypeError(
1162
+ "chat_template is expected to be read directly from its value"
1163
+ )
1164
+
1165
+ return chat_template
1166
+
1167
+ try:
1168
+ with open(chat_template) as f:
1169
+ return f.read()
1170
+ except OSError as e:
1171
+ if isinstance(chat_template, Path):
1172
+ raise
1173
+
1174
+ JINJA_CHARS = "{}\n"
1175
+ if not any(c in chat_template for c in JINJA_CHARS):
1176
+ msg = (
1177
+ f"The supplied chat template ({chat_template}) "
1178
+ f"looks like a file path, but it failed to be "
1179
+ f"opened. Reason: {e}"
1180
+ )
1181
+ raise ValueError(msg) from e
1182
+
1183
+ # If opening a file fails, set chat template to be args to
1184
+ # ensure we decode so our escape are interpreted correctly
1185
+ return _load_chat_template(chat_template, is_literal=True)
1186
+
1187
+
1188
+ _cached_load_chat_template = lru_cache(_load_chat_template)
1189
+
1190
+
1191
+ def load_chat_template(
1192
+ chat_template: Path | str | None,
1193
+ *,
1194
+ is_literal: bool = False,
1195
+ ) -> str | None:
1196
+ return _cached_load_chat_template(chat_template, is_literal=is_literal)
1197
+
1198
+
1199
+ def _get_interleaved_text_prompt(
1200
+ placeholder_storage: dict[str, list], texts: list[str]
1201
+ ) -> str:
1202
+ for idx, elem in enumerate(texts):
1203
+ if elem in placeholder_storage:
1204
+ texts[idx] = placeholder_storage[elem].pop(0)
1205
+
1206
+ return "\n".join(texts)
1207
+
1208
+
1209
+ # TODO: Let user specify how to insert multimodal tokens into prompt
1210
+ # (similar to chat template)
1211
+ def _get_full_multimodal_text_prompt(
1212
+ placeholder_storage: dict[str, list],
1213
+ texts: list[str],
1214
+ interleave_strings: bool,
1215
+ ) -> str:
1216
+ """Combine multimodal prompts for a multimodal language model."""
1217
+
1218
+ # flatten storage to make it looks like
1219
+ # {
1220
+ # "<|image|>": 2,
1221
+ # "<|audio|>": 1
1222
+ # }
1223
+ placeholder_counts = Counter(
1224
+ [v for elem in placeholder_storage.values() for v in elem]
1225
+ )
1226
+
1227
+ if interleave_strings:
1228
+ text_prompt = _get_interleaved_text_prompt(placeholder_storage, texts)
1229
+ else:
1230
+ text_prompt = "\n".join(texts)
1231
+
1232
+ # Pass interleaved text further in case the user used image placeholders
1233
+ # himself, but forgot to disable the 'interleave_strings' flag
1234
+
1235
+ # Look through the text prompt to check for missing placeholders
1236
+ missing_placeholders: list[str] = []
1237
+ for placeholder in placeholder_counts:
1238
+ # For any existing placeholder in the text prompt, we leave it as is
1239
+ placeholder_counts[placeholder] -= text_prompt.count(placeholder)
1240
+
1241
+ if placeholder_counts[placeholder] < 0:
1242
+ logger.error(
1243
+ "Placeholder count is negative! "
1244
+ "Ensure that the 'interleave_strings' flag is disabled "
1245
+ "(current value: %s) "
1246
+ "when manually placing image placeholders.",
1247
+ interleave_strings,
1248
+ )
1249
+ logger.debug("Input prompt: %s", text_prompt)
1250
+ raise ValueError(
1251
+ f"Found more '{placeholder}' placeholders in input prompt than "
1252
+ "actual multimodal data items."
1253
+ )
1254
+
1255
+ missing_placeholders.extend([placeholder] * placeholder_counts[placeholder])
1256
+
1257
+ # NOTE: Default behaviour: we always add missing placeholders
1258
+ # at the front of the prompt, if interleave_strings=False
1259
+ return "\n".join(missing_placeholders + [text_prompt])
1260
+
1261
+
1262
+ # No need to validate using Pydantic again
1263
+ _TextParser = partial(cast, ChatCompletionContentPartTextParam)
1264
+ _ImageEmbedsParser = partial(cast, ChatCompletionContentPartImageEmbedsParam)
1265
+ _AudioEmbedsParser = partial(cast, ChatCompletionContentPartAudioEmbedsParam)
1266
+ _InputAudioParser = partial(cast, ChatCompletionContentPartInputAudioParam)
1267
+ _RefusalParser = partial(cast, ChatCompletionContentPartRefusalParam)
1268
+ _PILImageParser = partial(cast, CustomChatCompletionContentPILImageParam)
1269
+ _ThinkParser = partial(cast, CustomThinkCompletionContentParam)
1270
+ # Need to validate url objects
1271
+ _ImageParser = TypeAdapter(ChatCompletionContentPartImageParam).validate_python
1272
+ _AudioParser = TypeAdapter(ChatCompletionContentPartAudioParam).validate_python
1273
+ _VideoParser = TypeAdapter(ChatCompletionContentPartVideoParam).validate_python
1274
+
1275
+ _ResponsesInputImageParser = TypeAdapter(ResponseInputImageParam).validate_python
1276
+ _ContentPart: TypeAlias = str | dict[str, str] | InputAudio | PILImage
1277
+
1278
+ # Define a mapping from part types to their corresponding parsing functions.
1279
+ MM_PARSER_MAP: dict[
1280
+ str,
1281
+ Callable[[ChatCompletionContentPartParam], _ContentPart],
1282
+ ] = {
1283
+ "text": lambda part: _TextParser(part).get("text", None),
1284
+ "thinking": lambda part: _ThinkParser(part).get("thinking", None),
1285
+ "input_text": lambda part: _TextParser(part).get("text", None),
1286
+ "output_text": lambda part: _TextParser(part).get("text", None),
1287
+ "input_image": lambda part: _ResponsesInputImageParser(part).get("image_url", None),
1288
+ "image_url": lambda part: _ImageParser(part).get("image_url", {}).get("url", None),
1289
+ "image_embeds": lambda part: _ImageEmbedsParser(part).get("image_embeds", None),
1290
+ "audio_embeds": lambda part: _AudioEmbedsParser(part).get("audio_embeds", None),
1291
+ "image_pil": lambda part: _PILImageParser(part).get("image_pil", None),
1292
+ "audio_url": lambda part: _AudioParser(part).get("audio_url", {}).get("url", None),
1293
+ "input_audio": lambda part: _InputAudioParser(part).get("input_audio", None),
1294
+ "refusal": lambda part: _RefusalParser(part).get("refusal", None),
1295
+ "video_url": lambda part: _VideoParser(part).get("video_url", {}).get("url", None),
1296
+ }
1297
+
1298
+
1299
+ def _parse_chat_message_content_mm_part(
1300
+ part: ChatCompletionContentPartParam,
1301
+ ) -> tuple[str, _ContentPart]:
1302
+ """
1303
+ Parses a given multi-modal content part based on its type.
1304
+
1305
+ Args:
1306
+ part: A dict containing the content part, with a potential 'type' field.
1307
+
1308
+ Returns:
1309
+ A tuple (part_type, content) where:
1310
+ - part_type: Type of the part (e.g., 'text', 'image_url').
1311
+ - content: Parsed content (e.g., text, image URL).
1312
+
1313
+ Raises:
1314
+ ValueError: If the 'type' field is missing and no direct URL is found.
1315
+ """
1316
+ assert isinstance(
1317
+ part, dict
1318
+ ) # This is needed to avoid mypy errors: part.get() from str
1319
+ part_type = part.get("type", None)
1320
+ uuid = part.get("uuid", None)
1321
+
1322
+ if isinstance(part_type, str) and part_type in MM_PARSER_MAP and uuid is None: # noqa: E501
1323
+ content = MM_PARSER_MAP[part_type](part)
1324
+
1325
+ # Special case for 'image_url.detail'
1326
+ # We only support 'auto', which is the default
1327
+ if part_type == "image_url" and part.get("detail", "auto") != "auto":
1328
+ logger.warning(
1329
+ "'image_url.detail' is currently not supported and will be ignored."
1330
+ )
1331
+
1332
+ return part_type, content
1333
+
1334
+ # Handle missing 'type' but provided direct URL fields.
1335
+ # 'type' is required field by pydantic
1336
+ if part_type is None or uuid is not None:
1337
+ if "image_url" in part:
1338
+ image_params = cast(CustomChatCompletionContentSimpleImageParam, part)
1339
+ image_url = image_params.get("image_url", None)
1340
+ if isinstance(image_url, dict):
1341
+ # Can potentially happen if user provides a uuid
1342
+ # with url as a dict of {"url": url}
1343
+ image_url = image_url.get("url", None)
1344
+ return "image_url", image_url
1345
+ if "image_pil" in part:
1346
+ # "image_pil" could be None if UUID is provided.
1347
+ image_params = cast( # type: ignore
1348
+ CustomChatCompletionContentPILImageParam, part
1349
+ )
1350
+ image_pil = image_params.get("image_pil", None)
1351
+ return "image_pil", image_pil
1352
+ if "image_embeds" in part:
1353
+ # "image_embeds" could be None if UUID is provided.
1354
+ image_params = cast( # type: ignore
1355
+ ChatCompletionContentPartImageEmbedsParam, part
1356
+ )
1357
+ image_embeds = image_params.get("image_embeds", None)
1358
+ return "image_embeds", image_embeds
1359
+ if "audio_embeds" in part:
1360
+ # "audio_embeds" could be None if UUID is provided.
1361
+ audio_params = cast( # type: ignore[assignment]
1362
+ ChatCompletionContentPartAudioEmbedsParam, part
1363
+ )
1364
+ audio_embeds = audio_params.get("audio_embeds", None)
1365
+ return "audio_embeds", audio_embeds
1366
+ if "audio_url" in part:
1367
+ audio_params = cast( # type: ignore[assignment]
1368
+ CustomChatCompletionContentSimpleAudioParam, part
1369
+ )
1370
+ audio_url = audio_params.get("audio_url", None)
1371
+ if isinstance(audio_url, dict):
1372
+ # Can potentially happen if user provides a uuid
1373
+ # with url as a dict of {"url": url}
1374
+ audio_url = audio_url.get("url", None)
1375
+ return "audio_url", audio_url
1376
+ if part.get("input_audio") is not None:
1377
+ input_audio_params = cast(dict[str, str], part)
1378
+ return "input_audio", input_audio_params
1379
+ if "video_url" in part:
1380
+ video_params = cast(CustomChatCompletionContentSimpleVideoParam, part)
1381
+ video_url = video_params.get("video_url", None)
1382
+ if isinstance(video_url, dict):
1383
+ # Can potentially happen if user provides a uuid
1384
+ # with url as a dict of {"url": url}
1385
+ video_url = video_url.get("url", None)
1386
+ return "video_url", video_url
1387
+ # Raise an error if no 'type' or direct URL is found.
1388
+ raise ValueError("Missing 'type' field in multimodal part.")
1389
+
1390
+ if not isinstance(part_type, str):
1391
+ raise ValueError("Invalid 'type' field in multimodal part.")
1392
+ return part_type, "unknown part_type content"
1393
+
1394
+
1395
+ PART_TYPES_TO_SKIP_NONE_CONTENT = (
1396
+ "text",
1397
+ "refusal",
1398
+ )
1399
+
1400
+
1401
+ def _parse_chat_message_content_parts(
1402
+ role: str,
1403
+ parts: Iterable[ChatCompletionContentPartParam],
1404
+ mm_tracker: BaseMultiModalItemTracker,
1405
+ *,
1406
+ wrap_dicts: bool,
1407
+ interleave_strings: bool,
1408
+ ) -> list[ConversationMessage]:
1409
+ content = list[_ContentPart]()
1410
+
1411
+ mm_parser = mm_tracker.create_parser()
1412
+
1413
+ for part in parts:
1414
+ parse_res = _parse_chat_message_content_part(
1415
+ part,
1416
+ mm_parser,
1417
+ wrap_dicts=wrap_dicts,
1418
+ interleave_strings=interleave_strings,
1419
+ )
1420
+ if parse_res:
1421
+ content.append(parse_res)
1422
+
1423
+ if wrap_dicts:
1424
+ # Parsing wraps images and texts as interleaved dictionaries
1425
+ return [ConversationMessage(role=role, content=content)] # type: ignore
1426
+ texts = cast(list[str], content)
1427
+ mm_placeholder_storage = mm_parser.mm_placeholder_storage()
1428
+ if mm_placeholder_storage:
1429
+ text_prompt = _get_full_multimodal_text_prompt(
1430
+ mm_placeholder_storage, texts, interleave_strings
1431
+ )
1432
+ else:
1433
+ text_prompt = "\n".join(texts)
1434
+
1435
+ return [ConversationMessage(role=role, content=text_prompt)]
1436
+
1437
+
1438
+ def _parse_chat_message_content_part(
1439
+ part: ChatCompletionContentPartParam,
1440
+ mm_parser: BaseMultiModalContentParser,
1441
+ *,
1442
+ wrap_dicts: bool,
1443
+ interleave_strings: bool,
1444
+ ) -> _ContentPart | None:
1445
+ """Parses a single part of a conversation. If wrap_dicts is True,
1446
+ structured dictionary pieces for texts and images will be
1447
+ wrapped in dictionaries, i.e., {"type": "text", "text", ...} and
1448
+ {"type": "image"}, respectively. Otherwise multimodal data will be
1449
+ handled by mm_parser, and texts will be returned as strings to be joined
1450
+ with multimodal placeholders.
1451
+ """
1452
+ if isinstance(part, str): # Handle plain text parts
1453
+ return part
1454
+ # Handle structured dictionary parts
1455
+ part_type, content = _parse_chat_message_content_mm_part(part)
1456
+ # if part_type is text/refusal/image_url/audio_url/video_url/input_audio but
1457
+ # content is None, log a warning and skip
1458
+ if part_type in PART_TYPES_TO_SKIP_NONE_CONTENT and content is None:
1459
+ logger.warning(
1460
+ "Skipping multimodal part '%s' (type: '%s') "
1461
+ "with empty / unparsable content.",
1462
+ part,
1463
+ part_type,
1464
+ )
1465
+ return None
1466
+
1467
+ if part_type in ("text", "input_text", "output_text", "refusal", "thinking"):
1468
+ str_content = cast(str, content)
1469
+ if wrap_dicts:
1470
+ return {"type": "text", "text": str_content}
1471
+ else:
1472
+ return str_content
1473
+
1474
+ # For media items, if a user has provided one, use it. Otherwise, insert
1475
+ # a placeholder empty uuid.
1476
+ uuid = part.get("uuid", None)
1477
+ if uuid is not None:
1478
+ uuid = str(uuid)
1479
+
1480
+ modality = None
1481
+ if part_type == "image_pil":
1482
+ image_content = cast(Image.Image, content) if content is not None else None
1483
+ mm_parser.parse_image_pil(image_content, uuid)
1484
+ modality = "image"
1485
+ elif part_type in ("image_url", "input_image"):
1486
+ str_content = cast(str, content)
1487
+ mm_parser.parse_image(str_content, uuid)
1488
+ modality = "image"
1489
+ elif part_type == "image_embeds":
1490
+ content = cast(str | dict[str, str], content) if content is not None else None
1491
+ mm_parser.parse_image_embeds(content, uuid)
1492
+ modality = "image"
1493
+ elif part_type == "audio_embeds":
1494
+ content = cast(str | dict[str, str], content) if content is not None else None
1495
+ mm_parser.parse_audio_embeds(content, uuid)
1496
+ modality = "audio"
1497
+ elif part_type == "audio_url":
1498
+ str_content = cast(str, content)
1499
+ mm_parser.parse_audio(str_content, uuid)
1500
+ modality = "audio"
1501
+ elif part_type == "input_audio":
1502
+ dict_content = cast(InputAudio, content)
1503
+ mm_parser.parse_input_audio(dict_content, uuid)
1504
+ modality = "audio"
1505
+ elif part_type == "video_url":
1506
+ str_content = cast(str, content)
1507
+ mm_parser.parse_video(str_content, uuid)
1508
+ modality = "video"
1509
+ else:
1510
+ raise NotImplementedError(f"Unknown part type: {part_type}")
1511
+
1512
+ return (
1513
+ {"type": modality}
1514
+ if wrap_dicts
1515
+ else (MODALITY_PLACEHOLDERS_MAP[modality] if interleave_strings else None)
1516
+ )
1517
+
1518
+
1519
+ # No need to validate using Pydantic again
1520
+ _AssistantParser = partial(cast, ChatCompletionAssistantMessageParam)
1521
+ _ToolParser = partial(cast, ChatCompletionToolMessageParam)
1522
+
1523
+
1524
+ def _parse_chat_message_content(
1525
+ message: ChatCompletionMessageParam,
1526
+ mm_tracker: BaseMultiModalItemTracker,
1527
+ content_format: _ChatTemplateContentFormat,
1528
+ interleave_strings: bool,
1529
+ ) -> list[ConversationMessage]:
1530
+ role = message["role"]
1531
+ content = message.get("content")
1532
+ reasoning = message.get("reasoning") or message.get("reasoning_content")
1533
+ if content is None:
1534
+ content = []
1535
+ elif isinstance(content, str):
1536
+ content = [ChatCompletionContentPartTextParam(type="text", text=content)]
1537
+ result = _parse_chat_message_content_parts(
1538
+ role,
1539
+ content, # type: ignore
1540
+ mm_tracker,
1541
+ wrap_dicts=(content_format == "openai"),
1542
+ interleave_strings=interleave_strings,
1543
+ )
1544
+
1545
+ for result_msg in result:
1546
+ if role == "assistant":
1547
+ parsed_msg = _AssistantParser(message)
1548
+
1549
+ # The 'tool_calls' is not None check ensures compatibility.
1550
+ # It's needed only if downstream code doesn't strictly
1551
+ # follow the OpenAI spec.
1552
+ if "tool_calls" in parsed_msg and parsed_msg["tool_calls"] is not None:
1553
+ result_msg["tool_calls"] = list(parsed_msg["tool_calls"])
1554
+ # Include reasoning if present for interleaved thinking.
1555
+ if reasoning is not None:
1556
+ result_msg["reasoning"] = cast(str, reasoning)
1557
+ result_msg["reasoning_content"] = cast(
1558
+ str, reasoning
1559
+ ) # keep compatibility
1560
+ elif role == "tool":
1561
+ parsed_msg = _ToolParser(message)
1562
+ if "tool_call_id" in parsed_msg:
1563
+ result_msg["tool_call_id"] = parsed_msg["tool_call_id"]
1564
+
1565
+ if "name" in message and isinstance(message["name"], str):
1566
+ result_msg["name"] = message["name"]
1567
+
1568
+ return result
1569
+
1570
+
1571
+ def _postprocess_messages(messages: list[ConversationMessage]) -> None:
1572
+ # per the Transformers docs & maintainers, tool call arguments in
1573
+ # assistant-role messages with tool_calls need to be dicts not JSON str -
1574
+ # this is how tool-use chat templates will expect them moving forwards
1575
+ # so, for messages that have tool_calls, parse the string (which we get
1576
+ # from openAI format) to dict
1577
+ for message in messages:
1578
+ if (
1579
+ message["role"] == "assistant"
1580
+ and "tool_calls" in message
1581
+ and isinstance(message["tool_calls"], list)
1582
+ ):
1583
+ for item in message["tool_calls"]:
1584
+ # if arguments is None or empty string, set to {}
1585
+ if content := item["function"].get("arguments"):
1586
+ if not isinstance(content, (dict, list)):
1587
+ item["function"]["arguments"] = json.loads(content)
1588
+ else:
1589
+ item["function"]["arguments"] = {}
1590
+
1591
+
1592
+ def parse_chat_messages(
1593
+ messages: list[ChatCompletionMessageParam],
1594
+ model_config: ModelConfig,
1595
+ tokenizer: TokenizerLike,
1596
+ content_format: _ChatTemplateContentFormat,
1597
+ ) -> tuple[
1598
+ list[ConversationMessage],
1599
+ MultiModalDataDict | None,
1600
+ MultiModalUUIDDict | None,
1601
+ ]:
1602
+ conversation: list[ConversationMessage] = []
1603
+ mm_tracker = MultiModalItemTracker(model_config, tokenizer)
1604
+
1605
+ for msg in messages:
1606
+ sub_messages = _parse_chat_message_content(
1607
+ msg,
1608
+ mm_tracker,
1609
+ content_format,
1610
+ interleave_strings=(
1611
+ content_format == "string"
1612
+ and model_config.multimodal_config is not None
1613
+ and model_config.multimodal_config.interleave_mm_strings
1614
+ ),
1615
+ )
1616
+
1617
+ conversation.extend(sub_messages)
1618
+
1619
+ _postprocess_messages(conversation)
1620
+
1621
+ return conversation, mm_tracker.all_mm_data(), mm_tracker.all_mm_uuids()
1622
+
1623
+
1624
+ def parse_chat_messages_futures(
1625
+ messages: list[ChatCompletionMessageParam],
1626
+ model_config: ModelConfig,
1627
+ tokenizer: TokenizerLike,
1628
+ content_format: _ChatTemplateContentFormat,
1629
+ ) -> tuple[
1630
+ list[ConversationMessage],
1631
+ Awaitable[MultiModalDataDict | None],
1632
+ MultiModalUUIDDict | None,
1633
+ ]:
1634
+ conversation: list[ConversationMessage] = []
1635
+ mm_tracker = AsyncMultiModalItemTracker(model_config, tokenizer)
1636
+
1637
+ for msg in messages:
1638
+ sub_messages = _parse_chat_message_content(
1639
+ msg,
1640
+ mm_tracker,
1641
+ content_format,
1642
+ interleave_strings=(
1643
+ content_format == "string"
1644
+ and model_config.multimodal_config is not None
1645
+ and model_config.multimodal_config.interleave_mm_strings
1646
+ ),
1647
+ )
1648
+
1649
+ conversation.extend(sub_messages)
1650
+
1651
+ _postprocess_messages(conversation)
1652
+
1653
+ return conversation, mm_tracker.all_mm_data(), mm_tracker.all_mm_uuids()
1654
+
1655
+
1656
+ # adapted from https://github.com/huggingface/transformers/blob/v4.56.2/src/transformers/utils/chat_template_utils.py#L398-L412
1657
+ # only preserve the parse function used to resolve chat template kwargs
1658
+ class AssistantTracker(jinja2.ext.Extension):
1659
+ tags = {"generation"}
1660
+
1661
+ def parse(self, parser: jinja2.parser.Parser) -> jinja2.nodes.CallBlock:
1662
+ lineno = next(parser.stream).lineno
1663
+ body = parser.parse_statements(["name:endgeneration"], drop_needle=True)
1664
+ call = self.call_method("_generation_support")
1665
+ call_block = jinja2.nodes.CallBlock(call, [], [], body)
1666
+ return call_block.set_lineno(lineno)
1667
+
1668
+
1669
+ def _resolve_chat_template_kwargs(
1670
+ chat_template: str,
1671
+ ):
1672
+ env = jinja2.sandbox.ImmutableSandboxedEnvironment(
1673
+ trim_blocks=True,
1674
+ lstrip_blocks=True,
1675
+ extensions=[AssistantTracker, jinja2.ext.loopcontrols],
1676
+ )
1677
+ parsed_content = env.parse(chat_template)
1678
+ template_vars = jinja2.meta.find_undeclared_variables(parsed_content)
1679
+ return template_vars
1680
+
1681
+
1682
+ _cached_resolve_chat_template_kwargs = lru_cache(_resolve_chat_template_kwargs)
1683
+
1684
+
1685
+ @lru_cache
1686
+ def _get_hf_base_chat_template_params() -> frozenset[str]:
1687
+ # Get standard parameters from HuggingFace's base tokenizer class.
1688
+ # This dynamically extracts parameters from PreTrainedTokenizer's
1689
+ # apply_chat_template method, ensuring compatibility with tokenizers
1690
+ # that use **kwargs to receive standard parameters.
1691
+
1692
+ # Read signature from HF's base class - the single source of truth
1693
+ base_sig = inspect.signature(PreTrainedTokenizer.apply_chat_template)
1694
+ # Exclude VAR_KEYWORD (**kwargs) and VAR_POSITIONAL (*args) placeholders
1695
+ return frozenset(
1696
+ p.name
1697
+ for p in base_sig.parameters.values()
1698
+ if p.kind
1699
+ not in (inspect.Parameter.VAR_KEYWORD, inspect.Parameter.VAR_POSITIONAL)
1700
+ )
1701
+
1702
+
1703
+ def resolve_chat_template_kwargs(
1704
+ tokenizer: PreTrainedTokenizer | PreTrainedTokenizerFast,
1705
+ chat_template: str,
1706
+ chat_template_kwargs: dict[str, Any],
1707
+ raise_on_unexpected: bool = True,
1708
+ ) -> dict[str, Any]:
1709
+ # We exclude chat_template from kwargs here, because
1710
+ # chat template has been already resolved at this stage
1711
+ unexpected_vars = {"chat_template", "tokenize"}
1712
+ if raise_on_unexpected and (
1713
+ unexpected_in_kwargs := unexpected_vars & chat_template_kwargs.keys()
1714
+ ):
1715
+ raise ValueError(
1716
+ "Found unexpected chat template kwargs from request: "
1717
+ f"{unexpected_in_kwargs}"
1718
+ )
1719
+
1720
+ fn_kw = {
1721
+ k
1722
+ for k in chat_template_kwargs
1723
+ if supports_kw(tokenizer.apply_chat_template, k, allow_var_kwargs=False)
1724
+ }
1725
+ template_vars = _cached_resolve_chat_template_kwargs(chat_template)
1726
+
1727
+ # Allow standard HF parameters even if tokenizer uses **kwargs to receive them
1728
+ hf_base_params = _get_hf_base_chat_template_params()
1729
+
1730
+ accept_vars = (fn_kw | template_vars | hf_base_params) - unexpected_vars
1731
+ return {k: v for k, v in chat_template_kwargs.items() if k in accept_vars}
1732
+
1733
+
1734
+ def apply_hf_chat_template(
1735
+ tokenizer: PreTrainedTokenizer | PreTrainedTokenizerFast,
1736
+ conversation: list[ConversationMessage],
1737
+ chat_template: str | None,
1738
+ tools: list[dict[str, Any]] | None,
1739
+ *,
1740
+ model_config: ModelConfig,
1741
+ **kwargs: Any,
1742
+ ) -> str:
1743
+ hf_chat_template = resolve_hf_chat_template(
1744
+ tokenizer,
1745
+ chat_template=chat_template,
1746
+ tools=tools,
1747
+ model_config=model_config,
1748
+ )
1749
+
1750
+ if hf_chat_template is None:
1751
+ raise ValueError(
1752
+ "As of transformers v4.44, default chat template is no longer "
1753
+ "allowed, so you must provide a chat template if the tokenizer "
1754
+ "does not define one."
1755
+ )
1756
+
1757
+ resolved_kwargs = resolve_chat_template_kwargs(
1758
+ tokenizer=tokenizer,
1759
+ chat_template=hf_chat_template,
1760
+ chat_template_kwargs=kwargs,
1761
+ )
1762
+
1763
+ try:
1764
+ return tokenizer.apply_chat_template(
1765
+ conversation=conversation, # type: ignore[arg-type]
1766
+ tools=tools, # type: ignore[arg-type]
1767
+ chat_template=hf_chat_template,
1768
+ tokenize=False,
1769
+ **resolved_kwargs,
1770
+ )
1771
+
1772
+ # External library exceptions can sometimes occur despite the framework's
1773
+ # internal exception management capabilities.
1774
+ except Exception as e:
1775
+ # Log and report any library-related exceptions for further
1776
+ # investigation.
1777
+ logger.exception(
1778
+ "An error occurred in `transformers` while applying chat template"
1779
+ )
1780
+ raise ValueError(str(e)) from e
1781
+
1782
+
1783
+ def apply_mistral_chat_template(
1784
+ tokenizer: MistralTokenizer,
1785
+ messages: list[ChatCompletionMessageParam],
1786
+ chat_template: str | None,
1787
+ tools: list[dict[str, Any]] | None,
1788
+ **kwargs: Any,
1789
+ ) -> list[int]:
1790
+ from mistral_common.exceptions import MistralCommonException
1791
+
1792
+ # The return value of resolve_mistral_chat_template is always None,
1793
+ # and we won't use it.
1794
+ resolve_mistral_chat_template(
1795
+ chat_template=chat_template,
1796
+ **kwargs,
1797
+ )
1798
+
1799
+ try:
1800
+ return tokenizer.apply_chat_template(
1801
+ messages=messages,
1802
+ tools=tools,
1803
+ **kwargs,
1804
+ )
1805
+ # mistral-common uses assert statements to stop processing of input
1806
+ # if input does not comply with the expected format.
1807
+ # We convert those assertion errors to ValueErrors so they can be
1808
+ # properly caught in the preprocessing_input step
1809
+ except (AssertionError, MistralCommonException) as e:
1810
+ raise ValueError(str(e)) from e
1811
+
1812
+ # External library exceptions can sometimes occur despite the framework's
1813
+ # internal exception management capabilities.
1814
+ except Exception as e:
1815
+ # Log and report any library-related exceptions for further
1816
+ # investigation.
1817
+ logger.exception(
1818
+ "An error occurred in `mistral_common` while applying chat template"
1819
+ )
1820
+ raise ValueError(str(e)) from e
1821
+
1822
+
1823
+ def get_history_tool_calls_cnt(conversation: list[ConversationMessage]):
1824
+ idx = 0
1825
+ for msg in conversation:
1826
+ if msg["role"] == "assistant":
1827
+ tool_calls = msg.get("tool_calls")
1828
+ idx += len(list(tool_calls)) if tool_calls is not None else 0 # noqa
1829
+ return idx
1830
+
1831
+
1832
+ def make_tool_call_id(id_type: str = "random", func_name=None, idx=None):
1833
+ if id_type == "kimi_k2":
1834
+ return f"functions.{func_name}:{idx}"
1835
+ else:
1836
+ # by default return random
1837
+ return f"chatcmpl-tool-{random_uuid()}"