init support for KTransformers Heterogeneous Computing (#11487)

Co-authored-by: Jianwei Dong <1913953267@qq.com>
This commit is contained in:
Atream
2025-10-21 15:17:02 +08:00
committed by GitHub
parent 6f9b66bdda
commit 7e6191c098
9 changed files with 547 additions and 17 deletions

View File

@@ -91,6 +91,7 @@ QUANTIZATION_CHOICES = [
"qoq",
"w4afp8",
"mxfp4",
"compressed-tensors", # for Ktransformers
]
ATTENTION_BACKEND_CHOICES = [
@@ -389,6 +390,13 @@ class ServerArgs:
# LMCache
enable_lmcache: bool = False
# Ktransformers
kt_amx_weight_path: Optional[str] = None
kt_amx_method: Optional[str] = None
kt_cpuinfer: Optional[int] = None
kt_threadpool_count: Optional[int] = None
kt_num_gpu_experts: Optional[int] = None
# Double Sparsity
enable_double_sparsity: bool = False
ds_channel_config_path: Optional[str] = None
@@ -544,6 +552,9 @@ class ServerArgs:
self._handle_amd_specifics()
self._handle_grammar_backend()
# Handle Ktransformers specific configs
self._handle_ktransformers_configs()
# Handle data parallelism.
self._handle_data_parallelism()
@@ -595,6 +606,22 @@ class ServerArgs:
)
self.tool_call_parser = deprecated_tool_call_parsers[self.tool_call_parser]
def _handle_ktransformers_configs(self):
from sglang.srt.layers.quantization.compressed_tensors.compressed_tensors_moe import (
CompressedTensorsWNA16AMXEPMoEMethod,
override_config,
)
override_config(
CompressedTensorsWNA16AMXEPMoEMethod,
self.kt_num_gpu_experts,
self.kt_cpuinfer,
self.kt_threadpool_count,
self.kt_amx_weight_path,
self.kt_amx_method,
self.chunked_prefill_size,
)
def _handle_missing_default_values(self):
if self.tokenizer_path is None:
self.tokenizer_path = self.model_path
@@ -1518,6 +1545,7 @@ class ServerArgs:
@staticmethod
def add_cli_args(parser: argparse.ArgumentParser):
# Model and tokenizer
parser.add_argument(
"--model-path",
@@ -2675,6 +2703,35 @@ class ServerArgs:
help="Using LMCache as an alternative hierarchical cache solution",
)
# Ktransformer server args
parser.add_argument(
"--kt-amx-weight-path",
type=str,
help="[ktransformers parameter] The path of the quantized expert weights for amx kernel. A local folder.",
)
parser.add_argument(
"--kt-amx-method",
type=str,
default="AMXINT4",
help="[ktransformers parameter] Quantization formats for CPU execution.",
)
parser.add_argument(
"--kt-cpuinfer",
type=int,
help="[ktransformers parameter] The number of CPUInfer threads.",
)
parser.add_argument(
"--kt-threadpool-count",
type=int,
default=2,
help="[ktransformers parameter] One-to-one with the number of NUMA nodes (one thread pool per NUMA).",
)
parser.add_argument(
"--kt-num-gpu-experts",
type=int,
help="[ktransformers parameter] The number of GPU experts.",
)
# Double Sparsity
parser.add_argument(
"--enable-double-sparsity",