Skip to content
Merged
4 changes: 2 additions & 2 deletions docs/user-guide/cli-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -316,8 +316,8 @@ contract, session behavior, and model-family selection.
| `--tito-model` | enum | `default` | TITO model family. Named families load their registered fixed template; `default` is best-effort with a checkpoint-native or custom template. |
| `--max-seq-len` | int | – | Total tokens per session, including prompts, completions, and environment responses. Registered with the agentic wrapper. |
| `--session-server-ip` | str | router IP | Session-server bind address. |
| `--session-server-port` | int | auto | Starting port for standalone session-server instances. |
| `--session-server-workers` | int | `32` | Number of instances; Miles uses consecutive ports starting at `--session-server-port`. |
| `--session-server-port` | int | auto | First port for standalone session-server instances. When unset, each worker port is auto-allocated. |
| `--session-server-workers` | int | `32` | Number of instances; an explicit `--session-server-port` anchors a consecutive range. |
| `--session-sample-picker-path` | `<module>.<fn>` | `drop_retries` | v2 only: selects leaf samples before post-processing. |
| `--session-sample-postprocessor-path` | `<module>.<fn>` | `default_postprocess` | v2 only: finalizes loss masks and rewards. |

Expand Down
11 changes: 9 additions & 2 deletions miles/ray/rollout/router_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,19 @@ def start_router(args, *, has_pd_disaggregation: bool = False, force_new: bool =


def _resolve_session_server_ports(start: int | None, workers: int) -> list[int]:
"""Return the requested number of consecutive ports from the configured or auto-selected start."""
"""Return consecutive ports from an explicit start, or auto-allocate each worker port."""
if workers < 1:
raise ValueError("--session-server-workers must be at least 1.")
# TODO(#1837): Refactor IP/port allocation; keep this naive for now.
if start is None:
start = find_available_port(random.randint(5000, 6000))
search_start = random.randint(5000, 6000)
ports = []
while len(ports) < workers:
port = find_available_port(search_start)
if port not in ports:
ports.append(port)
search_start = port + 1
return ports
return list(range(start, start + workers))


Expand Down
4 changes: 2 additions & 2 deletions miles/utils/arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -2554,13 +2554,13 @@ def add_session_arguments(parser):
"--session-server-port",
type=int,
default=None,
help="Starting port for standalone session servers. Auto-allocated if not set.",
help="First port for standalone session servers. When unset, each worker port is auto-allocated.",
)
parser.add_argument(
"--session-server-workers",
type=int,
default=32,
help="Number of standalone session servers to launch on consecutive ports.",
help="Number of standalone session servers to launch. An explicit start uses consecutive ports.",
)
parser.add_argument(
"--tito-model",
Expand Down
Loading
Loading