|
@@ -55,7 +55,10 @@ pub struct Cluster {
|
|
|
|
|
|
|
|
#[derive(Clone, Deserialize)]
|
|
#[derive(Clone, Deserialize)]
|
|
|
pub struct Config {
|
|
pub struct Config {
|
|
|
|
|
+ /// SSH user; may be empty — a `cluster_sources` file can provide it.
|
|
|
|
|
+ #[serde(default)]
|
|
|
pub ssh_user: String,
|
|
pub ssh_user: String,
|
|
|
|
|
+ #[serde(default)]
|
|
|
pub ssh_key_path: std::path::PathBuf,
|
|
pub ssh_key_path: std::path::PathBuf,
|
|
|
#[serde(default)]
|
|
#[serde(default)]
|
|
|
pub clusters: Vec<Cluster>,
|
|
pub clusters: Vec<Cluster>,
|
|
@@ -76,11 +79,8 @@ pub struct Config {
|
|
|
/// Drop page cache before starting containers.
|
|
/// Drop page cache before starting containers.
|
|
|
#[serde(default = "default_drop_caches")]
|
|
#[serde(default = "default_drop_caches")]
|
|
|
pub drop_caches: bool,
|
|
pub drop_caches: bool,
|
|
|
- /// Named mount-alias registry — host paths referenced by name from recipe
|
|
|
|
|
- /// `[[extra_mounts]]` entries. Lets recipes stay portable (reference an
|
|
|
|
|
- /// alias like `jit_cache`) while the operator sets the real path here.
|
|
|
|
|
- /// A recipe may also carry a `host` default; the alias, when present,
|
|
|
|
|
- /// overrides it.
|
|
|
|
|
|
|
+ /// Mount-alias registry: recipe `[[extra_mounts]]` `alias` resolves here;
|
|
|
|
|
+ /// the alias wins over the recipe's `host` default. Keeps recipes portable.
|
|
|
#[serde(default)]
|
|
#[serde(default)]
|
|
|
pub mount_aliases: HashMap<String, String>,
|
|
pub mount_aliases: HashMap<String, String>,
|
|
|
/// Extra recipe dirs (each `<name>/recipe.toml`) searched after `./recipes`; `~` expanded.
|
|
/// Extra recipe dirs (each `<name>/recipe.toml`) searched after `./recipes`; `~` expanded.
|
|
@@ -237,9 +237,8 @@ pub struct Recipe {
|
|
|
pub extra_mounts: Vec<ExtraMount>,
|
|
pub extra_mounts: Vec<ExtraMount>,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/// Recipe-level build configuration. Currently only `versions` (a map of
|
|
|
|
|
-/// `versions.env` pin overrides) is supported; the launcher merges these
|
|
|
|
|
-/// over the image's own `versions.env` before building.
|
|
|
|
|
|
|
+/// Recipe-level build config. Only `versions` (a map of `versions.env` pin
|
|
|
|
|
+/// overrides) is supported; merged over the image's `versions.env` before build.
|
|
|
#[derive(Clone, Debug, Default, Deserialize)]
|
|
#[derive(Clone, Debug, Default, Deserialize)]
|
|
|
pub struct RecipeBuild {
|
|
pub struct RecipeBuild {
|
|
|
/// Pins merged over the image's `versions.env` (recipe wins). Keys are
|
|
/// Pins merged over the image's `versions.env` (recipe wins). Keys are
|
|
@@ -251,9 +250,9 @@ pub struct RecipeBuild {
|
|
|
|
|
|
|
|
/// A composed model directory: the launcher builds a `/tmp` dir per-node
|
|
/// A composed model directory: the launcher builds a `/tmp` dir per-node
|
|
|
/// with symlinks into the HF cache (container-side absolute paths) +
|
|
/// with symlinks into the HF cache (container-side absolute paths) +
|
|
|
-/// generated files, then bind-mounts it into the container. Lets a recipe
|
|
|
|
|
-/// combine multiple HF repos (e.g. a base checkpoint + an expert overlay)
|
|
|
|
|
-/// without mutating the HF cache.
|
|
|
|
|
|
|
+/// generated files, then bind-mounts it into the container — combining
|
|
|
|
|
+/// multiple HF repos (e.g. a base checkpoint + an expert overlay) without
|
|
|
|
|
+/// mutating the HF cache.
|
|
|
///
|
|
///
|
|
|
/// Symlinks point to `/root/.cache/huggingface/...` (the container-side HF
|
|
/// Symlinks point to `/root/.cache/huggingface/...` (the container-side HF
|
|
|
/// cache mount), not the host-side path. They are dangling on the host but
|
|
/// cache mount), not the host-side path. They are dangling on the host but
|