feat: add queue-aware adaptive scheduling
This commit is contained in:
@@ -10,6 +10,14 @@ from common import utc_now, write_json
|
||||
from gpu_strategy import DEFAULT_GPU_STRATEGY_PATH
|
||||
from hf_discovery import HuggingFaceDiscovery
|
||||
from main import DEFAULT_LEDGER_PATH, DEFAULT_RUNS_DIR, make_run_dir, run_submission
|
||||
from market_intelligence import (
|
||||
DEFAULT_FETCH_WORKERS,
|
||||
DEFAULT_FRAMEWORK_MIN_SAMPLES,
|
||||
DEFAULT_FRAMEWORK_REFRESH_SECONDS,
|
||||
DEFAULT_MARKET_INTELLIGENCE_PATH,
|
||||
DEFAULT_QUEUE_REFRESH_SECONDS,
|
||||
DEFAULT_THROUGHPUT_WINDOW_HOURS,
|
||||
)
|
||||
from modelhub_client import DEFAULT_CAPACITY_STATE_PATH, ModelHubClient, ModelHubClientPool
|
||||
from outcome_tracker import OutcomeTracker
|
||||
from runner_common import DEFAULT_KEY_PATH, ensure_tokens
|
||||
@@ -81,6 +89,11 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
parser.add_argument("--skip-history-archive", action="store_true", help="Skip historical task archive download for this run")
|
||||
parser.add_argument("--dry-run", action="store_true", help="Plan the day without creating tasks")
|
||||
parser.add_argument("--disable-gpu-strategy", action="store_true", help="Disable adaptive 50/30/20 GPU scheduling")
|
||||
parser.add_argument(
|
||||
"--disable-market-intelligence",
|
||||
action="store_true",
|
||||
help="Disable live queue/throughput and public framework statistics",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--gpu-strategy-refresh-submissions",
|
||||
type=int,
|
||||
@@ -109,6 +122,41 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
)
|
||||
parser.add_argument("--gpu-strategy-recent-window", type=int, default=1000, help=argparse.SUPPRESS)
|
||||
parser.add_argument("--gpu-strategy-min-long-samples", type=int, default=100, help=argparse.SUPPRESS)
|
||||
parser.add_argument(
|
||||
"--market-intelligence-state-path",
|
||||
default=os.getenv("MODELHUB_MARKET_INTELLIGENCE_PATH", str(DEFAULT_MARKET_INTELLIGENCE_PATH)),
|
||||
help=argparse.SUPPRESS,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--market-queue-refresh-seconds",
|
||||
type=int,
|
||||
default=int(os.getenv("MODELHUB_MARKET_QUEUE_REFRESH_SECONDS", str(DEFAULT_QUEUE_REFRESH_SECONDS))),
|
||||
help=argparse.SUPPRESS,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--market-framework-refresh-seconds",
|
||||
type=int,
|
||||
default=int(os.getenv("MODELHUB_MARKET_FRAMEWORK_REFRESH_SECONDS", str(DEFAULT_FRAMEWORK_REFRESH_SECONDS))),
|
||||
help=argparse.SUPPRESS,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--market-throughput-window-hours",
|
||||
type=int,
|
||||
default=int(os.getenv("MODELHUB_MARKET_THROUGHPUT_WINDOW_HOURS", str(DEFAULT_THROUGHPUT_WINDOW_HOURS))),
|
||||
help=argparse.SUPPRESS,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--market-fetch-workers",
|
||||
type=int,
|
||||
default=int(os.getenv("MODELHUB_MARKET_FETCH_WORKERS", str(DEFAULT_FETCH_WORKERS))),
|
||||
help=argparse.SUPPRESS,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--market-framework-min-samples",
|
||||
type=int,
|
||||
default=int(os.getenv("MODELHUB_MARKET_FRAMEWORK_MIN_SAMPLES", str(DEFAULT_FRAMEWORK_MIN_SAMPLES))),
|
||||
help=argparse.SUPPRESS,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--capacity-state-path",
|
||||
default=os.getenv("MODELHUB_CAPACITY_STATE_PATH", str(DEFAULT_CAPACITY_STATE_PATH)),
|
||||
@@ -150,10 +198,37 @@ def make_wave_namespace(base_args: argparse.Namespace, wave: WaveSpec) -> argpar
|
||||
skip_outcome_sync=getattr(base_args, "skip_outcome_sync", False),
|
||||
skip_history_archive=getattr(base_args, "skip_history_archive", False),
|
||||
disable_gpu_strategy=getattr(base_args, "disable_gpu_strategy", False),
|
||||
disable_market_intelligence=getattr(base_args, "disable_market_intelligence", False),
|
||||
gpu_strategy_refresh_submissions=getattr(base_args, "gpu_strategy_refresh_submissions", 200),
|
||||
gpu_strategy_state_path=getattr(base_args, "gpu_strategy_state_path", str(DEFAULT_GPU_STRATEGY_PATH)),
|
||||
gpu_strategy_recent_window=getattr(base_args, "gpu_strategy_recent_window", 1000),
|
||||
gpu_strategy_min_long_samples=getattr(base_args, "gpu_strategy_min_long_samples", 100),
|
||||
market_intelligence_state_path=getattr(
|
||||
base_args,
|
||||
"market_intelligence_state_path",
|
||||
str(DEFAULT_MARKET_INTELLIGENCE_PATH),
|
||||
),
|
||||
market_queue_refresh_seconds=getattr(
|
||||
base_args,
|
||||
"market_queue_refresh_seconds",
|
||||
DEFAULT_QUEUE_REFRESH_SECONDS,
|
||||
),
|
||||
market_framework_refresh_seconds=getattr(
|
||||
base_args,
|
||||
"market_framework_refresh_seconds",
|
||||
DEFAULT_FRAMEWORK_REFRESH_SECONDS,
|
||||
),
|
||||
market_throughput_window_hours=getattr(
|
||||
base_args,
|
||||
"market_throughput_window_hours",
|
||||
DEFAULT_THROUGHPUT_WINDOW_HOURS,
|
||||
),
|
||||
market_fetch_workers=getattr(base_args, "market_fetch_workers", DEFAULT_FETCH_WORKERS),
|
||||
market_framework_min_samples=getattr(
|
||||
base_args,
|
||||
"market_framework_min_samples",
|
||||
DEFAULT_FRAMEWORK_MIN_SAMPLES,
|
||||
),
|
||||
capacity_state_path=getattr(base_args, "capacity_state_path", str(DEFAULT_CAPACITY_STATE_PATH)),
|
||||
capacity_probe_interval_cycles=getattr(base_args, "capacity_probe_interval_cycles", 3),
|
||||
submit_concurrency=getattr(base_args, "submit_concurrency", 1),
|
||||
|
||||
Reference in New Issue
Block a user