[Core] Graduate MiniCPM-o 4.5 and PersonaPlex full-duplex serving out of experimental (#6196)
Signed-off-by: chickeyton <ngton2014@gmail.com> Signed-off-by: Gao Han <hgaoaf@connect.ust.hk> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Gao Han <hgaoaf@connect.ust.hk>
This commit is contained in:
179 files changed
+6462
-3832
No files matched your search
@@ -0,0 +1,108 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM-Omni project
|
||||
|
||||
"""Experimental duplex runtime loading and compatibility exports."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from importlib import import_module
|
||||
|
||||
from vllm_omni.engine.duplex.contracts import (
|
||||
DuplexAppendPlan,
|
||||
DuplexInputMode,
|
||||
DuplexOutputAction,
|
||||
DuplexOutputDecision,
|
||||
DuplexRuntimeCapabilities,
|
||||
DuplexRuntimeExtension,
|
||||
SessionMode,
|
||||
duplex_data_plane_request_info,
|
||||
duplex_resource_request_belongs_to_session,
|
||||
duplex_resource_request_id,
|
||||
)
|
||||
|
||||
|
||||
def load_duplex_runtime_extension(path: str | None) -> DuplexRuntimeExtension | None:
|
||||
if not path:
|
||||
return None
|
||||
module_name, separator, attribute_name = path.rpartition(".")
|
||||
if not separator:
|
||||
raise ValueError(f"Invalid duplex runtime extension path: {path!r}")
|
||||
extension_type = getattr(import_module(module_name), attribute_name)
|
||||
return validate_duplex_runtime_extension(extension_type())
|
||||
|
||||
|
||||
def validate_duplex_runtime_extension(
|
||||
extension: object,
|
||||
*,
|
||||
sampling_defaults: tuple[object, ...] | None = None,
|
||||
) -> DuplexRuntimeExtension:
|
||||
required_methods = (
|
||||
"configure_sampling_params",
|
||||
"plan_append",
|
||||
"decide_output",
|
||||
)
|
||||
missing = [name for name in required_methods if not callable(getattr(extension, name, None))]
|
||||
if missing:
|
||||
raise TypeError(f"Duplex runtime extension is missing callable method(s): {', '.join(missing)}")
|
||||
typed_extension = extension # type: ignore[assignment]
|
||||
if sampling_defaults is not None:
|
||||
configured = typed_extension.configure_sampling_params(
|
||||
runtime_config={},
|
||||
defaults=sampling_defaults,
|
||||
)
|
||||
if not isinstance(configured, tuple):
|
||||
raise TypeError("Duplex runtime extension must return sampling parameters as a tuple")
|
||||
if len(configured) != len(sampling_defaults):
|
||||
raise ValueError("Duplex runtime extension must return one sampling parameter per stage")
|
||||
for stage_id, (value, default) in enumerate(zip(configured, sampling_defaults, strict=True)):
|
||||
if default is not None and not isinstance(value, type(default)):
|
||||
raise TypeError(
|
||||
"Duplex runtime extension sampling parameter type mismatch "
|
||||
f"for stage {stage_id}: expected {type(default).__name__}, got {type(value).__name__}"
|
||||
)
|
||||
return typed_extension
|
||||
|
||||
|
||||
from vllm_omni.engine.duplex.lease import ( # noqa: E402, F401
|
||||
DuplexLeaseActivity,
|
||||
DuplexLeaseConfig,
|
||||
DuplexLeaseState,
|
||||
DuplexSessionExpiry,
|
||||
)
|
||||
from vllm_omni.engine.duplex.session import ( # noqa: E402, F401
|
||||
DuplexAppendReservation,
|
||||
DuplexCompletedAppend,
|
||||
DuplexFenceMismatchError,
|
||||
DuplexInputAppend,
|
||||
DuplexRequestResource,
|
||||
DuplexSessionRuntimeManager,
|
||||
DuplexSessionRuntimeState,
|
||||
DuplexStageBinding,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
"DuplexAppendPlan",
|
||||
"DuplexAppendReservation",
|
||||
"DuplexCompletedAppend",
|
||||
"DuplexFenceMismatchError",
|
||||
"DuplexInputAppend",
|
||||
"DuplexInputMode",
|
||||
"DuplexLeaseActivity",
|
||||
"DuplexLeaseConfig",
|
||||
"DuplexLeaseState",
|
||||
"DuplexOutputAction",
|
||||
"DuplexOutputDecision",
|
||||
"DuplexRequestResource",
|
||||
"DuplexRuntimeCapabilities",
|
||||
"DuplexRuntimeExtension",
|
||||
"DuplexSessionExpiry",
|
||||
"DuplexSessionRuntimeManager",
|
||||
"DuplexSessionRuntimeState",
|
||||
"DuplexStageBinding",
|
||||
"SessionMode",
|
||||
"duplex_data_plane_request_info",
|
||||
"duplex_resource_request_belongs_to_session",
|
||||
"duplex_resource_request_id",
|
||||
"load_duplex_runtime_extension",
|
||||
"validate_duplex_runtime_extension",
|
||||
]
|
||||
Reference in new issue
Block a user