invarlock 0.3.6__py3-none-any.whl → 0.3.7__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.
- invarlock/__init__.py +2 -2
- invarlock/adapters/__init__.py +10 -14
- invarlock/adapters/auto.py +35 -40
- invarlock/adapters/capabilities.py +2 -2
- invarlock/adapters/hf_causal.py +418 -0
- invarlock/adapters/{hf_onnx.py → hf_causal_onnx.py} +3 -3
- invarlock/adapters/hf_mixin.py +25 -4
- invarlock/adapters/{hf_bert.py → hf_mlm.py} +4 -11
- invarlock/adapters/{hf_t5.py → hf_seq2seq.py} +9 -9
- invarlock/cli/adapter_auto.py +31 -21
- invarlock/cli/app.py +73 -2
- invarlock/cli/commands/certify.py +600 -59
- invarlock/cli/commands/doctor.py +8 -10
- invarlock/cli/commands/plugins.py +13 -9
- invarlock/cli/commands/report.py +233 -69
- invarlock/cli/commands/run.py +907 -183
- invarlock/cli/commands/verify.py +76 -11
- invarlock/cli/config.py +1 -1
- invarlock/cli/doctor_helpers.py +4 -5
- invarlock/cli/output.py +193 -0
- invarlock/cli/provenance.py +1 -1
- invarlock/core/bootstrap.py +1 -1
- invarlock/core/registry.py +9 -11
- invarlock/core/runner.py +111 -25
- invarlock/edits/quant_rtn.py +65 -37
- invarlock/eval/bench.py +3 -3
- invarlock/eval/data.py +68 -23
- invarlock/eval/metrics.py +59 -1
- invarlock/eval/tasks/__init__.py +12 -0
- invarlock/eval/tasks/classification.py +48 -0
- invarlock/eval/tasks/qa.py +36 -0
- invarlock/eval/tasks/text_generation.py +102 -0
- invarlock/guards/invariants.py +19 -10
- invarlock/guards/rmt.py +2 -2
- invarlock/guards/variance.py +2 -2
- invarlock/model_profile.py +48 -27
- invarlock/observability/health.py +6 -6
- invarlock/observability/metrics.py +108 -0
- invarlock/reporting/certificate.py +159 -9
- invarlock/reporting/certificate_schema.py +1 -1
- invarlock/reporting/guards_analysis.py +154 -4
- invarlock/reporting/html.py +55 -5
- invarlock/reporting/normalizer.py +7 -0
- invarlock/reporting/render.py +791 -431
- invarlock/reporting/report.py +39 -3
- invarlock/reporting/report_types.py +6 -1
- invarlock/reporting/telemetry.py +86 -0
- {invarlock-0.3.6.dist-info → invarlock-0.3.7.dist-info}/METADATA +23 -9
- {invarlock-0.3.6.dist-info → invarlock-0.3.7.dist-info}/RECORD +53 -48
- {invarlock-0.3.6.dist-info → invarlock-0.3.7.dist-info}/WHEEL +1 -1
- {invarlock-0.3.6.dist-info → invarlock-0.3.7.dist-info}/entry_points.txt +5 -3
- invarlock/adapters/hf_gpt2.py +0 -404
- invarlock/adapters/hf_llama.py +0 -487
- {invarlock-0.3.6.dist-info → invarlock-0.3.7.dist-info}/licenses/LICENSE +0 -0
- {invarlock-0.3.6.dist-info → invarlock-0.3.7.dist-info}/top_level.txt +0 -0
invarlock/reporting/report.py
CHANGED
|
@@ -243,22 +243,24 @@ def save_report(
|
|
|
243
243
|
raise ValueError("Baseline report required for certificate generation")
|
|
244
244
|
|
|
245
245
|
# Generate certificate JSON in canonical path/name
|
|
246
|
+
cert_json = to_certificate(report, baseline, format="json")
|
|
246
247
|
cert_json_path = output_path / "evaluation.cert.json"
|
|
247
248
|
with open(cert_json_path, "w", encoding="utf-8") as f:
|
|
248
|
-
f.write(
|
|
249
|
+
f.write(cert_json)
|
|
249
250
|
saved_files["cert"] = cert_json_path
|
|
250
251
|
|
|
251
252
|
# Also emit a markdown variant for human consumption
|
|
253
|
+
cert_md = to_certificate(report, baseline, format="markdown")
|
|
252
254
|
cert_md_path = output_path / f"{filename_prefix}_certificate.md"
|
|
253
255
|
with open(cert_md_path, "w", encoding="utf-8") as f:
|
|
254
|
-
f.write(
|
|
256
|
+
f.write(cert_md)
|
|
255
257
|
saved_files["cert_md"] = cert_md_path
|
|
256
258
|
|
|
257
259
|
# Emit a lightweight manifest to serve as an evidence bundle index
|
|
258
260
|
try:
|
|
259
261
|
from datetime import datetime as _dt
|
|
260
262
|
|
|
261
|
-
manifest = {
|
|
263
|
+
manifest: dict[str, Any] = {
|
|
262
264
|
"generated_at": _dt.now().isoformat(),
|
|
263
265
|
"files": {
|
|
264
266
|
"certificate_json": str(cert_json_path),
|
|
@@ -270,6 +272,40 @@ def save_report(
|
|
|
270
272
|
"seed": (report.get("meta", {}) or {}).get("seed"),
|
|
271
273
|
},
|
|
272
274
|
}
|
|
275
|
+
|
|
276
|
+
# Surface quick triage fields without opening the certificate.
|
|
277
|
+
try:
|
|
278
|
+
from .render import compute_console_validation_block
|
|
279
|
+
|
|
280
|
+
certificate_obj = json.loads(cert_json)
|
|
281
|
+
if not isinstance(certificate_obj, dict):
|
|
282
|
+
raise TypeError("certificate JSON did not decode to a dict")
|
|
283
|
+
|
|
284
|
+
block = compute_console_validation_block(certificate_obj)
|
|
285
|
+
rows = block.get("rows", []) or []
|
|
286
|
+
gates_total = len(rows)
|
|
287
|
+
gates_passed = sum(
|
|
288
|
+
1 for r in rows if isinstance(r, dict) and bool(r.get("ok"))
|
|
289
|
+
)
|
|
290
|
+
overall_status = "PASS" if block.get("overall_pass") else "FAIL"
|
|
291
|
+
|
|
292
|
+
pm_ratio = None
|
|
293
|
+
pm = certificate_obj.get("primary_metric", {}) or {}
|
|
294
|
+
if isinstance(pm, dict):
|
|
295
|
+
ratio = pm.get("ratio_vs_baseline")
|
|
296
|
+
if isinstance(ratio, int | float):
|
|
297
|
+
pm_ratio = float(ratio)
|
|
298
|
+
|
|
299
|
+
manifest["summary"].update(
|
|
300
|
+
{
|
|
301
|
+
"overall_status": overall_status,
|
|
302
|
+
"primary_metric_ratio": pm_ratio,
|
|
303
|
+
"gates_passed": gates_passed,
|
|
304
|
+
"gates_total": gates_total,
|
|
305
|
+
}
|
|
306
|
+
)
|
|
307
|
+
except Exception:
|
|
308
|
+
pass
|
|
273
309
|
# Write debug evidence (tiny) when requested via env
|
|
274
310
|
guard_payload = {}
|
|
275
311
|
try:
|
|
@@ -34,7 +34,7 @@ class MetaData(TypedDict):
|
|
|
34
34
|
"""Metadata about the model and execution environment."""
|
|
35
35
|
|
|
36
36
|
model_id: str # Model identifier (e.g., "gpt2", "path/to/model")
|
|
37
|
-
adapter: str # Adapter name (e.g., "
|
|
37
|
+
adapter: str # Adapter name (e.g., "hf_causal")
|
|
38
38
|
commit: str # Git commit SHA
|
|
39
39
|
seed: int # Random seed used for evaluation
|
|
40
40
|
device: str # Device used ("cpu", "cuda", "mps")
|
|
@@ -107,6 +107,11 @@ class EvalMetrics(TypedDict, total=False):
|
|
|
107
107
|
# Optional aux fields retained for guard telemetry and debug
|
|
108
108
|
latency_ms_per_tok: float # Average latency per token in milliseconds
|
|
109
109
|
memory_mb_peak: float # Peak memory usage in MB
|
|
110
|
+
gpu_memory_mb_peak: float # Peak GPU memory usage in MB
|
|
111
|
+
gpu_memory_reserved_mb_peak: float # Peak GPU reserved memory in MB
|
|
112
|
+
timings: dict[str, float] # Phase timing breakdown (seconds)
|
|
113
|
+
guard_timings: dict[str, float] # Per-guard timings (seconds)
|
|
114
|
+
memory_snapshots: list[dict[str, Any]] # Phase memory snapshots
|
|
110
115
|
spectral: dict[str, Any] # Spectral norm summaries
|
|
111
116
|
rmt: dict[str, Any] # RMT statistics
|
|
112
117
|
invariants: dict[str, Any] # Model invariant check results
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Telemetry report utilities.
|
|
3
|
+
|
|
4
|
+
Produces a compact JSON summary for performance analysis.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
from datetime import datetime
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def build_telemetry_payload(report: dict[str, Any]) -> dict[str, Any]:
|
|
16
|
+
"""Build a structured telemetry payload from a run report."""
|
|
17
|
+
meta_in = report.get("meta", {}) if isinstance(report, dict) else {}
|
|
18
|
+
metrics_in = report.get("metrics", {}) if isinstance(report, dict) else {}
|
|
19
|
+
|
|
20
|
+
payload: dict[str, Any] = {"generated_at": datetime.now().isoformat()}
|
|
21
|
+
|
|
22
|
+
if isinstance(meta_in, dict):
|
|
23
|
+
payload["meta"] = {
|
|
24
|
+
"model_id": meta_in.get("model_id"),
|
|
25
|
+
"adapter": meta_in.get("adapter"),
|
|
26
|
+
"device": meta_in.get("device"),
|
|
27
|
+
"run_id": meta_in.get("run_id"),
|
|
28
|
+
"profile": meta_in.get("profile"),
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if isinstance(metrics_in, dict):
|
|
32
|
+
timings = metrics_in.get("timings")
|
|
33
|
+
if isinstance(timings, dict):
|
|
34
|
+
payload["timings"] = timings
|
|
35
|
+
|
|
36
|
+
guard_timings = metrics_in.get("guard_timings")
|
|
37
|
+
if isinstance(guard_timings, dict):
|
|
38
|
+
payload["guard_timings"] = guard_timings
|
|
39
|
+
|
|
40
|
+
memory_snapshots = metrics_in.get("memory_snapshots")
|
|
41
|
+
if isinstance(memory_snapshots, list):
|
|
42
|
+
payload["memory_snapshots"] = memory_snapshots
|
|
43
|
+
|
|
44
|
+
memory_summary: dict[str, Any] = {}
|
|
45
|
+
for key in (
|
|
46
|
+
"memory_mb_peak",
|
|
47
|
+
"gpu_memory_mb_peak",
|
|
48
|
+
"gpu_memory_reserved_mb_peak",
|
|
49
|
+
):
|
|
50
|
+
value = metrics_in.get(key)
|
|
51
|
+
if isinstance(value, int | float):
|
|
52
|
+
memory_summary[key] = float(value)
|
|
53
|
+
if memory_summary:
|
|
54
|
+
payload["memory"] = memory_summary
|
|
55
|
+
|
|
56
|
+
perf_metrics: dict[str, Any] = {}
|
|
57
|
+
for key in (
|
|
58
|
+
"latency_ms_per_tok",
|
|
59
|
+
"throughput_tok_per_s",
|
|
60
|
+
"eval_samples",
|
|
61
|
+
"total_tokens",
|
|
62
|
+
):
|
|
63
|
+
value = metrics_in.get(key)
|
|
64
|
+
if isinstance(value, int | float):
|
|
65
|
+
perf_metrics[key] = float(value)
|
|
66
|
+
if perf_metrics:
|
|
67
|
+
payload["performance"] = perf_metrics
|
|
68
|
+
|
|
69
|
+
return payload
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def save_telemetry_report(
|
|
73
|
+
report: dict[str, Any],
|
|
74
|
+
output_dir: Path,
|
|
75
|
+
*,
|
|
76
|
+
filename: str = "telemetry.json",
|
|
77
|
+
) -> Path:
|
|
78
|
+
"""Write telemetry JSON payload to the output directory."""
|
|
79
|
+
payload = build_telemetry_payload(report)
|
|
80
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
81
|
+
path = output_dir / filename
|
|
82
|
+
path.write_text(json.dumps(payload, indent=2, ensure_ascii=False), encoding="utf-8")
|
|
83
|
+
return path
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
__all__ = ["build_telemetry_payload", "save_telemetry_report"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invarlock
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.7
|
|
4
4
|
Summary: Edit‑agnostic robustness certificates for weight edits (InvarLock framework)
|
|
5
5
|
Author-email: InvarLock Team <oss@invarlock.dev>
|
|
6
6
|
Maintainer-email: InvarLock Maintainers <support@invarlock.dev>
|
|
@@ -31,6 +31,7 @@ Requires-Dist: scikit-learn>=1.4
|
|
|
31
31
|
Requires-Dist: pydantic>=2.0
|
|
32
32
|
Requires-Dist: rich>=13.0
|
|
33
33
|
Requires-Dist: pyyaml>=6.0
|
|
34
|
+
Requires-Dist: markdown>=3.5
|
|
34
35
|
Requires-Dist: psutil>=5.9
|
|
35
36
|
Requires-Dist: hypothesis>=6.98
|
|
36
37
|
Requires-Dist: typing_extensions>=4.7
|
|
@@ -110,9 +111,9 @@ In short: certify that weight edits (e.g., quantization) preserve quality. If
|
|
|
110
111
|
they don’t, roll back safely.
|
|
111
112
|
|
|
112
113
|
Technical: edit‑agnostic guard pipeline (invariants → spectral → RMT →
|
|
113
|
-
variance) producing a machine‑readable
|
|
114
|
+
variance) producing a machine‑readable Evaluation Certificate.
|
|
114
115
|
|
|
115
|
-
> **Status:** 0.3.
|
|
116
|
+
> **Status:** 0.3.7 (pre‑1.0). Until 1.0, **minor** releases may be
|
|
116
117
|
> breaking. See CLI help and the CHANGELOG for updates.
|
|
117
118
|
|
|
118
119
|
[](https://github.com/invarlock/invarlock/actions/workflows/ci.yml)
|
|
@@ -127,7 +128,20 @@ For guidance on where to ask questions, how to report bugs, and what to expect i
|
|
|
127
128
|
|
|
128
129
|
## 🚀 Quick start (no repo clone)
|
|
129
130
|
|
|
130
|
-
|
|
131
|
+
Notebooks (Colab):
|
|
132
|
+
|
|
133
|
+
- [](https://colab.research.google.com/github/invarlock/invarlock/blob/main/notebooks/invarlock_quickstart_cpu.ipynb)
|
|
134
|
+
`invarlock_quickstart_cpu.ipynb` — install + certify + verify + HTML export (CPU-friendly)
|
|
135
|
+
- [](https://colab.research.google.com/github/invarlock/invarlock/blob/main/notebooks/invarlock_compare_certify.ipynb)
|
|
136
|
+
`invarlock_compare_certify.ipynb` — Compare & Certify (BYOE) end-to-end
|
|
137
|
+
- [](https://colab.research.google.com/github/invarlock/invarlock/blob/main/notebooks/invarlock_certificate_deep_dive.ipynb)
|
|
138
|
+
`invarlock_certificate_deep_dive.ipynb` — reading and interpreting certificates
|
|
139
|
+
- [](https://colab.research.google.com/github/invarlock/invarlock/blob/main/notebooks/invarlock_custom_datasets.ipynb)
|
|
140
|
+
`invarlock_custom_datasets.ipynb` — Bring Your Own Data (BYOD) with `local_jsonl`
|
|
141
|
+
- [](https://colab.research.google.com/github/invarlock/invarlock/blob/main/notebooks/invarlock_python_api.ipynb)
|
|
142
|
+
`invarlock_python_api.ipynb` — programmatic Python API usage
|
|
143
|
+
- [](https://colab.research.google.com/github/invarlock/invarlock/blob/main/notebooks/invarlock_policy_tiers.ipynb)
|
|
144
|
+
`invarlock_policy_tiers.ipynb` — Conservative vs Balanced vs Aggressive tier comparison
|
|
131
145
|
|
|
132
146
|
```bash
|
|
133
147
|
# Install with HF adapters
|
|
@@ -146,8 +160,8 @@ This produces `reports/.../evaluation.cert.json` with paired metrics
|
|
|
146
160
|
(ppl/accuracy), structural deltas, spectral/RMT stats, variance‑estimator
|
|
147
161
|
provenance, seeds/hashes, pairing metrics, and a policy digest.
|
|
148
162
|
|
|
149
|
-
> **Calibration note:** tier thresholds and window sizes are piloted on GPT‑2 small
|
|
150
|
-
> BERT base
|
|
163
|
+
> **Calibration note:** tier thresholds and window sizes are piloted on GPT‑2 small
|
|
164
|
+
> and BERT base (see `docs/assurance/09-tier-v1-calibration.md`). For
|
|
151
165
|
> calibrated Balanced/Conservative certs, use the preset‑based CI/Release examples
|
|
152
166
|
> below. `INVARLOCK_TINY_RELAX` dev runs relax sample‑size floors and are intended
|
|
153
167
|
> only for small smoke tests (not release evidence).
|
|
@@ -319,7 +333,7 @@ needed (e.g., `CUDA_VISIBLE_DEVICES`).
|
|
|
319
333
|
3. **RMT** (ε-band on outliers; monitor or gate per tier)
|
|
320
334
|
4. **Variance (VE)** (predictive paired ΔlogNLL gate; tiered sidedness)
|
|
321
335
|
|
|
322
|
-
- **
|
|
336
|
+
- **Evaluation Certificate (schema v1, PM‑only)**: Primary Metric (ppl or
|
|
323
337
|
accuracy) with paired statistics, structural deltas, spectral/RMT stats, VE
|
|
324
338
|
provenance, seeds/hashes, pairing metrics, and **policy digest**. Canonical
|
|
325
339
|
artifact: `reports/.../evaluation.cert.json`.
|
|
@@ -440,7 +454,7 @@ Key checks enforced by balanced policy (summary):
|
|
|
440
454
|
```yaml
|
|
441
455
|
model:
|
|
442
456
|
id: "<set-your-model-id>" # e.g., gpt2
|
|
443
|
-
adapter: "
|
|
457
|
+
adapter: "hf_causal"
|
|
444
458
|
device: "cpu"
|
|
445
459
|
dataset:
|
|
446
460
|
provider: "wikitext2"
|
|
@@ -505,7 +519,7 @@ invarlock/
|
|
|
505
519
|
│ ├─ invarlock/ # core + unified namespace
|
|
506
520
|
│ │ ├─ core/ # runner, registry, contracts, events, ABI
|
|
507
521
|
│ │ ├─ cli/ # console app + command wrappers (unified import path)
|
|
508
|
-
│ │ ├─ adapters/ #
|
|
522
|
+
│ │ ├─ adapters/ # model adapters (HF causal/MLM/seq2seq/onnx)
|
|
509
523
|
│ │ ├─ edits/ # quant_rtn
|
|
510
524
|
│ │ ├─ guards/ # invariants, spectral, rmt, variance
|
|
511
525
|
│ │ ├─ eval/ # evaluation metrics and helpers
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
invarlock/__init__.py,sha256=
|
|
1
|
+
invarlock/__init__.py,sha256=ADHnj4D3i4MA8nqx2Hydu5EG4ZB-OiNsv-lO2aEzVDM,1271
|
|
2
2
|
invarlock/__main__.py,sha256=ffhoKctw89j-henmQXThbHDIdlvK9fBfsy8LpjhOEXc,146
|
|
3
3
|
invarlock/config.py,sha256=7BUOl7EW258YnsgRipjOx6lmWou5jNDzimREd35ewsQ,1725
|
|
4
|
-
invarlock/model_profile.py,sha256=
|
|
4
|
+
invarlock/model_profile.py,sha256=LlrBmSNXXFau0UGkYPkR9NVjatMRqTvgoNXlwD5GlaA,14557
|
|
5
5
|
invarlock/model_utils.py,sha256=mEl9KOF2yOJgx-6r38PbD9SNFeAScamy9K-csxtl40Q,6395
|
|
6
6
|
invarlock/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
7
7
|
invarlock/security.py,sha256=xUjbHu-bHKUfFqDyN_21Hj00NBmAcGgnAg4JCjb0JOE,4861
|
|
@@ -9,19 +9,18 @@ invarlock/sparsity_utils.py,sha256=30SC3osptca2GmzxezbfX31EE6sRUhmEz8u3jn4vB2c,8
|
|
|
9
9
|
invarlock/_data/runtime/tiers.yaml,sha256=9EbVnNw6MX18NKMI9xjKzJt-BsaB-JhUtC13c3Skmls,3619
|
|
10
10
|
invarlock/_data/runtime/profiles/ci_cpu.yaml,sha256=FE5vxeemAFWW7oRxPvp_8hIcCO8qrJilvQpXuS3f6u0,389
|
|
11
11
|
invarlock/_data/runtime/profiles/release.yaml,sha256=xF0Qb0OTm904U6L3wK674JMTcDPegYvpKgwUB9pfq_w,482
|
|
12
|
-
invarlock/adapters/__init__.py,sha256=
|
|
12
|
+
invarlock/adapters/__init__.py,sha256=wZBhjYAnD7a0ZV36EDwje6D0FGG45CIfJ41WYqUPGg0,3296
|
|
13
13
|
invarlock/adapters/_capabilities.py,sha256=FmzUR5BHsxWe92Z9W1As-G5_5wG1PvqF2sUpjZ2_CdY,1483
|
|
14
|
-
invarlock/adapters/auto.py,sha256=
|
|
14
|
+
invarlock/adapters/auto.py,sha256=L4fnAi3Ahx_sznVFY9zqBSXqPKa1aAK055KwVBnh_Wc,7589
|
|
15
15
|
invarlock/adapters/base.py,sha256=szSh1bECeDSDGQSr5oIWhs5RlI587gE4gzdt5cnOJ1s,16100
|
|
16
16
|
invarlock/adapters/base_types.py,sha256=3IuHt63_RjGZqoTOdkMpfGPiZTGqcvXXDq1KU-8QemQ,1612
|
|
17
|
-
invarlock/adapters/capabilities.py,sha256=
|
|
18
|
-
invarlock/adapters/
|
|
19
|
-
invarlock/adapters/
|
|
20
|
-
invarlock/adapters/hf_llama.py,sha256=P3T7m9j61EmHtzzhemIfM2I2e5nbl4RwXSdoaVsueGc,19141
|
|
17
|
+
invarlock/adapters/capabilities.py,sha256=wcSUkWm0_bVMHo3CEhGxplldG8M5nrB3Uhij8cwutzY,15373
|
|
18
|
+
invarlock/adapters/hf_causal.py,sha256=N9-L-Px4dzjAP4EsnJI_od1GMBqDVJ5JReyV4MyNtjs,15139
|
|
19
|
+
invarlock/adapters/hf_causal_onnx.py,sha256=eMqLPs0aIb7v4KjY0krdgfImVRTPht1D_k9LCulXw6w,4451
|
|
21
20
|
invarlock/adapters/hf_loading.py,sha256=6hdSFRz_JMtBzQfHcwvyDlIVP2y-KwLwhDorg73DZ6c,2742
|
|
22
|
-
invarlock/adapters/hf_mixin.py,sha256=
|
|
23
|
-
invarlock/adapters/
|
|
24
|
-
invarlock/adapters/
|
|
21
|
+
invarlock/adapters/hf_mixin.py,sha256=95LbHHXUbkH22P3Iqf7nQxd1vmd0sumEZ9CEyKWZsiI,23101
|
|
22
|
+
invarlock/adapters/hf_mlm.py,sha256=iCyiy-0aYO43d2eTM8brKeJGBhZsMkjhzGhj580oh4s,35221
|
|
23
|
+
invarlock/adapters/hf_seq2seq.py,sha256=_5jmTB0sMpXs5N1_rNJ7vpntkpj4k68Ca7tM-Iy8HPw,4796
|
|
25
24
|
invarlock/adapters/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
26
25
|
invarlock/assurance/__init__.py,sha256=SFDT2klaUaKZejulL5cfBTW29ehJxyW5srE-LuqP7z0,1388
|
|
27
26
|
invarlock/calibration/__init__.py,sha256=M5lbkNQtLBuQjQJGeRzHovkpYI87fEWIm7a0b23jSp4,110
|
|
@@ -31,54 +30,55 @@ invarlock/cli/__init__.py,sha256=mRjYDVmNykhxJxfQBxJMzhFfmNhmvP6OWI-vJL-ehUA,196
|
|
|
31
30
|
invarlock/cli/__main__.py,sha256=spgMrx0eJQSEf4rcd0_mB2B8rHOc3iWlTFO3P_qEvoM,175
|
|
32
31
|
invarlock/cli/_evidence.py,sha256=38QMfFlPUT_qIRAZmpDROkwSIpHGiNKRWDyXfZ9xI_U,769
|
|
33
32
|
invarlock/cli/_json.py,sha256=AKrRNFza76tH3GBVHO8gSA3klUVQ9XpDo_aYh8l-7j8,2367
|
|
34
|
-
invarlock/cli/adapter_auto.py,sha256=
|
|
35
|
-
invarlock/cli/app.py,sha256=
|
|
36
|
-
invarlock/cli/config.py,sha256=
|
|
33
|
+
invarlock/cli/adapter_auto.py,sha256=macGPMlQkc9TftMzYzK33VvlIevSXrrF_gC5nUAVbjU,5634
|
|
34
|
+
invarlock/cli/app.py,sha256=HTzF1YrXJm6_E8GmHxAA5KyBQ4bCmEi8BPIM7hZyO48,11786
|
|
35
|
+
invarlock/cli/config.py,sha256=DNCsepPCY_l0JTPUqI9QRa-cLIl8n4H2xzolXjtL7q8,14205
|
|
37
36
|
invarlock/cli/constants.py,sha256=RuXxG82pukfBnEuJB2CVF5dyu4lEi-l8eAxkR314yuk,2107
|
|
38
37
|
invarlock/cli/determinism.py,sha256=ux3AODjZbSdYE29uSrHXvY2qrEPxeAJd04QLT52lnec,8346
|
|
39
38
|
invarlock/cli/device.py,sha256=5X0j2yiZbSKX9-SlDaAbSeHCoWhfEQ74YWPTb8WRk8k,3165
|
|
40
|
-
invarlock/cli/doctor_helpers.py,sha256=
|
|
39
|
+
invarlock/cli/doctor_helpers.py,sha256=3QkE4P6lrb2YQA-OC5m6K6CQEoe7PSRiSuQDYEvmRsY,2503
|
|
41
40
|
invarlock/cli/errors.py,sha256=IzFikxe5gthlZ27wrRYUiM_SJsd2Sa5onUUhjm8e2kA,189
|
|
41
|
+
invarlock/cli/output.py,sha256=lNEQ189iyV-EEsdTY4rmFcKKjq0lJuIP-gzsEIFL7BA,4883
|
|
42
42
|
invarlock/cli/overhead_utils.py,sha256=Ygvl192UDTroAbVAd7v35jgigmmfVxNkCIGYlWfh6Co,2124
|
|
43
|
-
invarlock/cli/provenance.py,sha256=
|
|
43
|
+
invarlock/cli/provenance.py,sha256=P3Rg_IEFYqNcECiPd-aO0rgp8ZDfqAy5n5N_bPGg1C4,1946
|
|
44
44
|
invarlock/cli/utils.py,sha256=R6IN21lGfko2lGUgspmkZyjA6Nl_dVRaP8F8nRtN5yw,1393
|
|
45
45
|
invarlock/cli/commands/__init__.py,sha256=afpKpU8hJI41Ol46oXxVwQgPwFBy4OmLaa_v4AAOdts,712
|
|
46
46
|
invarlock/cli/commands/calibrate.py,sha256=TnoYKjvmz2pSj3Wak8HluSV27hN2D8O1dGAQWCcHeeE,20830
|
|
47
|
-
invarlock/cli/commands/certify.py,sha256=
|
|
48
|
-
invarlock/cli/commands/doctor.py,sha256=
|
|
47
|
+
invarlock/cli/commands/certify.py,sha256=ET56hmCkn61XpZ3hrHIrS4CG6dmjDvlkSEzgSxm8YdA,35625
|
|
48
|
+
invarlock/cli/commands/doctor.py,sha256=F-q5CJ2qRgCDqbaZYBRApPUy7V6E_jkgSCqZgkxlOqA,56879
|
|
49
49
|
invarlock/cli/commands/explain_gates.py,sha256=7cnc_FBxvSkjmM12JOA2yfhY4JH1puDDaIHo3r6IC9M,9444
|
|
50
50
|
invarlock/cli/commands/export_html.py,sha256=oUGtt6EpKhjlywdtz_0FqYqcmA219H4eSjPuSMDShgY,3095
|
|
51
|
-
invarlock/cli/commands/plugins.py,sha256=
|
|
52
|
-
invarlock/cli/commands/report.py,sha256=
|
|
53
|
-
invarlock/cli/commands/run.py,sha256=
|
|
54
|
-
invarlock/cli/commands/verify.py,sha256=
|
|
51
|
+
invarlock/cli/commands/plugins.py,sha256=VTJKTMjFO4Dh4dqcY4qlkwhsWJixyHSNk8tWBcYGyfA,53620
|
|
52
|
+
invarlock/cli/commands/report.py,sha256=91hfdk3Vr4ckMyl0ZgV_b9opE_5_G_dYg2F5BLIh_Mo,18292
|
|
53
|
+
invarlock/cli/commands/run.py,sha256=rk7DfXcVp7AncGpkPvkYjT7t1whHknRzEnVpIe6jesc,228633
|
|
54
|
+
invarlock/cli/commands/verify.py,sha256=Gm4dgATdyo5HRsuAwH-7hZpPt1a0wxXnAJkGpZ8w6xE,51801
|
|
55
55
|
invarlock/core/__init__.py,sha256=4wb83Xv7NE5M1FgvaFUviiNtVSTVATiPH3gqavNmp2w,1490
|
|
56
56
|
invarlock/core/abi.py,sha256=gmU1F7LDd2HTcF4kcznn8vgG4zj9UCHSqhBk9jyu05k,484
|
|
57
57
|
invarlock/core/api.py,sha256=RTFswFBuUH38gary5X7qmccOD7vAYLtSN0ie8Y6p1ck,8480
|
|
58
58
|
invarlock/core/auto_tuning.py,sha256=Gj0AhpThoDYnzr9DyuXM9iCuieMKR4xv43tC7ZcjHzs,18543
|
|
59
|
-
invarlock/core/bootstrap.py,sha256=
|
|
59
|
+
invarlock/core/bootstrap.py,sha256=buamO9CNkfmPaK8zFy_GtQD9VnFiBiwxaTGQvEo3neA,10659
|
|
60
60
|
invarlock/core/checkpoint.py,sha256=a78L-mZd3j2kC1az2eTScRxTHjrULuYs-UPfWUcDgqM,6933
|
|
61
61
|
invarlock/core/contracts.py,sha256=ESK3-ErieGEf8e84wiphlCjahdr87zoKyTSskq6o23E,2468
|
|
62
62
|
invarlock/core/error_utils.py,sha256=T23-p5ONQ-SeVuMR4Ts0cWyupsSa-0DAgsejRTfxeCg,1782
|
|
63
63
|
invarlock/core/events.py,sha256=8XBAi-9A7ys7QJQwqlz8PVlfxF0TM_TvLqjcPtDwZm4,9428
|
|
64
64
|
invarlock/core/exceptions.py,sha256=b4OszJ0Fd0Ezy8s99AzprS7lAkqdZYGXaSj9fYaln4E,2077
|
|
65
|
-
invarlock/core/registry.py,sha256=
|
|
65
|
+
invarlock/core/registry.py,sha256=hQrAqVEyDOCF88KHn80a5oMMS73_i4KTjL3Wwo08YkI,18910
|
|
66
66
|
invarlock/core/retry.py,sha256=KTVkrTnWs60jwATOZDHinERH56GnOGjsKR0lmohagEo,4503
|
|
67
|
-
invarlock/core/runner.py,sha256=
|
|
67
|
+
invarlock/core/runner.py,sha256=lftQst05FASXuRIIkqrmOX4Sn9DezY3Aws6Cnh3A8OY,107570
|
|
68
68
|
invarlock/core/types.py,sha256=nVLMP4yqlxwhE1moQU7FWVeGJqTuud-cvTZiutdBGKk,3585
|
|
69
69
|
invarlock/edits/__init__.py,sha256=5CJTX6oJTLj79Vmks2_8mXRGFQH0oyKaZOrBLTlRtV0,277
|
|
70
70
|
invarlock/edits/_edit_utils.py,sha256=VGl32JAt7XsovxJbX1YvW9DJvtG-K2EKu-TjBFTQmDY,6329
|
|
71
71
|
invarlock/edits/_external_utils.py,sha256=Ltaua-eNooDagPSb20wxK-QXXpHjFJaymbDIjI3ZoWY,7625
|
|
72
72
|
invarlock/edits/noop.py,sha256=I9ICb9m4RLK7BllERlydujQciHQm9Hj8gbqKz5_rCTg,1304
|
|
73
73
|
invarlock/edits/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
74
|
-
invarlock/edits/quant_rtn.py,sha256=
|
|
74
|
+
invarlock/edits/quant_rtn.py,sha256=b6GQe-KDe_Tpr4904naLYn4_dmG9lR5LwwjTaqbX7Dc,31651
|
|
75
75
|
invarlock/edits/registry.py,sha256=MmUfJhhvc3WxB03wQkPxFMS6nkT7YcXFPQqhbksfOUc,4523
|
|
76
76
|
invarlock/eval/__init__.py,sha256=GsKoszCysh3TT_UHiuJcqeoiXT7AUNZoqMuBmefnWtY,755
|
|
77
|
-
invarlock/eval/bench.py,sha256=
|
|
77
|
+
invarlock/eval/bench.py,sha256=jVBQcbEV7tEiyaYv6nJnvL5KCuHD3LOb5qXYbfvyWgs,55931
|
|
78
78
|
invarlock/eval/bench_regression.py,sha256=GDphmdcH7NI8P_afSkQAPMChEgW15J0gqTZ4Kj3kxgw,456
|
|
79
79
|
invarlock/eval/bootstrap.py,sha256=CNn7W_MY716Wa_wn6cYRmbTYB9lT2X0yLOAIHCRw29k,1766
|
|
80
|
-
invarlock/eval/data.py,sha256=
|
|
81
|
-
invarlock/eval/metrics.py,sha256=
|
|
80
|
+
invarlock/eval/data.py,sha256=WcnH9nMaEpWqsGLnVfSFIps1a_16aVw0qtpQtm0-G2c,68326
|
|
81
|
+
invarlock/eval/metrics.py,sha256=PHfsIZQpCDesj7oL_vAIDdB3nH-10qVRl6kvfRU8-u4,80789
|
|
82
82
|
invarlock/eval/primary_metric.py,sha256=lGDWiXM1cyXqGH6XprLrxBl1hTwjrlSYbQCzF687zsA,29545
|
|
83
83
|
invarlock/eval/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
84
84
|
invarlock/eval/tail_stats.py,sha256=ueScFzPvBnBC4jVW5EElnB0c3LPK3cAITcOUdyPCsEk,7114
|
|
@@ -90,16 +90,20 @@ invarlock/eval/providers/base.py,sha256=27Cn7-TRtVRPrSHt7qBBqtLMnMEslO88zHiEsxQz
|
|
|
90
90
|
invarlock/eval/providers/seq2seq.py,sha256=lYxI6d1-YCyxjGyHVLi2ZbFFwxJVVUewH9luFBoDehM,3711
|
|
91
91
|
invarlock/eval/providers/text_lm.py,sha256=EpQWjQEkxSMhTiABsJzZqfYsgSYeMmUW-ZgePmdyj7U,4149
|
|
92
92
|
invarlock/eval/providers/vision_text.py,sha256=pqhPHwvYEnyKupchIy-g-jM_oWeYNXRHb23_Qm4v2hU,3180
|
|
93
|
+
invarlock/eval/tasks/__init__.py,sha256=Z5CG7jwVNTMnQ0OZEzqsbYZzQkmPm3lHt2k2V8f2e6U,327
|
|
94
|
+
invarlock/eval/tasks/classification.py,sha256=s1v649MlKn2u1z1q8rvor5yMg3AvORFxoKoAXEDp088,1398
|
|
95
|
+
invarlock/eval/tasks/qa.py,sha256=D4nnj2A_6Tsmi5mz3x2bN9j88eCB-ajE4h7x-obNf-0,1134
|
|
96
|
+
invarlock/eval/tasks/text_generation.py,sha256=gefCcwqpsIoz3Sq6V6XDEZvChR1K2Hn4pHfzFDo7CMk,3355
|
|
93
97
|
invarlock/guards/__init__.py,sha256=Kj7Jwb4qLyaY0ATRku34T628vom3QMjTiVrlpfJAWw8,443
|
|
94
98
|
invarlock/guards/_contracts.py,sha256=WPhg3iWpHGkKfPvlPPQ-umzOakpy3s289DKkYQ0e64I,263
|
|
95
99
|
invarlock/guards/_estimators.py,sha256=84nT5eF7uN-zr-RfYF2uOvdHlmE5c8_yvor4IqxvwWk,4642
|
|
96
|
-
invarlock/guards/invariants.py,sha256=
|
|
100
|
+
invarlock/guards/invariants.py,sha256=pnzjB1_2e0yD7jjySLIm_McDail_HTWpbAsGuYD2I40,22747
|
|
97
101
|
invarlock/guards/policies.py,sha256=ggY0zZ3i39OAeFZJSG1FjwnR3-wjWntKLLvumBvG8pc,25933
|
|
98
102
|
invarlock/guards/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
99
|
-
invarlock/guards/rmt.py,sha256=
|
|
103
|
+
invarlock/guards/rmt.py,sha256=aRMtRR7LfrjR-ZkeL_AsGb61bbBadYHhQx424WIRFVs,99878
|
|
100
104
|
invarlock/guards/spectral.py,sha256=TP_xmzL0iP3CSQjnkulNbuJegxCrp68MuMPWdLeE0Gg,69597
|
|
101
105
|
invarlock/guards/tier_config.py,sha256=6JzS1TOlhUVX2NdUodWhb4VOA_AnAFVOXvwY9aiopbA,10796
|
|
102
|
-
invarlock/guards/variance.py,sha256=
|
|
106
|
+
invarlock/guards/variance.py,sha256=iNursnzCHbc2fd3icZ3cYG-dk4WFYqn6CKxKcKn2MJI,136385
|
|
103
107
|
invarlock/guards_ref/__init__.py,sha256=jLnyFqdqQaheG1qQMlU4Gx7R118rkkQHPqFVF3_1ih0,366
|
|
104
108
|
invarlock/guards_ref/rmt_ref.py,sha256=IfwN-l9cLExUQJhZmr-1uJv7qRSoYrGg2w2caCG53hs,1399
|
|
105
109
|
invarlock/guards_ref/spectral_ref.py,sha256=FdwFfrs5hxEEUIfBV3CvAJvTX78gAM00mKLEXyZ0zJo,4386
|
|
@@ -108,8 +112,8 @@ invarlock/observability/__init__.py,sha256=_fCH1H51M0PYOvpuNq9sVQLTiDAtdQMvtnhVt
|
|
|
108
112
|
invarlock/observability/alerting.py,sha256=y_mReOy5KHbHhglQIoChzTl-4BZz9aaGDreLGFzhl8M,17887
|
|
109
113
|
invarlock/observability/core.py,sha256=lMsXCp5HZj3YIdfrkxRYQWpu1ib6pm8TkPab_1aKjHM,19050
|
|
110
114
|
invarlock/observability/exporters.py,sha256=bNpuN7ulQ3KQSySozJZvNHythMw2ciF54aQzZ9t2hKE,18712
|
|
111
|
-
invarlock/observability/health.py,sha256=
|
|
112
|
-
invarlock/observability/metrics.py,sha256=
|
|
115
|
+
invarlock/observability/health.py,sha256=jKVfThhe985oY1koS8EhWm08VQaVhHgRcspkuNrvO9E,21573
|
|
116
|
+
invarlock/observability/metrics.py,sha256=RhEz4B5zvRHAgFHukyZHGhDJDSxR3szYwk7TTFzIZTQ,19016
|
|
113
117
|
invarlock/observability/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
114
118
|
invarlock/observability/utils.py,sha256=1AC3ZEzbrDzTOvSIFxAtWlITy1BHEPZ032HKKzqK_10,16492
|
|
115
119
|
invarlock/plugins/__init__.py,sha256=aZqkpuTT0K3y0SX4702k3YpHnM3kng9fz0qO3XE43hY,260
|
|
@@ -119,24 +123,25 @@ invarlock/plugins/hf_bnb_adapter.py,sha256=g0ysWEi8dQzLtJy8iCszfTsYCOACuZMFYnTLM
|
|
|
119
123
|
invarlock/plugins/hf_gptq_adapter.py,sha256=ysugAcnjLqF5sqpijSNiim1xUpRmoIgBrG053X3S2hE,3743
|
|
120
124
|
invarlock/plugins/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
121
125
|
invarlock/reporting/__init__.py,sha256=A0541EqxcdTpslNbZEWIO4q-LCqzCQcadev2IBKEBbM,232
|
|
122
|
-
invarlock/reporting/certificate.py,sha256=
|
|
123
|
-
invarlock/reporting/certificate_schema.py,sha256=
|
|
126
|
+
invarlock/reporting/certificate.py,sha256=bE7uCWJ5foZeblq_DgMoQ9wjW_tjEC7XXBvUOAy2fLA,159511
|
|
127
|
+
invarlock/reporting/certificate_schema.py,sha256=wCBjLsWu-y1hqedQYgAmdNeSh7FkcpuGCFHGK46Wlgk,8982
|
|
124
128
|
invarlock/reporting/dataset_hashing.py,sha256=igDq9iMB8sqed5CEWT2fXtx9z5QAxIZ9bbs5RndDDC4,9228
|
|
125
|
-
invarlock/reporting/guards_analysis.py,sha256=
|
|
126
|
-
invarlock/reporting/html.py,sha256
|
|
127
|
-
invarlock/reporting/normalizer.py,sha256=
|
|
129
|
+
invarlock/reporting/guards_analysis.py,sha256=Q3DhV806McbV4NVxbD-Lcw334epcQ1-zTEUF3aT8JGc,44356
|
|
130
|
+
invarlock/reporting/html.py,sha256=-vpkk3nE9GEaEtitMVFu5EWNKTQgjPfrnadzgKiSjvc,3297
|
|
131
|
+
invarlock/reporting/normalizer.py,sha256=RIKGtTzMBOLiDvI4-ijssnyAnQN6-c5zpbs41KeBdKI,8468
|
|
128
132
|
invarlock/reporting/policy_utils.py,sha256=540fw6cFvyvYL7avlvId9GUvY9-g6MkeDlcPt18uuE0,22934
|
|
129
133
|
invarlock/reporting/primary_metric_utils.py,sha256=7h6CzMQzu0A8xN10vbRgSNcQ0YTMxsT2JiNEgCVaXyM,14849
|
|
130
|
-
invarlock/reporting/render.py,sha256=
|
|
131
|
-
invarlock/reporting/report.py,sha256=
|
|
132
|
-
invarlock/reporting/report_types.py,sha256=
|
|
134
|
+
invarlock/reporting/render.py,sha256=PkyzUIJQNI-1X7wghlO_KzrYwYal17qFRA0mcdJsUb4,75137
|
|
135
|
+
invarlock/reporting/report.py,sha256=hVjyqPHJOeM6TWVAttExrhYxeAPTfY3HPFAMlrlkVZE,33780
|
|
136
|
+
invarlock/reporting/report_types.py,sha256=NcA6PkI8JJA-FbPAGT-q_QcDkRcz57ayEKHyFbqe-Rk,9211
|
|
137
|
+
invarlock/reporting/telemetry.py,sha256=1A4ZgsmT7BzaEMiG56OzCwc0dX6MKVh8TPOwyXNGSb8,2705
|
|
133
138
|
invarlock/reporting/utils.py,sha256=1aLYgSUR4XvgmhDvU9YK9ICd7W5sjft1qdsZC9JJSRY,5540
|
|
134
139
|
invarlock/reporting/validate.py,sha256=aFcac5iaaNOLMYEf6g5xoF4-a-J5E430utFLnfu6fKc,21782
|
|
135
140
|
invarlock/utils/__init__.py,sha256=DR2pBrgddLH2PW-6ninOE8CM7DNvlvgyYsCkckozbPU,4276
|
|
136
141
|
invarlock/utils/digest.py,sha256=sfnqGFRiRf7l950MjSIrWO1XbUfXlcEfNLeWFbBUr8I,1290
|
|
137
|
-
invarlock-0.3.
|
|
138
|
-
invarlock-0.3.
|
|
139
|
-
invarlock-0.3.
|
|
140
|
-
invarlock-0.3.
|
|
141
|
-
invarlock-0.3.
|
|
142
|
-
invarlock-0.3.
|
|
142
|
+
invarlock-0.3.7.dist-info/licenses/LICENSE,sha256=uFddaXYY02nEFdPpS7bam_bnm0st41BibzD0jHULPXw,10413
|
|
143
|
+
invarlock-0.3.7.dist-info/METADATA,sha256=Nl947X_buWTqiOvNfWlEQq_bbkdcUF7vceVgG6lz_9o,23388
|
|
144
|
+
invarlock-0.3.7.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
145
|
+
invarlock-0.3.7.dist-info/entry_points.txt,sha256=7zdvDjsIPqOGEhfQFn596IrodvkhYrkybFgQ2ywPHYQ,780
|
|
146
|
+
invarlock-0.3.7.dist-info/top_level.txt,sha256=GXfftc_YDHHcQC2vQgYbZ5cTO82YuWY3HusHMT3DuKs,10
|
|
147
|
+
invarlock-0.3.7.dist-info/RECORD,,
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
invarlock = invarlock.cli.app:app
|
|
3
3
|
|
|
4
4
|
[invarlock.adapters]
|
|
5
|
+
hf_auto = invarlock.adapters:HF_Auto_Adapter
|
|
5
6
|
hf_awq = invarlock.plugins.hf_awq_adapter:HF_AWQ_Adapter
|
|
6
|
-
hf_bert = invarlock.adapters:HF_BERT_Adapter
|
|
7
7
|
hf_bnb = invarlock.plugins.hf_bnb_adapter:HF_BNB_Adapter
|
|
8
|
-
|
|
8
|
+
hf_causal = invarlock.adapters:HF_Causal_Adapter
|
|
9
|
+
hf_causal_onnx = invarlock.adapters:HF_Causal_ONNX_Adapter
|
|
9
10
|
hf_gptq = invarlock.plugins.hf_gptq_adapter:HF_GPTQ_Adapter
|
|
10
|
-
|
|
11
|
+
hf_mlm = invarlock.adapters:HF_MLM_Adapter
|
|
12
|
+
hf_seq2seq = invarlock.adapters:HF_Seq2Seq_Adapter
|
|
11
13
|
|
|
12
14
|
[invarlock.edits]
|
|
13
15
|
quant_rtn = invarlock.edits:RTNQuantEdit
|