Skip to content

vllm.snapshot.controller

Create and restore transaction orchestration for local snapshots.

_child_engine_argv(args, engine_argv)

Build the child argv from the first argv source that is present.

In order: an explicit engine_argv from the caller, the process argv tail when invoked as vllm snapshot create ..., then the bare model from the parsed args. Whichever source wins, snapshot options are stripped and sleep mode is appended.

Source code in vllm/snapshot/controller.py
def _child_engine_argv(
    args: argparse.Namespace, engine_argv: tuple[str, ...] | None
) -> tuple[str, ...]:
    """Build the child argv from the first argv source that is present.

    In order: an explicit ``engine_argv`` from the caller, the process argv
    tail when invoked as ``vllm snapshot create ...``, then the bare model from
    the parsed args. Whichever source wins, snapshot options are stripped and
    sleep mode is appended.
    """
    if not engine_argv:
        process_argv = tuple(sys.argv[1:])
        if process_argv[:2] == ("snapshot", "create"):
            engine_argv = process_argv[2:]
        else:
            model = getattr(args, "model_tag", None) or getattr(args, "model", None)
            if not model:
                raise SnapshotCreateError("snapshot create requires a model argument")
            engine_argv = (str(model),)
    child_argv: list[str] = []
    iterator = iter(engine_argv)
    for item in iterator:
        option, separator, _ = item.partition("=")
        option = option.replace("_", "-")
        if len(option) > 2 and "--snapshot-dir".startswith(option):
            if not separator:
                next(iterator, None)
        else:
            child_argv.append(item)
    if "--enable-sleep-mode" not in child_argv:
        child_argv.append("--enable-sleep-mode")
    return tuple(child_argv)