[CI][XPU] Stabilize XPU CI: pin UMD/IGC, retry infra flakes, right-size EAGLE3 (#32438)

Co-authored-by: Ma Mingfei <mingfei.ma@intel.com>
This commit is contained in:
ashwini rathi
2026-08-04 16:28:52 +08:00
committed by GitHub
co-authored by Ma Mingfei
parent 17d19081d9
commit 53804d609c
6 changed files with 137 additions and 7 deletions
+24
View File
@@ -36,6 +36,14 @@ RETRIABLE_PATTERNS = [
r"timeout",
]
# XPU/B580 device-resource flakes. Matched BEFORE the non-retriable list so
# transient GPU OOMs / slow cold-cache server starts get one clean re-run.
INFRA_RETRIABLE_PATTERNS = [
r"UR_RESULT_ERROR_OUT_OF_RESOURCES",
r"XPU out of memory",
r"Server failed to start within the timeout",
]
# Patterns that indicate non-retriable failures (real code errors)
NON_RETRIABLE_PATTERNS = [
r"SyntaxError",
@@ -61,6 +69,11 @@ def is_retriable_failure(output: str) -> tuple[bool, str]:
Returns:
tuple: (is_retriable, reason)
"""
# XPU infra flakes take precedence over the non-retriable list.
for pattern in INFRA_RETRIABLE_PATTERNS:
if re.search(pattern, output, re.IGNORECASE):
return True, f"retriable XPU infra flake: {pattern}"
# Check for non-retriable patterns first
for pattern in NON_RETRIABLE_PATTERNS:
if re.search(pattern, output, re.IGNORECASE):
@@ -269,6 +282,17 @@ def run_unittest_files(
# record the timeout cap as an upper bound so the file still
# appears in the TIMINGS block below.
file_elapsed[filename] = float(timeout_per_file)
# Retry once on timeout: usually a stuck server / hung device.
# A real hang times out again and is reported.
if enable_retry and attempt < max_attempts:
logger.info(
f"\n[CI Retry] {filename} timed out after "
f"{timeout_per_file}s; waiting {retry_wait_seconds}s "
f"before retry (attempt {attempt + 1}/{max_attempts})\n"
)
time.sleep(retry_wait_seconds)
attempt += 1
continue
logger.info(
f"\n✗ TIMEOUT: {filename} after {timeout_per_file} seconds\n"
)
+3
View File
@@ -248,6 +248,9 @@ if is_blackwell_system():
if is_h200_system():
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH = 3600
if is_in_ci() and is_xpu():
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH = 1800
def call_generate_lightllm(prompt, temperature, max_tokens, stop=None, url=None):
assert url is not None