fix(ci): apply MMMU retry logic to all affected test files (#17329)
This commit is contained in:
@@ -64,11 +64,38 @@ def _run_lmms_eval_with_retry(cmd: list[str], timeout: int = 3600) -> None:
|
|||||||
capture_output=True,
|
capture_output=True,
|
||||||
text=True,
|
text=True,
|
||||||
)
|
)
|
||||||
# Print captured output to maintain visibility of successful runs
|
# Check for errors in output even if exit code is 0
|
||||||
if result.stdout:
|
# lmms_eval sometimes returns 0 even when errors occur
|
||||||
print(result.stdout, end="")
|
combined_output = result.stdout + result.stderr
|
||||||
if result.stderr:
|
if _is_mmmu_parquet_corruption(combined_output):
|
||||||
print(result.stderr, end="")
|
print(
|
||||||
|
"Detected MMMU parquet corruption error in output. Attempting recovery..."
|
||||||
|
)
|
||||||
|
if _cleanup_mmmu_dataset_cache():
|
||||||
|
print("Retrying lmms_eval with fresh download...")
|
||||||
|
with temp_set_env(
|
||||||
|
HF_HUB_OFFLINE="0",
|
||||||
|
HF_DATASETS_DOWNLOAD_MODE="force_redownload",
|
||||||
|
):
|
||||||
|
retry_result = subprocess.run(
|
||||||
|
cmd, check=True, timeout=timeout, capture_output=True, text=True
|
||||||
|
)
|
||||||
|
# Print retry output
|
||||||
|
if retry_result.stdout:
|
||||||
|
print(retry_result.stdout, end="")
|
||||||
|
if retry_result.stderr:
|
||||||
|
print(retry_result.stderr, end="")
|
||||||
|
else:
|
||||||
|
print(
|
||||||
|
f"Failed to cleanup corrupted MMMU cache. Output from lmms_eval:\nStdout:\n{result.stdout}\nStderr:\n{result.stderr}"
|
||||||
|
)
|
||||||
|
raise RuntimeError("Failed to cleanup corrupted MMMU cache")
|
||||||
|
else:
|
||||||
|
# Print captured output to maintain visibility of successful runs
|
||||||
|
if result.stdout:
|
||||||
|
print(result.stdout, end="")
|
||||||
|
if result.stderr:
|
||||||
|
print(result.stderr, end="")
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
error_output = e.stderr + e.stdout
|
error_output = e.stderr + e.stdout
|
||||||
if _is_mmmu_parquet_corruption(error_output):
|
if _is_mmmu_parquet_corruption(error_output):
|
||||||
@@ -79,7 +106,14 @@ def _run_lmms_eval_with_retry(cmd: list[str], timeout: int = 3600) -> None:
|
|||||||
HF_HUB_OFFLINE="0",
|
HF_HUB_OFFLINE="0",
|
||||||
HF_DATASETS_DOWNLOAD_MODE="force_redownload",
|
HF_DATASETS_DOWNLOAD_MODE="force_redownload",
|
||||||
):
|
):
|
||||||
subprocess.run(cmd, check=True, timeout=timeout)
|
retry_result = subprocess.run(
|
||||||
|
cmd, check=True, timeout=timeout, capture_output=True, text=True
|
||||||
|
)
|
||||||
|
# Print retry output
|
||||||
|
if retry_result.stdout:
|
||||||
|
print(retry_result.stdout, end="")
|
||||||
|
if retry_result.stderr:
|
||||||
|
print(retry_result.stderr, end="")
|
||||||
else:
|
else:
|
||||||
print(
|
print(
|
||||||
f"Failed to cleanup corrupted MMMU cache. Error from lmms_eval:\nStdout:\n{e.stdout}\nStderr:\n{e.stderr}"
|
f"Failed to cleanup corrupted MMMU cache. Error from lmms_eval:\nStdout:\n{e.stdout}\nStderr:\n{e.stderr}"
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ import glob
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import subprocess
|
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
|
|
||||||
from sglang.srt.utils import kill_process_tree
|
from sglang.srt.utils import kill_process_tree
|
||||||
|
from sglang.test.kits.mmmu_vlm_kit import _run_lmms_eval_with_retry
|
||||||
from sglang.test.test_utils import (
|
from sglang.test.test_utils import (
|
||||||
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
|
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
|
||||||
DEFAULT_URL_FOR_TEST,
|
DEFAULT_URL_FOR_TEST,
|
||||||
@@ -85,11 +85,7 @@ class TestVLMPiecewiseCudaGraph(CustomTestCase):
|
|||||||
str(output_path),
|
str(output_path),
|
||||||
]
|
]
|
||||||
|
|
||||||
subprocess.run(
|
_run_lmms_eval_with_retry(cmd, timeout=3600)
|
||||||
cmd,
|
|
||||||
check=True,
|
|
||||||
timeout=3600,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _run_vlm_mmmu_test(
|
def _run_vlm_mmmu_test(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ import glob
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import subprocess
|
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
|
|
||||||
from sglang.srt.utils import kill_process_tree
|
from sglang.srt.utils import kill_process_tree
|
||||||
|
from sglang.test.kits.mmmu_vlm_kit import _run_lmms_eval_with_retry
|
||||||
from sglang.test.test_utils import (
|
from sglang.test.test_utils import (
|
||||||
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
|
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
|
||||||
DEFAULT_URL_FOR_TEST,
|
DEFAULT_URL_FOR_TEST,
|
||||||
@@ -88,11 +88,7 @@ class TestVLMViTCudaGraph(CustomTestCase):
|
|||||||
str(output_path),
|
str(output_path),
|
||||||
]
|
]
|
||||||
|
|
||||||
subprocess.run(
|
_run_lmms_eval_with_retry(cmd, timeout=3600)
|
||||||
cmd,
|
|
||||||
check=True,
|
|
||||||
timeout=3600,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _run_vlm_mmmu_test(
|
def _run_vlm_mmmu_test(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ import glob
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import subprocess
|
|
||||||
import sys
|
import sys
|
||||||
import unittest
|
import unittest
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
|
|
||||||
from sglang.srt.utils import kill_process_tree
|
from sglang.srt.utils import kill_process_tree
|
||||||
from sglang.test.ci.ci_register import register_cuda_ci
|
from sglang.test.ci.ci_register import register_cuda_ci
|
||||||
|
from sglang.test.kits.mmmu_vlm_kit import _run_lmms_eval_with_retry
|
||||||
from sglang.test.test_utils import (
|
from sglang.test.test_utils import (
|
||||||
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
|
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
|
||||||
DEFAULT_URL_FOR_TEST,
|
DEFAULT_URL_FOR_TEST,
|
||||||
@@ -94,11 +94,7 @@ class TestVLMEncoderDP(CustomTestCase):
|
|||||||
str(output_path),
|
str(output_path),
|
||||||
]
|
]
|
||||||
|
|
||||||
subprocess.run(
|
_run_lmms_eval_with_retry(cmd, timeout=3600)
|
||||||
cmd,
|
|
||||||
check=True,
|
|
||||||
timeout=3600,
|
|
||||||
)
|
|
||||||
|
|
||||||
def _run_vlm_mmmu_test(
|
def _run_vlm_mmmu_test(
|
||||||
self,
|
self,
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
|
||||||
import threading
|
import threading
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from sglang.srt.utils import kill_process_tree
|
from sglang.srt.utils import kill_process_tree
|
||||||
|
from sglang.test.kits.mmmu_vlm_kit import _run_lmms_eval_with_retry
|
||||||
from sglang.test.server_fixtures.disaggregation_fixture import (
|
from sglang.test.server_fixtures.disaggregation_fixture import (
|
||||||
PDDisaggregationServerBase,
|
PDDisaggregationServerBase,
|
||||||
)
|
)
|
||||||
@@ -177,7 +177,7 @@ class TestEPDDisaggregationOneEncoder(PDDisaggregationServerBase):
|
|||||||
limit,
|
limit,
|
||||||
]
|
]
|
||||||
|
|
||||||
subprocess.run(cmd, check=True, timeout=3600)
|
_run_lmms_eval_with_retry(cmd, timeout=3600)
|
||||||
|
|
||||||
def test_mmmu(self):
|
def test_mmmu(self):
|
||||||
"""Test MMMU evaluation with EPD disaggregation"""
|
"""Test MMMU evaluation with EPD disaggregation"""
|
||||||
@@ -393,7 +393,7 @@ class TestEPDDisaggregationMultiEncoders(PDDisaggregationServerBase):
|
|||||||
limit,
|
limit,
|
||||||
]
|
]
|
||||||
|
|
||||||
subprocess.run(cmd, check=True, timeout=3600)
|
_run_lmms_eval_with_retry(cmd, timeout=3600)
|
||||||
|
|
||||||
def test_mmmu(self):
|
def test_mmmu(self):
|
||||||
"""Test MMMU evaluation with EPD disaggregation (multiple encoders)"""
|
"""Test MMMU evaluation with EPD disaggregation (multiple encoders)"""
|
||||||
|
|||||||
Reference in New Issue
Block a user