[Entrypoint] Add realtime OpenPI robot serving API (#3673)
Signed-off-by: Yangshen Deng <yangshen.d@outlook.com> Signed-off-by: amy-why-3459 <wuhaiyan17@huawei.com> Co-authored-by: Meng <meng_chen99@163.com> Co-authored-by: amy-why-3459 <wuhaiyan17@huawei.com>
This commit is contained in:
6 files changed
+966
No files matched your search
@@ -133,6 +133,7 @@ from vllm_omni.entrypoints.openai.storage import STORAGE_MANAGER
|
||||
from vllm_omni.entrypoints.openai.stores import VIDEO_STORE, VIDEO_TASKS
|
||||
from vllm_omni.entrypoints.openai.utils import get_stage_type, parse_lora_request
|
||||
from vllm_omni.entrypoints.openai.video_api_utils import decode_input_reference
|
||||
from vllm_omni.entrypoints.openpi.serving import ServingRealtimeRobotOpenPI
|
||||
from vllm_omni.inputs.data import OmniDiffusionSamplingParams, OmniTextPrompt
|
||||
|
||||
logger = init_logger(__name__)
|
||||
@@ -633,6 +634,10 @@ async def omni_init_app_state(
|
||||
)
|
||||
state.openai_streaming_speech = None
|
||||
state.openai_streaming_video = None
|
||||
state.openai_serving_realtime_robot = ServingRealtimeRobotOpenPI.create_policy_server(
|
||||
engine_client=engine_client,
|
||||
model_name=model_name,
|
||||
)
|
||||
|
||||
state.enable_server_load_tracking = getattr(args, "enable_server_load_tracking", False)
|
||||
state.server_load_metrics = 0
|
||||
@@ -963,6 +968,7 @@ async def omni_init_app_state(
|
||||
model_name=served_model_names[0] if served_model_names else None,
|
||||
stage_configs=state.stage_configs,
|
||||
)
|
||||
state.openai_serving_realtime_robot = None
|
||||
|
||||
state.enable_server_load_tracking = args.enable_server_load_tracking
|
||||
state.server_load_metrics = 0
|
||||
@@ -1406,6 +1412,23 @@ async def realtime_websocket(websocket: WebSocket):
|
||||
await connection.handle_connection()
|
||||
|
||||
|
||||
@router.websocket("/v1/realtime/robot/openpi")
|
||||
async def realtime_robot_openpi(websocket: WebSocket):
|
||||
"""WebSocket endpoint for robot policy inference via OpenPI messages."""
|
||||
from vllm_omni.entrypoints.openpi.connection import (
|
||||
RobotRealtimeConnection,
|
||||
)
|
||||
|
||||
serving = getattr(websocket.app.state, "openai_serving_realtime_robot", None)
|
||||
if serving is None:
|
||||
await websocket.accept()
|
||||
await websocket.send_json({"type": "error", "error": "Robot policy not available", "code": "unsupported"})
|
||||
await websocket.close()
|
||||
return
|
||||
connection = RobotRealtimeConnection(websocket, serving)
|
||||
await connection.handle_connection()
|
||||
|
||||
|
||||
# Health and Model endpoints for diffusion mode
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user