Enable overlap by default (#2067)
This commit is contained in:
@@ -899,10 +899,7 @@ class ScheduleBatch:
|
||||
|
||||
self.input_ids = self.output_ids
|
||||
self.output_ids = None
|
||||
if self.sampling_info.penalizer_orchestrator:
|
||||
self.sampling_info.penalizer_orchestrator.cumulate_output_tokens(
|
||||
self.input_ids
|
||||
)
|
||||
self.sampling_info.penalizer_orchestrator.cumulate_output_tokens(self.input_ids)
|
||||
|
||||
# Alloc mem
|
||||
bs = len(self.reqs)
|
||||
|
||||
@@ -30,7 +30,7 @@ import torch
|
||||
import zmq
|
||||
|
||||
from sglang.global_config import global_config
|
||||
from sglang.srt.configs.model_config import ModelConfig
|
||||
from sglang.srt.configs.model_config import AttentionArch, ModelConfig
|
||||
from sglang.srt.hf_transformers_utils import get_processor, get_tokenizer
|
||||
from sglang.srt.layers.logits_processor import LogitsProcessorOutput
|
||||
from sglang.srt.managers.io_struct import (
|
||||
@@ -102,7 +102,7 @@ class Scheduler:
|
||||
self.disable_jump_forward = server_args.disable_jump_forward
|
||||
self.lora_paths = server_args.lora_paths
|
||||
self.max_loras_per_batch = server_args.max_loras_per_batch
|
||||
self.enable_overlap = server_args.enable_overlap_schedule
|
||||
self.enable_overlap = not server_args.disable_overlap_schedule
|
||||
self.skip_tokenizer_init = server_args.skip_tokenizer_init
|
||||
self.enable_metrics = server_args.enable_metrics
|
||||
|
||||
@@ -159,6 +159,23 @@ class Scheduler:
|
||||
trust_remote_code=server_args.trust_remote_code,
|
||||
)
|
||||
|
||||
# Check whether overlap can be enabled
|
||||
if not self.is_generation:
|
||||
self.enable_overlap = False
|
||||
logger.info("Overlap scheduler is disabled for embedding models.")
|
||||
if (
|
||||
server_args.attention_backend == "triton"
|
||||
or server_args.enable_double_sparsity
|
||||
or (
|
||||
self.model_config.attention_arch == AttentionArch.MLA
|
||||
and not self.server_args.disable_mla
|
||||
)
|
||||
):
|
||||
self.enable_overlap = False
|
||||
logger.info(
|
||||
"Overlap scheduler is disabled if using triton attention backend."
|
||||
)
|
||||
|
||||
# Launch a tensor parallel worker
|
||||
if self.enable_overlap:
|
||||
TpWorkerClass = TpModelWorkerClient
|
||||
@@ -903,6 +920,7 @@ class Scheduler:
|
||||
self.process_batch_result_prefill(batch, result)
|
||||
elif batch.forward_mode.is_dummy_first():
|
||||
batch.next_batch_sampling_info.update_regex_vocab_mask()
|
||||
torch.cuda.current_stream().synchronize()
|
||||
batch.next_batch_sampling_info.sampling_info_done.set()
|
||||
|
||||
def process_batch_result_prefill(self, batch: ScheduleBatch, result):
|
||||
@@ -958,6 +976,7 @@ class Scheduler:
|
||||
|
||||
if batch.next_batch_sampling_info:
|
||||
batch.next_batch_sampling_info.update_regex_vocab_mask()
|
||||
torch.cuda.current_stream().synchronize()
|
||||
batch.next_batch_sampling_info.sampling_info_done.set()
|
||||
|
||||
else: # embedding or reward model
|
||||
@@ -1031,6 +1050,7 @@ class Scheduler:
|
||||
|
||||
if batch.next_batch_sampling_info:
|
||||
batch.next_batch_sampling_info.update_regex_vocab_mask()
|
||||
torch.cuda.current_stream().synchronize()
|
||||
batch.next_batch_sampling_info.sampling_info_done.set()
|
||||
|
||||
self.stream_output(batch.reqs)
|
||||
|
||||
@@ -157,14 +157,19 @@ class TpModelWorkerClient:
|
||||
|
||||
def forward_batch_generation(self, model_worker_batch: ModelWorkerBatch):
|
||||
# A cuda stream sync here to avoid the cuda illegal memory access error.
|
||||
_ = model_worker_batch.seq_lens[0].item()
|
||||
torch.cuda.current_stream().synchronize()
|
||||
|
||||
# Create a new copy of sampling_info because it will be updated in-place by the scheduler for the next batch.
|
||||
sampling_info = model_worker_batch.sampling_info
|
||||
sampling_info.update_penalties()
|
||||
model_worker_batch.sampling_info = self.cur_sampling_info = dataclasses.replace(
|
||||
sampling_info,
|
||||
sampling_info_done=threading.Event(),
|
||||
scaling_penalties=sampling_info.scaling_penalties,
|
||||
linear_penalties=sampling_info.linear_penalties,
|
||||
)
|
||||
|
||||
# Push a new batch to the queue
|
||||
model_worker_batch.sampling_info = dataclasses.replace(
|
||||
model_worker_batch.sampling_info,
|
||||
sampling_info_done=threading.Event(),
|
||||
)
|
||||
self.cur_sampling_info = model_worker_batch.sampling_info
|
||||
self.input_queue.put((model_worker_batch, self.future_token_ids_ct))
|
||||
|
||||
# Allocate output future objects
|
||||
|
||||
Reference in New Issue
Block a user