tiny unify environ usage (#15335)
This commit is contained in:
@@ -1040,8 +1040,8 @@ multimodal_model_archs = [
|
|||||||
"PaddleOCRVLForConditionalGeneration",
|
"PaddleOCRVLForConditionalGeneration",
|
||||||
]
|
]
|
||||||
|
|
||||||
if envs.SGLANG_EXTERNAL_MM_MODEL_ARCH.value:
|
if external_mm_model_arch := envs.SGLANG_EXTERNAL_MM_MODEL_ARCH.get():
|
||||||
multimodal_model_archs.append(envs.SGLANG_EXTERNAL_MM_MODEL_ARCH.value)
|
multimodal_model_archs.append(external_mm_model_arch)
|
||||||
|
|
||||||
|
|
||||||
def is_multimodal_model(model_architectures: List[str]):
|
def is_multimodal_model(model_architectures: List[str]):
|
||||||
|
|||||||
@@ -70,10 +70,6 @@ class EnvField:
|
|||||||
os.environ.pop(self.name, None)
|
os.environ.pop(self.name, None)
|
||||||
self._set_to_none = False
|
self._set_to_none = False
|
||||||
|
|
||||||
@property
|
|
||||||
def value(self):
|
|
||||||
return self.get()
|
|
||||||
|
|
||||||
def __bool__(self):
|
def __bool__(self):
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"Please use `envs.YOUR_FLAG.get()` instead of `envs.YOUR_FLAG`"
|
"Please use `envs.YOUR_FLAG.get()` instead of `envs.YOUR_FLAG`"
|
||||||
@@ -425,9 +421,9 @@ def example_with_exit_stack():
|
|||||||
# Use this style of context manager in unit test
|
# Use this style of context manager in unit test
|
||||||
exit_stack = ExitStack()
|
exit_stack = ExitStack()
|
||||||
exit_stack.enter_context(envs.SGLANG_TEST_RETRACT.override(False))
|
exit_stack.enter_context(envs.SGLANG_TEST_RETRACT.override(False))
|
||||||
assert envs.SGLANG_TEST_RETRACT.value is False
|
assert envs.SGLANG_TEST_RETRACT.get() is False
|
||||||
exit_stack.close()
|
exit_stack.close()
|
||||||
assert envs.SGLANG_TEST_RETRACT.value is None
|
assert envs.SGLANG_TEST_RETRACT.get() is None
|
||||||
|
|
||||||
|
|
||||||
def example_with_subprocess():
|
def example_with_subprocess():
|
||||||
@@ -472,29 +468,29 @@ def example_with_implicit_bool_avoidance():
|
|||||||
def examples():
|
def examples():
|
||||||
# Example usage for envs
|
# Example usage for envs
|
||||||
envs.SGLANG_TEST_RETRACT.clear()
|
envs.SGLANG_TEST_RETRACT.clear()
|
||||||
assert envs.SGLANG_TEST_RETRACT.value is False
|
assert envs.SGLANG_TEST_RETRACT.get() is False
|
||||||
|
|
||||||
envs.SGLANG_TEST_RETRACT.set(None)
|
envs.SGLANG_TEST_RETRACT.set(None)
|
||||||
assert envs.SGLANG_TEST_RETRACT.is_set() and envs.SGLANG_TEST_RETRACT.value is None
|
assert envs.SGLANG_TEST_RETRACT.is_set() and envs.SGLANG_TEST_RETRACT.get() is None
|
||||||
|
|
||||||
envs.SGLANG_TEST_RETRACT.clear()
|
envs.SGLANG_TEST_RETRACT.clear()
|
||||||
assert not envs.SGLANG_TEST_RETRACT.is_set()
|
assert not envs.SGLANG_TEST_RETRACT.is_set()
|
||||||
|
|
||||||
envs.SGLANG_TEST_RETRACT.set(True)
|
envs.SGLANG_TEST_RETRACT.set(True)
|
||||||
assert envs.SGLANG_TEST_RETRACT.value is True
|
assert envs.SGLANG_TEST_RETRACT.get() is True
|
||||||
|
|
||||||
with envs.SGLANG_TEST_RETRACT.override(None):
|
with envs.SGLANG_TEST_RETRACT.override(None):
|
||||||
assert (
|
assert (
|
||||||
envs.SGLANG_TEST_RETRACT.is_set() and envs.SGLANG_TEST_RETRACT.value is None
|
envs.SGLANG_TEST_RETRACT.is_set() and envs.SGLANG_TEST_RETRACT.get() is None
|
||||||
)
|
)
|
||||||
|
|
||||||
assert envs.SGLANG_TEST_RETRACT.value is True
|
assert envs.SGLANG_TEST_RETRACT.get() is True
|
||||||
|
|
||||||
envs.SGLANG_TEST_RETRACT.set(None)
|
envs.SGLANG_TEST_RETRACT.set(None)
|
||||||
with envs.SGLANG_TEST_RETRACT.override(True):
|
with envs.SGLANG_TEST_RETRACT.override(True):
|
||||||
assert envs.SGLANG_TEST_RETRACT.value is True
|
assert envs.SGLANG_TEST_RETRACT.get() is True
|
||||||
|
|
||||||
assert envs.SGLANG_TEST_RETRACT.is_set() and envs.SGLANG_TEST_RETRACT.value is None
|
assert envs.SGLANG_TEST_RETRACT.is_set() and envs.SGLANG_TEST_RETRACT.get() is None
|
||||||
|
|
||||||
example_with_exit_stack()
|
example_with_exit_stack()
|
||||||
example_with_subprocess()
|
example_with_subprocess()
|
||||||
|
|||||||
@@ -268,9 +268,9 @@ class LogitsProcessor(nn.Module):
|
|||||||
self.return_full_logits = return_full_logits
|
self.return_full_logits = return_full_logits
|
||||||
|
|
||||||
# enable chunked logprobs processing
|
# enable chunked logprobs processing
|
||||||
self.enable_logprobs_chunk = envs.SGLANG_ENABLE_LOGITS_PROCESSER_CHUNK.value
|
self.enable_logprobs_chunk = envs.SGLANG_ENABLE_LOGITS_PROCESSER_CHUNK.get()
|
||||||
# chunk size for logprobs processing
|
# chunk size for logprobs processing
|
||||||
self.logprobs_chunk_size = envs.SGLANG_LOGITS_PROCESSER_CHUNK_SIZE.value
|
self.logprobs_chunk_size = envs.SGLANG_LOGITS_PROCESSER_CHUNK_SIZE.get()
|
||||||
|
|
||||||
def compute_logprobs_for_multi_item_scoring(
|
def compute_logprobs_for_multi_item_scoring(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ class RotaryEmbedding(CustomOp):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Align to reduce realloc frequency
|
# Align to reduce realloc frequency
|
||||||
align = envs.SGLANG_ROPE_CACHE_ALIGN.value
|
align = envs.SGLANG_ROPE_CACHE_ALIGN.get()
|
||||||
new_len = ((needed_max_pos + align) // align) * align
|
new_len = ((needed_max_pos + align) // align) * align
|
||||||
device = self.cos_sin_cache.device
|
device = self.cos_sin_cache.device
|
||||||
dtype = self.cos_sin_cache.dtype
|
dtype = self.cos_sin_cache.dtype
|
||||||
|
|||||||
@@ -215,10 +215,8 @@ class TokenizerManager(TokenizerCommunicatorMixin, TokenizerManagerMultiItemMixi
|
|||||||
# Initialize tokenizer and processor
|
# Initialize tokenizer and processor
|
||||||
if self.model_config.is_multimodal:
|
if self.model_config.is_multimodal:
|
||||||
import_processors("sglang.srt.multimodal.processors")
|
import_processors("sglang.srt.multimodal.processors")
|
||||||
if envs.SGLANG_EXTERNAL_MM_PROCESSOR_PACKAGE.value:
|
if mm_process_pkg := envs.SGLANG_EXTERNAL_MM_PROCESSOR_PACKAGE.get():
|
||||||
import_processors(
|
import_processors(mm_process_pkg, overwrite=True)
|
||||||
envs.SGLANG_EXTERNAL_MM_PROCESSOR_PACKAGE.value, overwrite=True
|
|
||||||
)
|
|
||||||
_processor = _get_processor_wrapper(server_args)
|
_processor = _get_processor_wrapper(server_args)
|
||||||
transport_mode = _determine_tensor_transport_mode(self.server_args)
|
transport_mode = _determine_tensor_transport_mode(self.server_args)
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class MooncakeStoreConfig:
|
|||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
f"Config file path not set. Please set {envs.SGLANG_HICACHE_MOONCAKE_CONFIG_PATH.name}"
|
f"Config file path not set. Please set {envs.SGLANG_HICACHE_MOONCAKE_CONFIG_PATH.name}"
|
||||||
)
|
)
|
||||||
file_path = envs.SGLANG_HICACHE_MOONCAKE_CONFIG_PATH.value
|
file_path = envs.SGLANG_HICACHE_MOONCAKE_CONFIG_PATH.get()
|
||||||
try:
|
try:
|
||||||
with open(file_path) as fin:
|
with open(file_path) as fin:
|
||||||
config = json.load(fin)
|
config = json.load(fin)
|
||||||
@@ -104,7 +104,7 @@ class MooncakeStoreConfig:
|
|||||||
# then fall back to LOCAL_HOSTNAME if not set.
|
# then fall back to LOCAL_HOSTNAME if not set.
|
||||||
# This is for forward compatibility with the legacy LOCAL_HOSTNAME environment variable.
|
# This is for forward compatibility with the legacy LOCAL_HOSTNAME environment variable.
|
||||||
if envs.MOONCAKE_LOCAL_HOSTNAME.is_set():
|
if envs.MOONCAKE_LOCAL_HOSTNAME.is_set():
|
||||||
local_hostname = envs.MOONCAKE_LOCAL_HOSTNAME.value
|
local_hostname = envs.MOONCAKE_LOCAL_HOSTNAME.get()
|
||||||
else:
|
else:
|
||||||
local_hostname = os.getenv(
|
local_hostname = os.getenv(
|
||||||
"LOCAL_HOSTNAME", envs.MOONCAKE_LOCAL_HOSTNAME.default
|
"LOCAL_HOSTNAME", envs.MOONCAKE_LOCAL_HOSTNAME.default
|
||||||
@@ -112,15 +112,15 @@ class MooncakeStoreConfig:
|
|||||||
|
|
||||||
return MooncakeStoreConfig(
|
return MooncakeStoreConfig(
|
||||||
local_hostname=local_hostname,
|
local_hostname=local_hostname,
|
||||||
metadata_server=envs.MOONCAKE_TE_META_DATA_SERVER.value,
|
metadata_server=envs.MOONCAKE_TE_META_DATA_SERVER.get(),
|
||||||
global_segment_size=_parse_global_segment_size(
|
global_segment_size=_parse_global_segment_size(
|
||||||
envs.MOONCAKE_GLOBAL_SEGMENT_SIZE.value
|
envs.MOONCAKE_GLOBAL_SEGMENT_SIZE.get()
|
||||||
),
|
),
|
||||||
protocol=envs.MOONCAKE_PROTOCOL.value,
|
protocol=envs.MOONCAKE_PROTOCOL.get(),
|
||||||
device_name=envs.MOONCAKE_DEVICE.value,
|
device_name=envs.MOONCAKE_DEVICE.get(),
|
||||||
master_server_address=envs.MOONCAKE_MASTER.value,
|
master_server_address=envs.MOONCAKE_MASTER.get(),
|
||||||
master_metrics_port=envs.MOONCAKE_MASTER_METRICS_PORT.value,
|
master_metrics_port=envs.MOONCAKE_MASTER_METRICS_PORT.get(),
|
||||||
check_server=envs.MOONCAKE_CHECK_SERVER.value,
|
check_server=envs.MOONCAKE_CHECK_SERVER.get(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
@@ -576,7 +576,7 @@ class ModelRunner:
|
|||||||
self.remote_instance_transfer_engine = TransferEngine()
|
self.remote_instance_transfer_engine = TransferEngine()
|
||||||
local_ip = get_local_ip_auto()
|
local_ip = get_local_ip_auto()
|
||||||
self.remote_instance_transfer_engine.initialize(
|
self.remote_instance_transfer_engine.initialize(
|
||||||
local_ip, "P2PHANDSHAKE", "rdma", envs.MOONCAKE_DEVICE.value
|
local_ip, "P2PHANDSHAKE", "rdma", envs.MOONCAKE_DEVICE.get()
|
||||||
)
|
)
|
||||||
self.remote_instance_transfer_engine_session_id = (
|
self.remote_instance_transfer_engine_session_id = (
|
||||||
f"{local_ip}:{self.remote_instance_transfer_engine.get_rpc_port()}"
|
f"{local_ip}:{self.remote_instance_transfer_engine.get_rpc_port()}"
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ def _initialize_model(
|
|||||||
|
|
||||||
# Only add sparse head kwargs if envs.SGLANG_EMBEDDINGS_SPARSE_HEAD.is_set()
|
# Only add sparse head kwargs if envs.SGLANG_EMBEDDINGS_SPARSE_HEAD.is_set()
|
||||||
if envs.SGLANG_EMBEDDINGS_SPARSE_HEAD.is_set():
|
if envs.SGLANG_EMBEDDINGS_SPARSE_HEAD.is_set():
|
||||||
kwargs["sparse_head"] = envs.SGLANG_EMBEDDINGS_SPARSE_HEAD.value
|
kwargs["sparse_head"] = envs.SGLANG_EMBEDDINGS_SPARSE_HEAD.get()
|
||||||
kwargs["model_path"] = model_config.model_path
|
kwargs["model_path"] = model_config.model_path
|
||||||
|
|
||||||
return model_class(**kwargs)
|
return model_class(**kwargs)
|
||||||
|
|||||||
@@ -128,5 +128,5 @@ def import_model_classes(package_name: str, strict: bool = False):
|
|||||||
ModelRegistry = _ModelRegistry()
|
ModelRegistry = _ModelRegistry()
|
||||||
ModelRegistry.register("sglang.srt.models")
|
ModelRegistry.register("sglang.srt.models")
|
||||||
|
|
||||||
if envs.SGLANG_EXTERNAL_MODEL_PACKAGE.value:
|
if external_pkg := envs.SGLANG_EXTERNAL_MODEL_PACKAGE.get():
|
||||||
ModelRegistry.register(envs.SGLANG_EXTERNAL_MODEL_PACKAGE.value, overwrite=True)
|
ModelRegistry.register(external_pkg, overwrite=True)
|
||||||
|
|||||||
@@ -3718,9 +3718,9 @@ def reserve_rope_cache_for_long_sequences(
|
|||||||
"""Pre-expand RoPE cache for long sequences and speculative decoding."""
|
"""Pre-expand RoPE cache for long sequences and speculative decoding."""
|
||||||
from sglang.srt.environ import envs
|
from sglang.srt.environ import envs
|
||||||
|
|
||||||
SAFETY_FACTOR = envs.SGLANG_SPEC_EXPANSION_SAFETY_FACTOR.value
|
SAFETY_FACTOR = envs.SGLANG_SPEC_EXPANSION_SAFETY_FACTOR.get()
|
||||||
MARGIN = envs.SGLANG_ROPE_CACHE_SAFETY_MARGIN.value
|
MARGIN = envs.SGLANG_ROPE_CACHE_SAFETY_MARGIN.get()
|
||||||
ALIGN = envs.SGLANG_ROPE_CACHE_ALIGN.value
|
ALIGN = envs.SGLANG_ROPE_CACHE_ALIGN.get()
|
||||||
|
|
||||||
# 1) Estimate base context upper bound
|
# 1) Estimate base context upper bound
|
||||||
base_ctx = (
|
base_ctx = (
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import os
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import sglang as sgl
|
import sglang as sgl
|
||||||
|
from sglang.srt.environ import envs
|
||||||
from sglang.test.test_utils import CustomTestCase
|
from sglang.test.test_utils import CustomTestCase
|
||||||
|
|
||||||
|
|
||||||
class TestExternalModels(CustomTestCase):
|
class TestExternalModels(CustomTestCase):
|
||||||
def test_external_model(self):
|
def test_external_model(self):
|
||||||
os.environ["SGLANG_EXTERNAL_MODEL_PACKAGE"] = "external_models"
|
envs.SGLANG_EXTERNAL_MODEL_PACKAGE.set("external_models")
|
||||||
os.environ["SGLANG_EXTERNAL_MM_PROCESSOR_PACKAGE"] = "external_models"
|
envs.SGLANG_EXTERNAL_MM_PROCESSOR_PACKAGE.set("external_models")
|
||||||
prompt = "Today is a sunny day and I like"
|
prompt = "Today is a sunny day and I like"
|
||||||
model_path = "Qwen/Qwen2-VL-2B-Instruct"
|
model_path = "Qwen/Qwen2-VL-2B-Instruct"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user