Shortcuts

Source code for torchx.schedulers

#!/usr/bin/env python3
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.


import importlib
from typing import Mapping, Protocol

from torchx import plugins
from torchx.schedulers.api import Scheduler

DEFAULT_SCHEDULER_MODULES: Mapping[str, str] = {
    "local_docker": "torchx.schedulers.docker_scheduler",
    "local_cwd": "torchx.schedulers.local_scheduler",
    "slurm": "torchx.schedulers.slurm_scheduler",
    "kubernetes": "torchx.schedulers.kubernetes_scheduler",
}


class SchedulerFactory(Protocol):
    def __call__(self, session_name: str, **kwargs: object) -> Scheduler: ...


def _defer_load_scheduler(path: str) -> SchedulerFactory:
    def run(*args: object, **kwargs: object) -> Scheduler:
        module = importlib.import_module(path)
        return module.create_scheduler(*args, **kwargs)

    return run


[docs] def get_scheduler_factories( *, skip_defaults: bool = False ) -> dict[str, SchedulerFactory]: """ get_scheduler_factories returns all the available schedulers names and the method to instantiate them: the built-ins plus everything registered through :py:mod:`torchx.plugins`, which wins a name clash. The first scheduler in the dictionary is used as the default scheduler, and registered plugins come first. Pass ``skip_defaults=True`` for the registered plugins only. """ if skip_defaults: default_schedulers = {} else: default_schedulers: dict[str, SchedulerFactory] = {} for scheduler, path in DEFAULT_SCHEDULER_MODULES.items(): default_schedulers[scheduler] = _defer_load_scheduler(path) factories: dict[str, SchedulerFactory] = dict( plugins.registry().get(plugins.PluginType.SCHEDULER) ) for name, factory in default_schedulers.items(): factories.setdefault(name, factory) return factories
[docs] def get_default_scheduler_name() -> str: """ default_scheduler_name returns the first scheduler defined in get_scheduler_factories. """ return next(iter(get_scheduler_factories().keys()))

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources