Unify forward mode (#1360)
This commit is contained in:
@@ -29,6 +29,7 @@ from sglang.srt.constrained.jump_forward import JumpForwardMap
|
||||
from sglang.srt.mem_cache.base_prefix_cache import BasePrefixCache
|
||||
from sglang.srt.mem_cache.chunk_cache import ChunkCache
|
||||
from sglang.srt.mem_cache.memory_pool import BaseTokenToKVPool, ReqToTokenPool
|
||||
from sglang.srt.model_executor.forward_batch_info import ForwardMode
|
||||
from sglang.srt.sampling.sampling_batch_info import SamplingBatchInfo
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -334,6 +335,8 @@ class ScheduleBatch:
|
||||
token_to_kv_pool: BaseTokenToKVPool
|
||||
tree_cache: BasePrefixCache
|
||||
|
||||
forward_mode: ForwardMode = None
|
||||
|
||||
# Batched arguments to model runner
|
||||
input_ids: torch.Tensor = None
|
||||
req_pool_indices: torch.Tensor = None
|
||||
@@ -397,6 +400,8 @@ class ScheduleBatch:
|
||||
return out_cache_loc
|
||||
|
||||
def prepare_for_extend(self, vocab_size: int):
|
||||
self.forward_mode = ForwardMode.EXTEND
|
||||
|
||||
bs = self.batch_size()
|
||||
reqs = self.reqs
|
||||
input_ids = [r.fill_ids[len(r.prefix_indices) :] for r in reqs]
|
||||
@@ -626,6 +631,8 @@ class ScheduleBatch:
|
||||
return jump_forward_reqs
|
||||
|
||||
def prepare_for_decode(self, input_ids=None):
|
||||
self.forward_mode = ForwardMode.DECODE
|
||||
|
||||
if input_ids is None:
|
||||
input_ids = [
|
||||
r.output_ids[-1] if r.output_ids else r.origin_input_ids[-1]
|
||||
|
||||
@@ -53,7 +53,6 @@ from sglang.srt.managers.schedule_batch import (
|
||||
from sglang.srt.mem_cache.chunk_cache import ChunkCache
|
||||
from sglang.srt.mem_cache.radix_cache import RadixCache
|
||||
from sglang.srt.model_config import ModelConfig
|
||||
from sglang.srt.model_executor.forward_batch_info import ForwardMode
|
||||
from sglang.srt.model_executor.model_runner import ModelRunner
|
||||
from sglang.srt.server_args import ServerArgs
|
||||
from sglang.srt.utils import (
|
||||
@@ -521,9 +520,7 @@ class ModelTpServer:
|
||||
if self.model_runner.is_generation:
|
||||
# Forward and sample the next tokens
|
||||
if batch.extend_num_tokens != 0:
|
||||
sample_output, logits_output = self.model_runner.forward(
|
||||
batch, ForwardMode.EXTEND
|
||||
)
|
||||
sample_output, logits_output = self.model_runner.forward(batch)
|
||||
next_token_ids = batch.check_sample_results(sample_output)
|
||||
batch.sampling_info.penalizer_orchestrator.cumulate_output_tokens(
|
||||
next_token_ids
|
||||
@@ -588,7 +585,7 @@ class ModelTpServer:
|
||||
pt += req.extend_input_len
|
||||
else:
|
||||
assert batch.extend_num_tokens != 0
|
||||
logits_output = self.model_runner.forward(batch, ForwardMode.EXTEND)
|
||||
logits_output = self.model_runner.forward(batch)
|
||||
embeddings = logits_output.embeddings.tolist()
|
||||
|
||||
# Check finish conditions
|
||||
@@ -699,9 +696,7 @@ class ModelTpServer:
|
||||
batch.prepare_for_decode()
|
||||
|
||||
# Forward and sample the next tokens
|
||||
sample_output, logits_output = self.model_runner.forward(
|
||||
batch, ForwardMode.DECODE
|
||||
)
|
||||
sample_output, logits_output = self.model_runner.forward(batch)
|
||||
next_token_ids = batch.check_sample_results(sample_output)
|
||||
batch.sampling_info.penalizer_orchestrator.cumulate_output_tokens(
|
||||
next_token_ids
|
||||
|
||||
Reference in New Issue
Block a user