onnx-diagnostic 0.7.4__py3-none-any.whl → 0.7.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,15 @@
1
1
  from typing import Any, Callable, Dict, Optional, Tuple
2
2
  import torch
3
3
  from ..helpers.config_helper import update_config, check_hasattr
4
+ from ..helpers.cache_helper import make_dynamic_cache, make_encoder_decoder_cache
4
5
 
5
6
  __TASK__ = "feature-extraction"
6
7
 
7
8
 
8
9
  def reduce_model_config(config: Any) -> Dict[str, Any]:
9
10
  """Reduces a model size."""
10
- check_hasattr(config, "num_attention_heads", "num_hidden_layers")
11
- kwargs = dict(
12
- num_hidden_layers=min(config.num_hidden_layers, 2),
13
- num_attention_heads=min(config.num_attention_heads, 4),
14
- )
11
+ check_hasattr(config, "num_hidden_layers")
12
+ kwargs = dict(num_hidden_layers=min(config.num_hidden_layers, 2))
15
13
  update_config(config, kwargs)
16
14
  return kwargs
17
15
 
@@ -22,6 +20,12 @@ def get_inputs(
22
20
  batch_size: int,
23
21
  sequence_length: int,
24
22
  dummy_max_token_id: int,
23
+ sequence_length2: int = 3,
24
+ decoder_attention_heads: Optional[int] = None,
25
+ encoder_attention_heads: Optional[int] = None,
26
+ encoder_ffn_dim: Optional[int] = None,
27
+ decoder_ffn_dim: Optional[int] = None,
28
+ num_hidden_layers: Optional[int] = None,
25
29
  add_second_input: int = 1,
26
30
  **kwargs, # unused
27
31
  ):
@@ -50,6 +54,66 @@ def get_inputs(
50
54
  ),
51
55
  attention_mask=torch.ones((batch_size, sequence_length)).to(torch.int64),
52
56
  )
57
+ if (
58
+ encoder_attention_heads
59
+ and decoder_attention_heads
60
+ and encoder_ffn_dim
61
+ and decoder_ffn_dim
62
+ and num_hidden_layers
63
+ ):
64
+ inputs["past_key_values"] = make_encoder_decoder_cache(
65
+ make_dynamic_cache(
66
+ [
67
+ (
68
+ torch.randn(
69
+ batch_size,
70
+ encoder_attention_heads,
71
+ sequence_length,
72
+ encoder_ffn_dim,
73
+ ),
74
+ torch.randn(
75
+ batch_size,
76
+ encoder_attention_heads,
77
+ sequence_length,
78
+ encoder_ffn_dim,
79
+ ),
80
+ )
81
+ for i in range(num_hidden_layers)
82
+ ]
83
+ ),
84
+ make_dynamic_cache(
85
+ [
86
+ (
87
+ torch.randn(
88
+ batch_size,
89
+ decoder_attention_heads,
90
+ sequence_length2,
91
+ decoder_ffn_dim,
92
+ ),
93
+ torch.randn(
94
+ batch_size,
95
+ decoder_attention_heads,
96
+ sequence_length2,
97
+ decoder_ffn_dim,
98
+ ),
99
+ )
100
+ for i in range(num_hidden_layers)
101
+ ]
102
+ ),
103
+ )
104
+ cache_length = "cache_length_key"
105
+ cache_length2 = "cache_length_val"
106
+ shapes["past_key_values"] = [ # type: ignore[assignment]
107
+ [
108
+ [{0: batch, 2: cache_length} for _ in range(num_hidden_layers)],
109
+ [{0: batch, 2: cache_length} for _ in range(num_hidden_layers)],
110
+ ],
111
+ [
112
+ [{0: batch, 2: cache_length2} for _ in range(num_hidden_layers)],
113
+ [{0: batch, 2: cache_length2} for _ in range(num_hidden_layers)],
114
+ ],
115
+ ]
116
+
53
117
  res = dict(inputs=inputs, dynamic_shapes=shapes)
54
118
  if add_second_input:
55
119
  assert (
@@ -61,6 +125,12 @@ def get_inputs(
61
125
  batch_size=batch_size + 1,
62
126
  sequence_length=sequence_length + add_second_input,
63
127
  dummy_max_token_id=dummy_max_token_id,
128
+ sequence_length2=sequence_length2,
129
+ decoder_attention_heads=decoder_attention_heads,
130
+ encoder_attention_heads=encoder_attention_heads,
131
+ encoder_ffn_dim=encoder_ffn_dim,
132
+ decoder_ffn_dim=decoder_ffn_dim,
133
+ num_hidden_layers=num_hidden_layers,
64
134
  add_second_input=0,
65
135
  **kwargs,
66
136
  )["inputs"]
@@ -80,4 +150,15 @@ def random_input_kwargs(config: Any) -> Tuple[Dict[str, Any], Callable]:
80
150
  sequence_length=30,
81
151
  dummy_max_token_id=31999 if config is None else (config.vocab_size - 1),
82
152
  )
