Explorar o código

feat: --build-node, docker_image_dir recipe field

Alexander Korolev hai 3 meses
pai
achega
731937a625

+ 1 - 0
recipes/glm52-nf3-hybrid-context/recipe.toml

@@ -46,6 +46,7 @@ tensor_parallel_size = 4
 pipeline_parallel_size = 1
 distributed_backend = "mp"
 shm_size = "64gb"
+docker_image_dir = "glm52-nf3-hybrid"
 
 entrypoint = ["vllm", "serve"]
 

+ 1 - 0
recipes/glm52-nf3-hybrid-fast/recipe.toml

@@ -46,6 +46,7 @@ tensor_parallel_size = 4
 pipeline_parallel_size = 1
 distributed_backend = "mp"
 shm_size = "64gb"
+docker_image_dir = "glm52-nf3-hybrid"
 
 entrypoint = ["vllm", "serve"]
 

+ 1 - 0
src/before_serve.rs

@@ -249,6 +249,7 @@ mod tests {
             before_serve: vec![],
             mods: Default::default(),
             sync_image: true,
+            docker_image_dir: None,
             shm_size: String::new(),
         }
     }

+ 3 - 0
src/config/types.rs

@@ -129,6 +129,9 @@ pub struct Recipe {
     pub mods: ModsTable,
     #[serde(default = "default_sync_image")]
     pub sync_image: bool,
+    /// Build directory for docker-images/ (default: derived from recipe name).
+    #[serde(default)]
+    pub docker_image_dir: Option<String>,
 }
 
 impl Config {

+ 6 - 3
src/docker/mod.rs

@@ -88,8 +88,11 @@ pub async fn serve(
             anyhow::bail!("build-node '{}' not in cluster", build_node_name);
         }
         if !opts.dry_run {
-            let build_dir = format!("docker-images/{}", recipe_name);
-            let local_dir = std::path::Path::new(&build_dir);
+            let image_dir = recipe
+                .docker_image_dir
+                .clone()
+                .unwrap_or_else(|| recipe_name.to_string());
+            let local_dir = std::path::Path::new("docker-images").join(&image_dir);
             if !local_dir.join("build.sh").exists() {
                 anyhow::bail!(
                     "No build system at '{}' (missing build.sh)",
@@ -117,7 +120,7 @@ pub async fn serve(
                 crate::ssh::upload_dir(
                     config,
                     build_node,
-                    local_dir,
+                    local_dir.as_path(),
                     &format!("/tmp/{}-build", recipe_name),
                     false,
                 )

+ 2 - 0
src/docker/tests.rs

@@ -61,6 +61,7 @@ fn trec() -> Recipe {
         mods: Default::default(),
         shm_size: String::new(),
         sync_image: true,
+        docker_image_dir: None,
     }
 }
 
@@ -243,6 +244,7 @@ fn sglang_recipe() -> Recipe {
         mods: Default::default(),
         shm_size: String::new(),
         sync_image: true,
+        docker_image_dir: None,
     }
 }
 

+ 1 - 0
src/doctor.rs

@@ -368,6 +368,7 @@ mod tests {
             before_serve: vec![],
             mods: Default::default(),
             sync_image: true,
+            docker_image_dir: None,
             shm_size: String::new(),
         }
     }