Shared master setup: zero-config discovery + dispatch. Used by `run` and `serve` subcommands.
(mut args: Args)
| 280 | /// Shared master setup: zero-config discovery + dispatch. |
| 281 | /// Used by `run` and `serve` subcommands. |
| 282 | async fn run_as_master(mut args: Args) -> Result<()> { |
| 283 | // Zero-config: discover workers, assign layers, push model data |
| 284 | if let (Some(key), None) = (&args.cluster_key, &args.topology) { |
| 285 | let model_path = resolve_model_path(&args.model)?; |
| 286 | let timeout = Duration::from_secs(args.discovery_timeout); |
| 287 | let topology = cake::sharding::master_setup( |
| 288 | key, |
| 289 | &model_path, |
| 290 | timeout, |
| 291 | args.min_workers, |
| 292 | ) |
| 293 | .await?; |
| 294 | args.topology_override = Some(topology); |
| 295 | } |
| 296 | |
| 297 | let ctx = Context::from_args(args)?; |
| 298 | let ret = run_master(ctx).await; |
| 299 | if ret.is_err() { |
| 300 | println!(); |
| 301 | } |
| 302 | ret |
| 303 | } |
| 304 | |
| 305 | #[cfg(feature = "master")] |
| 306 | pub(crate) async fn run_master(ctx: Context) -> Result<()> { |
no test coverage detected