Introduce Stable LoRA ID System for Overlapped Updates and Prefix Caching (#8261)
This commit is contained in:
@@ -68,6 +68,7 @@ from sglang.srt.layers.sampler import Sampler
|
||||
from sglang.srt.layers.torchao_utils import apply_torchao_config_to_model
|
||||
from sglang.srt.layers.utils import is_sm100_supported
|
||||
from sglang.srt.lora.lora_manager import LoRAManager
|
||||
from sglang.srt.lora.lora_registry import LoRARef
|
||||
from sglang.srt.managers.schedule_batch import (
|
||||
GLOBAL_SERVER_ARGS_KEYS,
|
||||
global_server_args_dict,
|
||||
@@ -890,44 +891,38 @@ class ModelRunner:
|
||||
tp_rank=self.tp_rank,
|
||||
max_lora_rank=self.server_args.max_lora_rank,
|
||||
target_modules=self.server_args.lora_target_modules,
|
||||
lora_paths=self.server_args.lora_paths,
|
||||
)
|
||||
result = self.lora_manager.load_lora_adapters(self.server_args.lora_paths or {})
|
||||
if result.success:
|
||||
logger.info(
|
||||
f"LoRA manager ready. Loaded LoRA adapters: {', '.join(result.loaded_adapters)}"
|
||||
)
|
||||
else:
|
||||
raise RuntimeError(f"Failed to load LoRA adapters: {result.error_message}")
|
||||
|
||||
def load_lora_adapter(self, lora_name: str, lora_path: str):
|
||||
def load_lora_adapter(self, lora_ref: LoRARef):
|
||||
"""Load a new lora adapter from disk or huggingface."""
|
||||
|
||||
logger.info(
|
||||
f"LoRA adapter loading starts: name={lora_name}, path={lora_path}. "
|
||||
f"LoRA adapter loading starts: {lora_ref}. "
|
||||
f"avail mem={get_available_gpu_memory(self.device, self.gpu_id):.2f} GB"
|
||||
)
|
||||
|
||||
result = self.lora_manager.load_lora_adapter(lora_name, lora_path)
|
||||
result = self.lora_manager.load_lora_adapter(lora_ref)
|
||||
|
||||
logger.info(
|
||||
f"LoRA adapter loading completes: name={lora_name}, path={lora_path}. "
|
||||
f"LoRA adapter loading completes: {lora_ref}. "
|
||||
f"avail mem={get_available_gpu_memory(self.device, self.gpu_id):.2f} GB"
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
def unload_lora_adapter(self, lora_name: str):
|
||||
def unload_lora_adapter(self, lora_ref: LoRARef):
|
||||
"""Unload a lora adapter that was previously loaded during initialization or dynamic loading."""
|
||||
|
||||
logger.info(
|
||||
f"LoRA adapter unloading starts: name={lora_name}. "
|
||||
f"LoRA adapter unloading starts: {lora_ref}. "
|
||||
f"avail mem={get_available_gpu_memory(self.device, self.gpu_id):.2f} GB"
|
||||
)
|
||||
|
||||
result = self.lora_manager.unload_lora_adapter(lora_name)
|
||||
result = self.lora_manager.unload_lora_adapter(lora_ref)
|
||||
|
||||
logger.info(
|
||||
f"LoRA adapter unloading completes: name={lora_name}. "
|
||||
f"LoRA adapter unloading completes: {lora_ref}. "
|
||||
f"avail mem={get_available_gpu_memory(self.device, self.gpu_id):.2f} GB"
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user