|
|
@@ -21,7 +21,7 @@
|
|
|
|
|
|
use std::path::{Path, PathBuf};
|
|
|
|
|
|
-use crate::config::{Config, Recipe, recipe_dirs};
|
|
|
+use crate::config::{Config, DeployTarget, Recipe, recipe_dirs};
|
|
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
|
pub enum Level {
|
|
|
@@ -108,7 +108,14 @@ fn check_recipe(name: &str, r: &Recipe, images_dirs: &[&Path], out: &mut Vec<Vio
|
|
|
});
|
|
|
}
|
|
|
let multi = r.required_nodes.is_some_and(|n| n > 1);
|
|
|
- if multi && r.tensor_parallel_size == 1 && r.pipeline_parallel_size.unwrap_or(1) == 1 {
|
|
|
+ // Native (head-coordinated, config-driven) engines like DGPP shard by their
|
|
|
+ // own `world_size`, not launcher TP/PP flags — the TP=1 heuristic is a
|
|
|
+ // false positive there.
|
|
|
+ if multi
|
|
|
+ && r.deploy != DeployTarget::Native
|
|
|
+ && r.tensor_parallel_size == 1
|
|
|
+ && r.pipeline_parallel_size.unwrap_or(1) == 1
|
|
|
+ {
|
|
|
out.push(Violation {
|
|
|
recipe: name.to_string(),
|
|
|
level: Level::Warning,
|