Bootstrap architecture rules from task history
This commit is contained in:
@@ -32,6 +32,28 @@ MODEL_ARCHITECTURES_NOT_SUPPORTED_PATTERN = re.compile(
|
||||
r"(?:are|is)\s+not\s+supported\s+for\s+now",
|
||||
re.IGNORECASE,
|
||||
)
|
||||
SUBMITTED_FRAMEWORK_PATTERN = re.compile(
|
||||
r"\[submit\]\s*framework\s*:\s*(?P<framework>[A-Za-z0-9_.-]{1,80})",
|
||||
re.IGNORECASE,
|
||||
)
|
||||
TARGET_DOCKER_IMAGE_PATTERN = re.compile(
|
||||
r"\[submit\]\s*docker_image\s*:\s*(?P<image>\S{1,500})",
|
||||
re.IGNORECASE,
|
||||
)
|
||||
FRAMEWORK_IMAGE_MARKERS = (
|
||||
("vllm-customized", ("vllm-customized", "vllm_customized")),
|
||||
("vllm_fix_tokenizer", ("vllm-fix-tokenizer", "vllm_fix_tokenizer")),
|
||||
("sentence-transformers", ("sentence-transformers", "sentence_transformers")),
|
||||
("sherpa-onnx", ("sherpa-onnx", "sherpa_onnx")),
|
||||
("llamacpp", ("llamacpp", "llama-cpp", "llama.cpp")),
|
||||
("vllm-mlu", ("vllm-mlu", "vllm_mlu")),
|
||||
("vllm-016", ("vllm-016", "vllm_016")),
|
||||
("diffusers", ("diffusers",)),
|
||||
("transformers", ("transformers",)),
|
||||
("sglang", ("sglang",)),
|
||||
("funasr", ("funasr",)),
|
||||
("vllm", ("vllm",)),
|
||||
)
|
||||
|
||||
|
||||
def fetch_and_classify_failure_log(
|
||||
@@ -111,6 +133,10 @@ def classify_failure_archive(
|
||||
result["failureUnsupportedArchitectures"] = unsupported_architectures
|
||||
if unsupported_model_types:
|
||||
result["failureUnsupportedModelTypes"] = unsupported_model_types
|
||||
detected_framework, framework_source = _extract_submitted_framework(runtime_log)
|
||||
if detected_framework:
|
||||
result["failureDetectedFramework"] = detected_framework
|
||||
result["failureDetectedFrameworkSource"] = framework_source
|
||||
if classification.needs_llm and llm_classifier is not None and llm_classifier.enabled:
|
||||
llm_decision = llm_classifier.classify_failure(
|
||||
task_context=dict(task_context or {}),
|
||||
@@ -137,6 +163,22 @@ def classify_failure_archive(
|
||||
return result
|
||||
|
||||
|
||||
def _extract_submitted_framework(runtime_log: str) -> tuple[str | None, str | None]:
|
||||
"""Recover only explicit or unambiguous target-framework evidence."""
|
||||
explicit = SUBMITTED_FRAMEWORK_PATTERN.search(runtime_log)
|
||||
if explicit:
|
||||
return explicit.group("framework").strip(), "submit_framework"
|
||||
|
||||
image_match = TARGET_DOCKER_IMAGE_PATTERN.search(runtime_log)
|
||||
if image_match is None:
|
||||
return None, None
|
||||
target_image = image_match.group("image").strip().casefold()
|
||||
for framework, markers in FRAMEWORK_IMAGE_MARKERS:
|
||||
if any(marker in target_image for marker in markers):
|
||||
return framework, "target_docker_image"
|
||||
return None, None
|
||||
|
||||
|
||||
def _extract_error_lines(runtime_log: str) -> list[str]:
|
||||
selected: list[str] = []
|
||||
for raw_line in runtime_log.splitlines():
|
||||
|
||||
Reference in New Issue
Block a user