routing improvements - dynamic (wip)
This commit is contained in:
@@ -9,6 +9,7 @@ from pathlib import Path
|
||||
from .accounts import DEFAULT_ACCOUNTS_DB_PATH
|
||||
from .billing import DEFAULT_BILLING_DB_PATH
|
||||
from .hf_pricing import DEFAULT_HF_PRICING_LOG_DB_PATH
|
||||
from .routing_stats import RoutingConfig
|
||||
from .server import (
|
||||
DEFAULT_CALLER_CREDIT_USDT,
|
||||
DEFAULT_DEVNET_TOPUP_USDT,
|
||||
@@ -51,6 +52,19 @@ def _load_env_defaults() -> None:
|
||||
_load_env_file(Path.home() / ".config" / "meshnet" / "secrets.env")
|
||||
|
||||
|
||||
def _routing_config_from_args(args: argparse.Namespace) -> RoutingConfig | None:
|
||||
"""Build a RoutingConfig from CLI flags; None keeps env-var/server defaults."""
|
||||
overrides = {
|
||||
"explore_share": args.route_explore_share,
|
||||
"weight_alpha": args.route_weight_alpha,
|
||||
"stats_half_life_seconds": args.route_stats_half_life,
|
||||
}
|
||||
set_values = {key: value for key, value in overrides.items() if value is not None}
|
||||
if not set_values:
|
||||
return None
|
||||
return RoutingConfig(**set_values)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
_load_env_defaults()
|
||||
common = argparse.ArgumentParser(add_help=False)
|
||||
@@ -261,6 +275,33 @@ def main() -> None:
|
||||
metavar="PATH",
|
||||
help="Local HuggingFace snapshot root advertised as tracker model-file source (default: MESHNET_MODELS_DIR)",
|
||||
)
|
||||
common.add_argument(
|
||||
"--route-explore-share",
|
||||
type=float,
|
||||
default=None,
|
||||
metavar="FRACTION",
|
||||
help=(
|
||||
"Fraction of requests routed down unproven/stale routes to gather "
|
||||
"throughput statistics (ADR-0021; default 0.3, lower once traffic grows)"
|
||||
),
|
||||
)
|
||||
common.add_argument(
|
||||
"--route-weight-alpha",
|
||||
type=float,
|
||||
default=None,
|
||||
metavar="ALPHA",
|
||||
help=(
|
||||
"Traffic weight exponent among proven routes: share ∝ tps^alpha "
|
||||
"(default 1.0 — a 1.5x-faster route gets 1.5x the traffic)"
|
||||
),
|
||||
)
|
||||
common.add_argument(
|
||||
"--route-stats-half-life",
|
||||
type=float,
|
||||
default=None,
|
||||
metavar="SECONDS",
|
||||
help="Half-life for decaying route throughput observations (default 600)",
|
||||
)
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="meshnet-tracker",
|
||||
@@ -319,6 +360,7 @@ def main() -> None:
|
||||
),
|
||||
hf_pricing_refresh_interval=args.hf_pricing_refresh_interval,
|
||||
models_dir=args.models_dir,
|
||||
routing_config=_routing_config_from_args(args),
|
||||
)
|
||||
port = server.start()
|
||||
print(f"meshnet-tracker listening on http://{args.host}:{port}", flush=True)
|
||||
|
||||
Reference in New Issue
Block a user