Skip to content

Commit 1006017

Browse files
authored
Improves side by side (#251)
* improves side by side * fix ut * changes in onnx * fix * fix
1 parent c1cf73c commit 1006017

File tree

4 files changed

+31
-10
lines changed

4 files changed

+31
-10
lines changed

_scripts/test_backend_onnxruntime.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import unittest
66
import warnings
77
from typing import Any
8+
import packaging.version as pv
89
import numpy
910
import onnx.backend.base
1011
import onnx.backend.test
@@ -140,6 +141,9 @@ def run_node(cls, node, inputs, device=None, outputs_info=None, **kwargs):
140141

141142
backend_test.exclude("(test_adagrad|test_adam|test_add_uint8)")
142143

144+
if pv.Version(onnxruntime.__version__) <= pv.Version("1.24"):
145+
backend_test.exclude("(test_attention_4d_with|test_attention_4d_gqa)")
146+
143147

144148
# import all test cases at global scope to make them visible to python.unittest
145149
globals().update(backend_test.test_cases)

_unittests/ut_helpers/test_log_helper.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -514,13 +514,13 @@ def test_cube_sbs_no_time(self):
514514
cube = CubeLogs(
515515
df, keys=["^m_*", "exporter", "opt"], values=["time_p", "perf"], time="date"
516516
).load()
517-
sbs, sbs_agg = cube.sbs(
517+
sbs, sbs_agg, _ = cube.sbs(
518518
dict(CFA=dict(exporter="E1", opt="O"), CFB=dict(exporter="E2", opt="O"))
519519
)
520-
self.assertEqual(sbs.shape, (4, 9))
520+
self.assertEqual(sbs.shape, (4, 11))
521521
self.assertEqual(sbs.index.names, ["METRICS", "m_name", "date"])
522522
self.assertEqual(sorted(sbs.columns.names), ["CONF", "exporter"])
523-
self.assertEqual(sbs_agg.shape, (2, 9))
523+
self.assertEqual(sbs_agg.shape, (2, 11))
524524
self.assertEqual(sbs_agg.index.names, ["date", "METRICS"])
525525
self.assertEqual(sorted(sbs_agg.columns.names), ["CONF", "exporter"])
526526

@@ -604,13 +604,13 @@ def test_cube_sbs_with_time(self):
604604
cube = CubeLogs(
605605
df, keys=["^m_*", "exporter", "opt"], values=["time_p", "perf"], time="date"
606606
).load()
607-
sbs, sbs_agg = cube.sbs(
607+
sbs, sbs_agg, _ = cube.sbs(
608608
dict(CFA=dict(exporter="E1", opt="O"), CFB=dict(exporter="E2", opt="O"))
609609
)
610-
self.assertEqual(sbs.shape, (8, 9))
610+
self.assertEqual(sbs.shape, (8, 11))
611611
self.assertEqual(sbs.index.names, ["METRICS", "m_name", "date"])
612612
self.assertEqual(sorted(sbs.columns.names), ["CONF", "exporter"])
613-
self.assertEqual(sbs_agg.shape, (4, 9))
613+
self.assertEqual(sbs_agg.shape, (4, 11))
614614
self.assertEqual(sbs_agg.index.names, ["date", "METRICS"])
615615
self.assertEqual(sorted(sbs_agg.columns.names), ["CONF", "exporter"])
616616

_unittests/ut_reference/test_backend_onnxruntime_evaluator.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import unittest
22
import warnings
33
from typing import Any
4+
import packaging.version as pv
45
import numpy
56
import onnx.backend.base
67
import onnx.backend.test
@@ -9,6 +10,7 @@
910
from onnx import ModelProto
1011
from onnx.backend.base import Device, DeviceType
1112
from onnx.defs import onnx_opset_version
13+
import onnxruntime
1214
from onnx_diagnostic.reference import OnnxruntimeEvaluator
1315

1416
ORT_OPSET = max(21, onnx_opset_version() - 2)
@@ -95,10 +97,12 @@ def run_node(cls, node, inputs, device=None, outputs_info=None, **kwargs):
9597
dft_atol = 1e-3
9698
stft_atol = 1e-4
9799
ql_atol = 1e-5
100+
fp16_atol = 1e-3
98101
backend_test = onnx.backend.test.BackendTest(
99102
OnnxruntimeEvaluatorBackend,
100103
__name__,
101104
test_kwargs={
105+
"test_attention_4d_fp16": {"atol": fp16_atol},
102106
"test_dft": {"atol": dft_atol, "rtol": numpy.inf},
103107
"test_dft_axis": {"atol": dft_atol, "rtol": numpy.inf},
104108
"test_dft_axis_opset19": {"atol": dft_atol, "rtol": numpy.inf},
@@ -287,6 +291,9 @@ def run_node(cls, node, inputs, device=None, outputs_info=None, **kwargs):
287291
)
288292
backend_test.exclude(f"({exc})")
289293

294+
if pv.Version(onnxruntime.__version__) <= pv.Version("1.24"):
295+
backend_test.exclude("(test_attention_4d_with|test_attention_4d_gqa)")
296+
290297
# import all test cases at global scope to make them visible to python.unittest
291298
globals().update(backend_test.test_cases)
292299

onnx_diagnostic/helpers/log_helper.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,7 +1210,7 @@ def to_excel(
12101210
for k, v in sbs.items():
12111211
print(f"[CubeLogs.to_excel] sbs {k}: {v}")
12121212
name = "∧".join(sbs)
1213-
sbs_raw, sbs_agg = self.sbs(sbs)
1213+
sbs_raw, sbs_agg, sbs_col = self.sbs(sbs)
12141214
if verbose:
12151215
print(f"[CubeLogs.to_excel] add sheet {name!r} with shape {sbs_raw.shape}")
12161216
print(
@@ -1234,6 +1234,14 @@ def to_excel(
12341234
sbs_agg.index.nlevels,
12351235
),
12361236
)
1237+
sbs_col.to_excel(
1238+
writer,
1239+
sheet_name=f"{name}-COL",
1240+
freeze_panes=(
1241+
sbs_col.columns.nlevels + 1,
1242+
sbs_col.index.nlevels,
1243+
),
1244+
)
12371245

12381246
if plots:
12391247
from openpyxl.drawing.image import Image
@@ -1314,7 +1322,7 @@ def cube_time(self, fill_other_dates: bool = False, threshold: float = 1.2) -> "
13141322

13151323
def sbs(
13161324
self, configs: Dict[str, Dict[str, Any]], column_name: str = "CONF"
1317-
) -> Tuple[pandas.DataFrame, pandas.DataFrame]:
1325+
) -> Tuple[pandas.DataFrame, pandas.DataFrame, pandas.DataFrame]:
13181326
"""
13191327
Creates a side-by-side for two configurations.
13201328
Every configuration a dictionary column:value which filters in
@@ -1325,7 +1333,7 @@ def sbs(
13251333
:param configs: example
13261334
``dict(CFA=dict(exporter="E1", opt="O"), CFB=dict(exporter="E2", opt="O"))``
13271335
:param column_name: column to add with the name of the configuration
1328-
:return: data and aggregated date
1336+
:return: data, aggregated date, data with a row per model
13291337
"""
13301338
assert (
13311339
len(configs) >= 2
@@ -1433,6 +1441,8 @@ def _mkc(m, s):
14331441
_mkc(m, f"{n1}<{n2}"): (si < sj).astype(int),
14341442
_mkc(m, f"{n1}=={n2}"): (si == sj).astype(int),
14351443
_mkc(m, f"{n1}>{n2}"): (si > sj).astype(int),
1444+
_mkc(m, f"{n1}*({n1}{n2})"): si * (~sinan & ~sjnan).astype(float),
1445+
_mkc(m, f"{n2}*({n1}{n2})"): sj * (~sinan & ~sjnan).astype(float),
14361446
}
14371447
)
14381448
nas.columns.names = view_res.columns.names
@@ -1452,7 +1462,7 @@ def _mkc(m, s):
14521462
}
14531463
flat = view_res.groupby(self.time).agg(aggs)
14541464
flat = flat.stack("METRICS", future_stack=True)
1455-
return res, flat
1465+
return res, flat, view_res.T.sort_index().T
14561466

14571467

14581468
class CubeLogsPerformance(CubeLogs):

0 commit comments

Comments
 (0)