main
py 70 lines 2.66 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3 import torch
4
5 from vllm.config import VllmConfig
6
7
8 def init_speculator(vllm_config: VllmConfig, device: torch.device):
9 speculative_config = vllm_config.speculative_config
10 assert speculative_config is not None
11 if speculative_config.method == "extract_hidden_states":
12 from vllm.v1.worker.gpu.spec_decode.extract_hidden_states import (
13 ExtractHiddenStatesSpeculator,
14 )
15
16 return ExtractHiddenStatesSpeculator(vllm_config, device)
17 elif speculative_config.method == "dflash":
18 if "LiLiCorrDraftModel" in speculative_config.draft_model_config.architectures:
19 from vllm.v1.worker.gpu.spec_decode.lilicorr.speculator import (
20 LiLiCorrSpeculator,
21 )
22
23 return LiLiCorrSpeculator(vllm_config, device)
24 if "DFlash2DraftModel" in speculative_config.draft_model_config.architectures:
25 from vllm.v1.worker.gpu.spec_decode.dflash2.speculator import (
26 DFlash2Speculator,
27 )
28
29 return DFlash2Speculator(vllm_config, device)
30 from vllm.v1.worker.gpu.spec_decode.dflash.speculator import (
31 DFlashSpeculator,
32 )
33
34 return DFlashSpeculator(vllm_config, device)
35 elif speculative_config.method == "dspark":
36 from vllm.v1.worker.gpu.spec_decode.dspark.speculator import (
37 DSparkSpeculator,
38 )
39
40 return DSparkSpeculator(vllm_config, device)
41 elif speculative_config.use_gemma4_mtp():
42 from vllm.v1.worker.gpu.spec_decode.gemma4.speculator import (
43 Gemma4Speculator,
44 )
45
46 return Gemma4Speculator(vllm_config, device)
47 elif speculative_config.use_multi_module_mtp():
48 from vllm.v1.worker.gpu.spec_decode.multi_module_mtp.speculator import (
49 MultiModuleMTPSpeculator,
50 )
51
52 return MultiModuleMTPSpeculator(vllm_config, device)
53 elif speculative_config.method == "mtp":
54 from vllm.v1.worker.gpu.spec_decode.mtp.speculator import MTPSpeculator
55
56 return MTPSpeculator(vllm_config, device)
57 elif speculative_config.use_eagle():
58 from vllm.v1.worker.gpu.spec_decode.eagle.speculator import (
59 EagleSpeculator,
60 )
61
62 return EagleSpeculator(vllm_config, device)
63 elif speculative_config.uses_draft_model():
64 from vllm.v1.worker.gpu.spec_decode.draft_model.speculator import (
65 PlainDraftModelSpeculator,
66 )
67
68 return PlainDraftModelSpeculator(vllm_config, device)
69 else:
70 raise NotImplementedError(f"{speculative_config.method} is not supported yet.")