153
+ for att in [
154
+ "decoder_attention_heads",
155
+ "encoder_attention_heads",
156
+ "encoder_ffn_dim",
157
+ "decoder_ffn_dim",
158
+ "num_hidden_layers",
159
+ ]:
160
+ if hasattr(config, att):
161
+ kwargs[att] = getattr(config, att)
162
+ kwargs["decoder_ffn_dim"] = kwargs["encoder_ffn_dim"] = 64
163
+ print(kwargs)
83
164
  return kwargs, get_inputs
@@ -69,8 +69,8 @@ def get_inputs(
69
69
  ), f"Not yet implemented for cls_cache={kwargs['cls_cache']!r}."
70
70
  batch = torch.export.Dim("batch", min=1, max=1024)
71
71
  seq_length = "seq_length" # torch.export.Dim("seq_length", min=1, max=4096)
72
- cache_length = "cache_length_key" # torch.export.Dim("cache_length", min=1, max=4096)
73
- cache_length2 = "cache_length_val" # torch.export.Dim("cache_length2", min=1, max=4096)
72
+ cache_length = "cache_length_key"
73
+ cache_length2 = "cache_length_val"
74
74
 
75
75
  shapes = {
76
76
  "input_ids": {0: batch, 1: seq_length},
@@ -16,6 +16,8 @@ def get_function(name: str) -> Tuple[type, Callable]:
16
16
  module_name = ".".join(spl[:-1])
17
17
  fname = spl[-1]
18
18
  mod = importlib.import_module(module_name)
19
+ if not hasattr(mod, fname):
20
+ return None, None
19
21
  return mod, getattr(mod, fname)
20
22
 
21
23
 
@@ -33,12 +35,16 @@ def get_patches(mod, verbose: int = 0) -> Tuple[str, List[Any]]:
33
35
  doc = v.__doc__.lstrip()
34
36
  if doc.startswith("manual patch"):
35
37
  continue
36
- reg = re.compile("[[]patch:([a-z_A-Z.]+)[]]")
38
+ reg = re.compile("[\\[]patch:([a-z_A-Z.]+)[\\]]")
37
39
  fall = reg.findall(doc)
38
40
  assert (
39
41
  len(fall) == 1
40
42
  ), f"Unable to find patching information for {v} in \n{doc}"
41
43
  fmod, f = get_function(fall[0])
44
+ if fmod is None and f is None:
45
+ # The function does not exist in this version of transformers.
46
+ # No patch is needed.
47
+ continue
42
48
  to_patch.append({"module": fmod, "function": f, "patch": v})
43
49
 
44
50
  name = mod.__name__
@@ -255,7 +255,8 @@ class patched_DynamicCache:
255
255
  """
256
256
  # Update the number of seen tokens
257
257
  if layer_idx == 0:
258
- self._seen_tokens += key_states.shape[-2]
258
+ if hasattr(self, "_seen_tokens"):
259
+ self._seen_tokens += key_states.shape[-2]
259
260
 
260
261
  # Update the cache
261
262
  if key_states is not None:
@@ -294,7 +295,8 @@ class patched_DynamicCache:
294
295
  if self.get_seq_length() <= max_length:
295
296
  return
296
297
 
297
- self._seen_tokens = max_length
298
+ if hasattr(self, "_seen_tokens"):
299
+ self._seen_tokens = max_length
298
300
  for idx in range(len(self.key_cache)):
299
301
  if self.key_cache[idx].numel():
300
302
  self.key_cache[idx] = self.key_cache[idx][..., :max_length, :]
@@ -862,6 +864,91 @@ def patched_dynamic_rope_update(rope_forward):
862
864
  return wrapper
863
865
 
864
866
 
867
+ def common_eager_attention_forward(
868
+ module: torch.nn.Module,
869
+ query: torch.Tensor,
870
+ key: torch.Tensor,
871
+ value: torch.Tensor,
872
+ attention_mask: Optional[torch.Tensor],
873
+ scaling: Optional[float] = None,
874
+ dropout: float = 0.0,
875
+ head_mask: Optional[torch.Tensor] = None,
876
+ **kwargs,
877
+ ):
878
+ if scaling is None:
879
+ scaling = query.size(-1) ** -0.5
880
+
881
+ attn_weights = torch.matmul(query, key.transpose(2, 3)) * scaling
882
+ if attention_mask is not None:
883
+ # The two following lines were added.
884
+ if attention_mask is not None and attention_mask.ndim == 4:
885
+ attention_mask = attention_mask[:, :, :, : key.shape[-2]]
886
+ attn_weights = attn_weights + attention_mask
887
+
888
+ attn_weights = torch.nn.functional.softmax(attn_weights, dim=-1)
889
+
890
+ if head_mask is not None:
891
+ attn_weights = attn_weights * head_mask.view(1, -1, 1, 1)
892
+
893
+ attn_weights = torch.nn.functional.dropout(
894
+ attn_weights, p=dropout, training=module.training
895
+ )
896
+ attn_output = torch.matmul(attn_weights, value)
897
+ attn_output = attn_output.transpose(1, 2).contiguous()
898
+
899
+ return attn_output, attn_weights
900
+
901
+
902
+ def patched_model_bart_eager_attention_forward(
903
+ module: torch.nn.Module,
904
+ query: torch.Tensor,
905
+ key: torch.Tensor,
906
+ value: torch.Tensor,
907
+ attention_mask: Optional[torch.Tensor],
908
+ scaling: Optional[float] = None,
909
+ dropout: float = 0.0,
910
+ head_mask: Optional[torch.Tensor] = None,
911
+ **kwargs,
912
+ ):
913
+ """[patch:transformers.models.bart.modeling_bart.eager_attention_forward]"""
914
+ return common_eager_attention_forward(
915
+ module,
916
+ query,
917
+ key,
918
+ value,
919
+ attention_mask=attention_mask,
920
+ scaling=scaling,
921
+ dropout=dropout,
922
+ head_mask=head_mask,
923
+ **kwargs,
924
+ )
925
+
926
+
927
+ def patched_modeling_marian_eager_attention_forward(
928
+ module: torch.nn.Module,
929
+ query: torch.Tensor,
930
+ key: torch.Tensor,
931
+ value: torch.Tensor,
932
+ attention_mask: Optional[torch.Tensor],
933
+ scaling: Optional[float] = None,
934
+ dropout: float = 0.0,
935
+ head_mask: Optional[torch.Tensor] = None,
936
+ **kwargs,
937
+ ):
938
+ """[patch:transformers.models.marian.modeling_marian.eager_attention_forward]"""
939
+ return common_eager_attention_forward(
940
+ module,
941
+ query,
942
+ key,
943
+ value,
944
+ attention_mask=attention_mask,
945
+ scaling=scaling,
946
+ dropout=dropout,
947
+ head_mask=head_mask,
948
+ **kwargs,
949
+ )
950
+
951
+
865
952
  class common_RotaryEmbedding(torch.nn.Module):
866
953
  @torch.no_grad()
867
954
  @patched_dynamic_rope_update
@@ -1093,4 +1180,6 @@ class patched_IdeficsAttention(torch.nn.Module):
1093
1180
  if output_attentions:
1094
1181
  attn_weights = None
1095
1182
 
1096
- return attn_output, attn_weights, past_key_value
1183
+ if pv.Version(transformers.__version__) < pv.Version("4.53.99"):
1184
+ return attn_output, attn_weights, past_key_value
1185
+ return attn_output, attn_weights
@@ -144,6 +144,11 @@ def get_untrained_model_with_inputs(
144
144
  f"[get_untrained_model_with_inputs] config._attn_implementation="
145
145
  f"{config._attn_implementation!r}" # type: ignore[union-attr]
146
146
  )
147
+ elif verbose:
148
+ print(
149
+ f"[get_untrained_model_with_inputs] default config._attn_implementation="
150
+ f"{getattr(config, '_attn_implementation', '?')!r}" # type: ignore[union-attr]
151
+ )
147
152
 
148
153
  if type(config) is dict and "_diffusers_version" in config:
149
154
  import diffusers
@@ -288,6 +288,7 @@ def validate_model(
288
288
  repeat: int = 1,
289
289
  warmup: int = 0,
290
290
  inputs2: int = 1,
291
+ output_names: Optional[List[str]] = None,
291
292
  ) -> Tuple[Dict[str, Union[int, float, str]], Dict[str, Any]]:
292
293
  """
293
294
  Validates a model.
@@ -338,6 +339,7 @@ def validate_model(
338
339
  :param inputs2: checks that the second set of inputs is reunning as well,
339
340
  this ensures that the model does support dynamism, the value is used
340
341
  as an increment to the first set of values (added to dimensions)
342
+ :param output_names: output names the onnx exporter should use
341
343
  :return: two dictionaries, one with some metrics,
342
344
  another one with whatever the function produces
343
345
 
@@ -433,6 +435,7 @@ def validate_model(
433
435
  )
434
436
  print(f"[validate_model] exporter={exporter!r}, optimization={optimization!r}")
435
437
  print(f"[validate_model] dump_folder={dump_folder!r}")
438
+ print(f"[validate_model] output_names={output_names}")
436
439
  summary["model_id"] = model_id
437
440
  summary["model_subfolder"] = subfolder or ""
438
441
 
@@ -631,6 +634,7 @@ def validate_model(
631
634
  optimization=optimization,
632
635
  do_run=do_run,
633
636
  dump_folder=dump_folder,
637
+ output_names=output_names,
634
638
  )
635
639
  else:
636
640
  data["inputs_export"] = data["inputs"]
@@ -643,6 +647,7 @@ def validate_model(
643
647
  optimization=optimization,
644
648
  do_run=do_run,
645
649
  dump_folder=dump_folder,
650
+ output_names=output_names,
646
651
  )
647
652
  summary.update(summary_export)
648
653
 
@@ -868,6 +873,7 @@ def call_exporter(
868
873
  optimization: Optional[str] = None,
869
874
  do_run: bool = False,
870
875
  dump_folder: Optional[str] = None,
876
+ output_names: Optional[List[str]] = None,
871
877
  ) -> Tuple[Dict[str, Union[int, float, str]], Dict[str, Any]]:
872
878
  """
873
879
  Calls an exporter on a model;
@@ -880,6 +886,7 @@ def call_exporter(
880
886
  :param optimization: optimization to do
881
887
  :param do_run: runs and compute discrepancies
882
888
  :param dump_folder: to dump additional information
889
+ :param output_names: list of output names to use with the onnx exporter
883
890
  :return: two dictionaries, one with some metrics,
884
891
  another one with whatever the function produces
885
892
  """
@@ -902,6 +909,7 @@ def call_exporter(
902
909
  quiet=quiet,
903
910
  verbose=verbose,
904
911
  optimization=optimization,
912
+ output_names=output_names,
905
913
  )
906
914
  return summary, data
907
915
  if exporter == "custom" or exporter.startswith("custom"):
@@ -913,6 +921,7 @@ def call_exporter(
913
921
  verbose=verbose,
914
922
  optimization=optimization,
915
923
  dump_folder=dump_folder,
924
+ output_names=output_names,
916
925
  )
917
926
  return summary, data
918
927
  if exporter == "modelbuilder":
@@ -923,6 +932,7 @@ def call_exporter(
923
932
  quiet=quiet,
924
933
  verbose=verbose,
925
934
  optimization=optimization,
935
+ output_names=output_names,
926
936
  )
927
937
  return summary, data
928
938
  raise NotImplementedError(
@@ -1090,7 +1100,7 @@ def validate_onnx_model(
1090
1100
  """
1091
1101
  import onnxruntime
1092
1102
 
1093
- def _mk(key):
1103
+ def _mk(key, flavour=flavour):
1094
1104
  return f"{key}_{flavour}" if flavour else key
1095
1105
 
1096
1106
  summary: Dict[str, Any] = {}
@@ -1145,7 +1155,7 @@ def validate_onnx_model(
1145
1155
  )
1146
1156
  sess = _quiet_or_not_quiet(
1147
1157
  quiet,
1148
- _mk("onnx_ort_create"),
1158
+ _mk("create_onnx_ort"),
1149
1159
  summary,
1150
1160
  data,
1151
1161
  (lambda source=source, providers=providers: cls_runtime(source, providers)),
@@ -1180,7 +1190,7 @@ def validate_onnx_model(
1180
1190
 
1181
1191
  got = _quiet_or_not_quiet(
1182
1192
  quiet,
1183
- _mk(f"time_onnx_ort_run{suffix}"),
1193
+ _mk(f"run_onnx_ort{suffix}"),
1184
1194
  summary,
1185
1195
  data,
1186
1196
  (lambda sess=sess, feeds=feeds: sess.run(None, feeds)),
@@ -1211,6 +1221,7 @@ def call_torch_export_onnx(
1211
1221
  quiet: bool = False,
1212
1222
  verbose: int = 0,
1213
1223
  optimization: Optional[str] = None,
1224
+ output_names: Optional[List[str]] = None,
1214
1225
  ) -> Tuple[Dict[str, Any], Dict[str, Any]]:
1215
1226
  """
1216
1227
  Exports a model into onnx.
@@ -1222,6 +1233,7 @@ def call_torch_export_onnx(
1222
1233
  :param quiet: catch exception or not
1223
1234
  :param verbose: verbosity
1224
1235
  :param optimization: optimization to do
1236
+ :param output_names: output names to use
1225
1237
  :return: two dictionaries, one with some metrics,
1226
1238
  another one with whatever the function produces
1227
1239
  """
@@ -1276,6 +1288,8 @@ def call_torch_export_onnx(
1276
1288
  print("[call_torch_export_onnx] dynamo=False so...")
1277
1289
  print(f"[call_torch_export_onnx] args={string_type(args, with_shape=True)}")
1278
1290
  print(f"[call_torch_export_onnx] kwargs={string_type(kwargs, with_shape=True)}")
1291
+ if output_names:
1292
+ export_export_kwargs["output_names"] = output_names
1279
1293
  if opset:
1280
1294
  export_export_kwargs["opset_version"] = opset
1281
1295
  if verbose:
@@ -1346,6 +1360,7 @@ def call_torch_export_model_builder(
1346
1360
  quiet: bool = False,
1347
1361
  verbose: int = 0,
1348
1362
  optimization: Optional[str] = None,
1363
+ output_names: Optional[List[str]] = None,
1349
1364
  ) -> Tuple[Dict[str, Any], Dict[str, Any]]:
1350
1365
  """
1351
1366
  Exports a model into onnx with :epkg:`ModelBuilder`.
@@ -1356,6 +1371,7 @@ def call_torch_export_model_builder(
1356
1371
  :param quiet: catch exception or not
1357
1372
  :param verbose: verbosity
1358
1373
  :param optimization: optimization to do
1374
+ :param output_names: list of output names to use
1359
1375
  :return: two dictionaries, one with some metrics,
1360
1376
  another one with whatever the function produces
1361
1377
  """
@@ -1369,6 +1385,9 @@ def call_torch_export_model_builder(
1369
1385
  provider = data.get("model_device", "cpu")
1370
1386
  dump_folder = data.get("model_dump_folder", "")
1371
1387
  assert dump_folder, "dump_folder cannot be empty with ModelBuilder"
1388
+ assert (
1389
+ not output_names
1390
+ ), f"output_names not empty, not supported yet, output_names={output_names}"
1372
1391
  cache_dir = os.path.join(dump_folder, "cache_mb")
1373
1392
  if not os.path.exists(cache_dir):
1374
1393
  os.makedirs(cache_dir)
@@ -1408,6 +1427,7 @@ def call_torch_export_custom(
1408
1427
  verbose: int = 0,
1409
1428
  optimization: Optional[str] = None,
1410
1429
  dump_folder: Optional[str] = None,
1430
+ output_names: Optional[List[str]] = None,
1411
1431
  ) -> Tuple[Dict[str, Any], Dict[str, Any]]:
1412
1432
  """
1413
1433
  Exports a model into onnx.
@@ -1420,6 +1440,7 @@ def call_torch_export_custom(
1420
1440
  :param verbose: verbosity
1421
1441
  :param optimization: optimization to do
1422
1442
  :param dump_folder: to store additional information
1443
+ :param output_names: list of output names to use
1423
1444
  :return: two dictionaries, one with some metrics,
1424
1445
  another one with whatever the function produces
1425
1446
  """
@@ -1504,6 +1525,8 @@ def call_torch_export_custom(
1504
1525
  )
1505
1526
  if opset:
1506
1527
  kws["target_opset"] = opset
1528
+ if output_names:
1529
+ kws["output_names"] = output_names
1507
1530
 
1508
1531
  epo, opt_stats = _quiet_or_not_quiet(
1509
1532
  quiet,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: onnx-diagnostic
3
- Version: 0.7.4
3
+ Version: 0.7.5
4
4
  Summary: Investigate ONNX models
5
5
  Home-page: https://github.com/sdpython/onnx-diagnostic
6
6
  Author: Xavier Dupré
@@ -1,6 +1,6 @@
1
- onnx_diagnostic/__init__.py,sha256=dmZNMpFkDRd7ZCC6bC2fEFqvAhHhsqqua8ZE5LbOC9s,173
1
+ onnx_diagnostic/__init__.py,sha256=759u8m5f7RZRqqatZb98hD3h2h5IG0CCVPhEq4f80aA,173
2
2
  onnx_diagnostic/__main__.py,sha256=YmyV_Aq_ianDlHyKLHMa6h8YK3ZmFPpLVHLKjM91aCk,79
3
- onnx_diagnostic/_command_lines_parser.py,sha256=65oUjJ2tgPxQgIKgOAI04jhOFRnGUSNivUNDVMZ-urU,28597
3
+ onnx_diagnostic/_command_lines_parser.py,sha256=wU8L2C6f4BOrZMYM4WbHF6PDndeL7XKa__bx6BrKQs0,31227
4
4
  onnx_diagnostic/api.py,sha256=BhCl_yCd78N7TlVtPOHjeYv1QBEy39TjZ647rcHqLh0,345
5
5
  onnx_diagnostic/doc.py,sha256=t3RELgfooYnVMAi0JSpggWkQEgUsREz8NmRvn0TnLI8,2829
6
6
  onnx_diagnostic/ext_test_case.py,sha256=Bq4vdlM0P72H1orlKJTeOBqm1YGHTK-ylAlNsBe4LeA,43438
@@ -9,6 +9,7 @@ onnx_diagnostic/export/dynamic_shapes.py,sha256=HYf2OEi7PmRSj8uxMD-wbdVxxejkWXTP
9
9
  onnx_diagnostic/export/shape_helper.py,sha256=EQXHRVxwGpHRYhx8Y44Crqs640pmaIuKSwW1KJOW0IU,7501
10
10
  onnx_diagnostic/export/validate.py,sha256=_PGUql2DJhIgGKo0WjTGUc5AgsZUx8fEs00MePy-w98,6043
11
11
  onnx_diagnostic/helpers/__init__.py,sha256=GJ2GT7cgnlIveVUwMZhuvUwidbTJaKv8CsSIOpZDsJg,83
12
+ onnx_diagnostic/helpers/_log_helper.py,sha256=OCxmJKBN3T4joxlptvfe18xNlyClQH6mrJ2OOQvxZtI,16686
12
13
  onnx_diagnostic/helpers/args_helper.py,sha256=SRWnqC7EENg09RZlA50B_PcdiIhdbgA4C3ACfzl5nMs,4419
13
14
  onnx_diagnostic/helpers/bench_run.py,sha256=CGA6VMJZMH2gDhVueT9ypNm4PMcjGrrGFYp08nhWj9k,16539
14
15
  onnx_diagnostic/helpers/cache_helper.py,sha256=TeBUuGvqIMO-dsLDy7keaVt3ImZeifldwTgx6TEjBo8,11595
@@ -16,7 +17,7 @@ onnx_diagnostic/helpers/config_helper.py,sha256=9h1NWC9RLmu43Yf5Cz9usjMdLiyLWXMh
16
17
  onnx_diagnostic/helpers/doc_helper.py,sha256=pl5MZd3_FaE8BqQnqoBuSBxoNCFcd2OJd3eITUSku5c,5897
17
18
  onnx_diagnostic/helpers/graph_helper.py,sha256=hevQT5a7_QuriVPQcbT5qe18n99Doyl5h3-qshx1-uk,14093
18
19
  onnx_diagnostic/helpers/helper.py,sha256=_6K0IvfK7ymBE8uWFAOA1ksU_fMvl2BRtlxj5SA9R2I,58203
19
- onnx_diagnostic/helpers/log_helper.py,sha256=e89MI_i6PFBshm1cOOX5yCowEPIKzneMyCrpc34vpU0,77613
20
+ onnx_diagnostic/helpers/log_helper.py,sha256=rBYtZo85n61uQRIpxKpxkKTtKv-bDZvAc1J1uHRDosc,82567
20
21
  onnx_diagnostic/helpers/memory_peak.py,sha256=OT6mz0muBbBZY0pjgW2_eCk_lOtFRo-5w4jFo2Z6Kok,6380
21
22
  onnx_diagnostic/helpers/mini_onnx_builder.py,sha256=p0Xh2Br38xAqUjB2214GiNOIbCgiVZKeyVEnjdyqyFI,21091
22
23
  onnx_diagnostic/helpers/model_builder_helper.py,sha256=RvDyPFqRboEU3HsQV_xi9oy-o3_4KuGFVzs5MhksduY,12552
@@ -73,7 +74,7 @@ onnx_diagnostic/reference/torch_ops/shape_ops.py,sha256=pJrNR2UB4PlWl6cv4EDl1uGl
73
74
  onnx_diagnostic/reference/torch_ops/unary_ops.py,sha256=E8Ys1eZsOTsucBKoXb1_Kl5LbBDygniDvW2BvN4IPMo,1708
74
75
  onnx_diagnostic/tasks/__init__.py,sha256=0BYtrAnr0zKN3om71oi-OVz5wFYDp9WWIk51qWjjyCw,2450
75
76
  onnx_diagnostic/tasks/automatic_speech_recognition.py,sha256=H94rxeiAjcJdECA1g95G_U9fZfpXk6dfjNKKYuvc4Qc,7130
76
- onnx_diagnostic/tasks/feature_extraction.py,sha256=MptOP-1ZSIMTIJ0woSqKLR7TlB9m7kww9V8cfEgZJTY,2502
77
+ onnx_diagnostic/tasks/feature_extraction.py,sha256=4M5bE6lGf7KG9qnlim9EzVmqptL17jsSnWgT-gYtcYg,5534
77
78
  onnx_diagnostic/tasks/fill_mask.py,sha256=Rvrz0j_DQu-vf4CSSAZMBMXb2EuHvOCzRZwj8Cy8yfg,2620
78
79
  onnx_diagnostic/tasks/image_classification.py,sha256=x1XfeWAOe0r_s9kU6WENoYxjfoRTp1pkwKgIveoLbUw,4627
79
80
  onnx_diagnostic/tasks/image_text_to_text.py,sha256=-vbZMA_ruo0WR_96YMYRvoNfq1plpElBJWXC2klAf7Q,7802
@@ -81,13 +82,13 @@ onnx_diagnostic/tasks/mixture_of_expert.py,sha256=DgIsbwzV4smysOK83wny91k3ix1Qt2
81
82
  onnx_diagnostic/tasks/object_detection.py,sha256=xRBH9JZxBQf0SVSTJP6d-VVCKqrw7JAeif1joHfiYng,4224
82
83
  onnx_diagnostic/tasks/sentence_similarity.py,sha256=soL6QxLvyjtQ-3tQ3nCFxrcrk_4a8tuAjil8zYQ_pXk,2635
83
84
  onnx_diagnostic/tasks/summarization.py,sha256=LZ8A8wl6cd8kWSc6k5vLHa_XZkm35rYkTRv8iUYtr6I,8268
84
- onnx_diagnostic/tasks/text2text_generation.py,sha256=Pk-H_qX5Y-2dzk45N9jbQ73S3O_d5-D11MyUhUfUwuM,8685
85
+ onnx_diagnostic/tasks/text2text_generation.py,sha256=SzmgECK05H_fieIa2rlY-MQUmvNRotOo05J2eiMwjIM,8578
85
86
  onnx_diagnostic/tasks/text_classification.py,sha256=dO_LLbwwv0OJfIa9DqxQqAGUDuz3iIF1XkafzaYJdJw,2691
86
87
  onnx_diagnostic/tasks/text_generation.py,sha256=tW9Gnum_eck3czNyctuUISA-Ek7pO37v5-11GC8QBW8,13124
87
88
  onnx_diagnostic/tasks/text_to_image.py,sha256=mOS3Ruosi3hzRMxXLDN7ZkAbi7NnQb7MWwQP_okGVHs,2962
88
89
  onnx_diagnostic/tasks/zero_shot_image_classification.py,sha256=1iqYamkq5kZNXEXsySw748ernc0O94GkwpYAIEl6Kj4,4659
89
90
  onnx_diagnostic/torch_export_patches/__init__.py,sha256=0SaZedwznm1hQUCvXZsGZORV5vby954wEExr5faepGg,720
90
- onnx_diagnostic/torch_export_patches/onnx_export_errors.py,sha256=ZsUSOnKxeq4-dP86c5dTIbHMJFy_y690vvU4yfo6tNs,23438
91
+ onnx_diagnostic/torch_export_patches/onnx_export_errors.py,sha256=NVJNhwr5LVwKzU9RsR2b8fOounmQ1W3nx_k-6XirASc,23701
91
92
  onnx_diagnostic/torch_export_patches/onnx_export_serialization.py,sha256=wFE2fNxihAA3iua79AEB97_RBVv4wvGxwS9g4RJaSIc,10715
92
93
  onnx_diagnostic/torch_export_patches/patch_expressions.py,sha256=vr4tt61cbDnaaaduzMj4UBZ8OUtr6GfDpIWwOYqjWzs,3213
93
94
  onnx_diagnostic/torch_export_patches/patch_inputs.py,sha256=9b4pmyT00BwLqi7WG-gliep1RUy3gXEgW6BDnlSSA-M,7689
@@ -97,26 +98,26 @@ onnx_diagnostic/torch_export_patches/eval/__init__.py,sha256=57x62uZNA80XiWgkG8F
97
98
  onnx_diagnostic/torch_export_patches/eval/model_cases.py,sha256=DTvdHPtNQh25Akv5o3D4Jxf1L1-SJ7w14tgvj8AAns8,26577
98
99
  onnx_diagnostic/torch_export_patches/patches/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
100
  onnx_diagnostic/torch_export_patches/patches/patch_torch.py,sha256=KaZ8TjDa9ATgT4HllYzzoNf_51q_yOj_GuF5NYjPCrU,18913
100
- onnx_diagnostic/torch_export_patches/patches/patch_transformers.py,sha256=nVOg69e_cXvpcP5WIW9pIHCgnF-P_Ne87mRC6ep0g-I,45847
101
+ onnx_diagnostic/torch_export_patches/patches/patch_transformers.py,sha256=ZRUHF_wamXDq6rn6V1ja5MqtZW_sJzgxdE5P900GHbI,48511
101
102
  onnx_diagnostic/torch_export_patches/serialization/__init__.py,sha256=BHLdRPtNAtNPAS-bPKEj3-foGSPvwAbZXrHzGGPDLEw,1876
102
103
  onnx_diagnostic/torch_export_patches/serialization/diffusers_impl.py,sha256=drq3EH_yjcSuIWYsVeUWm8Cx6YCZFU6bP_1PLtPfY5I,945
103
104
  onnx_diagnostic/torch_export_patches/serialization/transformers_impl.py,sha256=9u2jkqnuyBkIF3R2sDEO0Jlkedl-cQhBNXxXXDLSEwE,8885
104
105
  onnx_diagnostic/torch_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
106
  onnx_diagnostic/torch_models/llms.py,sha256=soyg4yC87ptGoeulJhKqw5opGmuLvH1pn_ZDXZ4Jr8E,90
106
- onnx_diagnostic/torch_models/validate.py,sha256=dlWeRNLcQ2h3fxx07MA0NHoOPqT3-Afejgrj2Rozvck,63796
107
+ onnx_diagnostic/torch_models/validate.py,sha256=FNqi-Dg7-S_dSQDdcUjc5ERgTquiXclwGv0UZxVHYbY,64866
107
108
  onnx_diagnostic/torch_models/hghub/__init__.py,sha256=vi1Q7YHdddj1soiBN42MSvJdFqe2_KUoWafHISjwOu8,58
108
109
  onnx_diagnostic/torch_models/hghub/hub_api.py,sha256=Bvr-sTAhS6s6UCkt-KsY_7Mdai08-AQzvHrzbYCSuvk,13186
109
110
  onnx_diagnostic/torch_models/hghub/hub_data.py,sha256=NTTDsCtIVvYnr5J3rlcq0GSGDOzOPzq9Tsnb3oVf4q8,8309
110
111
  onnx_diagnostic/torch_models/hghub/hub_data_cached_configs.py,sha256=zZvIxTbmL55x44kCj3-T5Kg3Qzm9KB_Xj-MCcU9-LuQ,268245
111
- onnx_diagnostic/torch_models/hghub/model_inputs.py,sha256=qDw03KsLd_ZAMHBso--rUriCAZIewKFZG9n4-1zvGo8,10825
112
+ onnx_diagnostic/torch_models/hghub/model_inputs.py,sha256=SDRLCA2zivEHIKr2RRRP-dZNiNUcpYS3EgP0unLExxY,11046
112
113
  onnx_diagnostic/torch_models/untrained/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
114
  onnx_diagnostic/torch_models/untrained/llm_phi2.py,sha256=ynBTDHJHCk44NjLT_t6OiFDBdPP0rFGPteiONDxvztw,3708
114
115
  onnx_diagnostic/torch_models/untrained/llm_tiny_llm.py,sha256=QXw_Bs2SzfeiQMf-tmtVl83SmVOL4-Um7Qy-f0E48QI,2507
115
116
  onnx_diagnostic/torch_onnx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
117
  onnx_diagnostic/torch_onnx/runtime_info.py,sha256=1g9F_Jf9AAgYQU4stbsrFXwQl-30mWlQrFbQ7val8Ps,9268
117
118
  onnx_diagnostic/torch_onnx/sbs.py,sha256=1EL25DeYFzlBSiFG_XjePBLvsiItRXbdDrr5-QZW2mA,16878
118
- onnx_diagnostic-0.7.4.dist-info/licenses/LICENSE.txt,sha256=Vv6TXglX6Rc0d-f8aREhayhT-6PMQXEyOmI2NKlUCMc,1045
119
- onnx_diagnostic-0.7.4.dist-info/METADATA,sha256=6l0XAH0UYEmqkPDswFSZFGrU5hYVEDB8YByQCiBkwlI,7431
120
- onnx_diagnostic-0.7.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
121
- onnx_diagnostic-0.7.4.dist-info/top_level.txt,sha256=KwNkXewmcobM3ZT1DJLVWH6ebJzA5qKg7cWqKfpGNT4,16
122
- onnx_diagnostic-0.7.4.dist-info/RECORD,,
119
+ onnx_diagnostic-0.7.5.dist-info/licenses/LICENSE.txt,sha256=Vv6TXglX6Rc0d-f8aREhayhT-6PMQXEyOmI2NKlUCMc,1045
120
+ onnx_diagnostic-0.7.5.dist-info/METADATA,sha256=sTLrt4adKj6mufYnekwgSwSXxhgJzrV_TZTL-lHA0EU,7431
121
+ onnx_diagnostic-0.7.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
122
+ onnx_diagnostic-0.7.5.dist-info/top_level.txt,sha256=KwNkXewmcobM3ZT1DJLVWH6ebJzA5qKg7cWqKfpGNT4,16
123
+ onnx_diagnostic-0.7.5.dist-info/RECORD,,