invarlock 0.3.5__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/_data/runtime/tiers.yaml +57 -30
- invarlock/adapters/__init__.py +11 -15
- 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/calibration/spectral_null.py +15 -10
- invarlock/calibration/variance_ve.py +0 -2
- invarlock/cli/adapter_auto.py +31 -21
- invarlock/cli/app.py +73 -2
- invarlock/cli/commands/calibrate.py +6 -2
- invarlock/cli/commands/certify.py +651 -91
- invarlock/cli/commands/doctor.py +11 -11
- invarlock/cli/commands/explain_gates.py +57 -8
- invarlock/cli/commands/plugins.py +13 -9
- invarlock/cli/commands/report.py +233 -69
- invarlock/cli/commands/run.py +1066 -244
- invarlock/cli/commands/verify.py +154 -15
- invarlock/cli/config.py +22 -6
- invarlock/cli/doctor_helpers.py +4 -5
- invarlock/cli/output.py +193 -0
- invarlock/cli/provenance.py +1 -1
- invarlock/core/api.py +45 -5
- invarlock/core/auto_tuning.py +65 -20
- invarlock/core/bootstrap.py +1 -1
- invarlock/core/contracts.py +7 -1
- invarlock/core/registry.py +11 -13
- invarlock/core/runner.py +425 -75
- invarlock/edits/quant_rtn.py +65 -37
- invarlock/eval/bench.py +3 -16
- invarlock/eval/data.py +82 -51
- invarlock/eval/metrics.py +63 -2
- invarlock/eval/primary_metric.py +23 -0
- invarlock/eval/tail_stats.py +230 -0
- 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/_estimators.py +154 -0
- invarlock/guards/invariants.py +19 -10
- invarlock/guards/policies.py +16 -6
- invarlock/guards/rmt.py +627 -546
- invarlock/guards/spectral.py +348 -110
- invarlock/guards/tier_config.py +32 -30
- invarlock/guards/variance.py +7 -31
- invarlock/guards_ref/rmt_ref.py +23 -23
- invarlock/model_profile.py +90 -42
- invarlock/observability/health.py +6 -6
- invarlock/observability/metrics.py +108 -0
- invarlock/reporting/certificate.py +384 -55
- invarlock/reporting/certificate_schema.py +3 -2
- invarlock/reporting/dataset_hashing.py +15 -2
- invarlock/reporting/guards_analysis.py +350 -277
- invarlock/reporting/html.py +55 -5
- invarlock/reporting/normalizer.py +13 -0
- invarlock/reporting/policy_utils.py +38 -36
- invarlock/reporting/primary_metric_utils.py +71 -17
- invarlock/reporting/render.py +852 -431
- invarlock/reporting/report.py +40 -4
- invarlock/reporting/report_types.py +11 -3
- invarlock/reporting/telemetry.py +86 -0
- invarlock/reporting/validate.py +1 -18
- {invarlock-0.3.5.dist-info → invarlock-0.3.7.dist-info}/METADATA +27 -13
- {invarlock-0.3.5.dist-info → invarlock-0.3.7.dist-info}/RECORD +72 -65
- {invarlock-0.3.5.dist-info → invarlock-0.3.7.dist-info}/WHEEL +1 -1
- {invarlock-0.3.5.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.5.dist-info → invarlock-0.3.7.dist-info}/licenses/LICENSE +0 -0
- {invarlock-0.3.5.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:
|
|
@@ -401,7 +437,7 @@ def _generate_single_markdown(report: RunReport) -> list[str]:
|
|
|
401
437
|
parts.append(f"ratio_vs_baseline={ratio:.3f}")
|
|
402
438
|
lines.append(" — ".join(parts) if len(parts) > 1 else parts[0])
|
|
403
439
|
else:
|
|
404
|
-
# When primary_metric is absent, do not attempt
|
|
440
|
+
# When primary_metric is absent, do not attempt fallbacks
|
|
405
441
|
lines.append("- **Primary Metric**: unavailable")
|
|
406
442
|
lines.append(
|
|
407
443
|
f"- **Parameters Changed**: {report['edit']['deltas']['params_changed']:,}"
|
|
@@ -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")
|
|
@@ -101,10 +101,17 @@ class EvalMetrics(TypedDict, total=False):
|
|
|
101
101
|
|
|
102
102
|
# Canonical primary metric snapshot
|
|
103
103
|
primary_metric: dict[str, Any]
|
|
104
|
+
# Always-computed tail evidence/gate for ppl-like primary metrics
|
|
105
|
+
primary_metric_tail: dict[str, Any]
|
|
104
106
|
|
|
105
|
-
# Optional
|
|
107
|
+
# Optional aux fields retained for guard telemetry and debug
|
|
106
108
|
latency_ms_per_tok: float # Average latency per token in milliseconds
|
|
107
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
|
|
108
115
|
spectral: dict[str, Any] # Spectral norm summaries
|
|
109
116
|
rmt: dict[str, Any] # RMT statistics
|
|
110
117
|
invariants: dict[str, Any] # Model invariant check results
|
|
@@ -164,6 +171,7 @@ class RunReport(TypedDict):
|
|
|
164
171
|
# Optional extras kept for richer downstream processing
|
|
165
172
|
guard_overhead: NotRequired[dict[str, Any]]
|
|
166
173
|
provenance: NotRequired[dict[str, Any]]
|
|
174
|
+
context: NotRequired[dict[str, Any]]
|
|
167
175
|
|
|
168
176
|
|
|
169
177
|
# Utility functions for creating reports
|
|
@@ -247,7 +255,7 @@ def validate_report(report: RunReport) -> bool:
|
|
|
247
255
|
if pm_final is not None and not isinstance(pm_final, int | float):
|
|
248
256
|
return False
|
|
249
257
|
else:
|
|
250
|
-
# PM-only:
|
|
258
|
+
# PM-only: ppl_* acceptance removed
|
|
251
259
|
return False
|
|
252
260
|
|
|
253
261
|
meta = report.get("meta", {})
|
|
@@ -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"]
|
invarlock/reporting/validate.py
CHANGED
|
@@ -9,10 +9,9 @@ Supports both automated CI testing and flexible user validation.
|
|
|
9
9
|
from __future__ import annotations
|
|
10
10
|
|
|
11
11
|
import json
|
|
12
|
-
import os
|
|
13
12
|
import warnings
|
|
14
13
|
from pathlib import Path
|
|
15
|
-
from typing import Any
|
|
14
|
+
from typing import Any
|
|
16
15
|
|
|
17
16
|
__all__ = [
|
|
18
17
|
"validate_against_baseline",
|
|
@@ -99,23 +98,7 @@ def validate_against_baseline(
|
|
|
99
98
|
ratio_bounds: tuple[float, float] = (1.25, 1.32),
|
|
100
99
|
delta_bounds_pp: tuple[float, float] | None = None,
|
|
101
100
|
structural_exact: bool = True,
|
|
102
|
-
**kwargs,
|
|
103
101
|
) -> ValidationResult:
|
|
104
|
-
# Backward-compatible kwargs (deprecated): enable via INVARLOCK_VALIDATE_LEGACY=1
|
|
105
|
-
legacy = str(os.environ.get("INVARLOCK_VALIDATE_LEGACY", "")).strip().lower() in {
|
|
106
|
-
"1",
|
|
107
|
-
"true",
|
|
108
|
-
"yes",
|
|
109
|
-
"on",
|
|
110
|
-
}
|
|
111
|
-
if legacy:
|
|
112
|
-
if "tol_ppl_ratio" in kwargs and isinstance(
|
|
113
|
-
kwargs["tol_ppl_ratio"], int | float
|
|
114
|
-
):
|
|
115
|
-
tol_ratio = float(kwargs["tol_ppl_ratio"])
|
|
116
|
-
if "ppl_bounds" in kwargs and isinstance(kwargs["ppl_bounds"], tuple):
|
|
117
|
-
# Coerce after runtime guard
|
|
118
|
-
ratio_bounds = cast(tuple[float, float], kwargs["ppl_bounds"])
|
|
119
102
|
"""
|
|
120
103
|
Validate pruning results against baseline metrics (PM-only API).
|
|
121
104
|
|
|
@@ -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).
|
|
@@ -170,7 +184,7 @@ Quick examples (repo presets, CPU; repo clone required for preset paths):
|
|
|
170
184
|
pip install "invarlock[hf]"
|
|
171
185
|
|
|
172
186
|
# Preflight a config (JSON diagnostics)
|
|
173
|
-
invarlock doctor --config configs/
|
|
187
|
+
invarlock doctor --config configs/presets/causal_lm/wikitext2_512.yaml --json
|
|
174
188
|
|
|
175
189
|
# Calibrated GPT‑2 small (recommended starting point; repo preset)
|
|
176
190
|
INVARLOCK_ALLOW_NETWORK=1 INVARLOCK_DEDUP_TEXTS=1 \
|
|
@@ -179,7 +193,7 @@ invarlock certify \
|
|
|
179
193
|
--subject gpt2 \
|
|
180
194
|
--adapter auto \
|
|
181
195
|
--profile release \
|
|
182
|
-
--preset configs/
|
|
196
|
+
--preset configs/presets/causal_lm/wikitext2_512.yaml
|
|
183
197
|
|
|
184
198
|
# Tiny causal LM smoke (out‑of‑calibration, dev‑only)
|
|
185
199
|
INVARLOCK_ALLOW_NETWORK=1 \
|
|
@@ -249,7 +263,7 @@ INVARLOCK_ALLOW_NETWORK=1 invarlock certify \
|
|
|
249
263
|
--subject gpt2 \
|
|
250
264
|
--adapter auto \
|
|
251
265
|
--profile ci \
|
|
252
|
-
--preset configs/
|
|
266
|
+
--preset configs/presets/causal_lm/wikitext2_512.yaml
|
|
253
267
|
```
|
|
254
268
|
|
|
255
269
|
- Offline/air‑gapped usage: pre‑download to a cache, then run with network
|
|
@@ -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"
|
|
@@ -488,7 +502,7 @@ output:
|
|
|
488
502
|
Run preflight checks before a run to catch misconfigurations early:
|
|
489
503
|
|
|
490
504
|
```bash
|
|
491
|
-
invarlock doctor --config configs/
|
|
505
|
+
invarlock doctor --config configs/presets/causal_lm/wikitext2_512.yaml --json
|
|
492
506
|
```
|
|
493
507
|
|
|
494
508
|
Text mode emits lines prefixed with `ERROR:`, `WARNING:`, or `NOTE:` and stable
|
|
@@ -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,86 +1,87 @@
|
|
|
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
|
|
8
8
|
invarlock/sparsity_utils.py,sha256=30SC3osptca2GmzxezbfX31EE6sRUhmEz8u3jn4vB2c,8281
|
|
9
|
-
invarlock/_data/runtime/tiers.yaml,sha256=
|
|
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
|
|
28
|
-
invarlock/calibration/spectral_null.py,sha256=
|
|
29
|
-
invarlock/calibration/variance_ve.py,sha256=
|
|
27
|
+
invarlock/calibration/spectral_null.py,sha256=2WQU7YgnnJ2i3OF60Zj4miaWBvWBXQmztukQtIWhvro,9601
|
|
28
|
+
invarlock/calibration/variance_ve.py,sha256=QkHO2vxht-n56LNqWbHYYY106Ge5PbxzHfGV1QktnN8,4487
|
|
30
29
|
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
|
-
invarlock/cli/commands/calibrate.py,sha256=
|
|
47
|
-
invarlock/cli/commands/certify.py,sha256=
|
|
48
|
-
invarlock/cli/commands/doctor.py,sha256=
|
|
49
|
-
invarlock/cli/commands/explain_gates.py,sha256=
|
|
46
|
+
invarlock/cli/commands/calibrate.py,sha256=TnoYKjvmz2pSj3Wak8HluSV27hN2D8O1dGAQWCcHeeE,20830
|
|
47
|
+
invarlock/cli/commands/certify.py,sha256=ET56hmCkn61XpZ3hrHIrS4CG6dmjDvlkSEzgSxm8YdA,35625
|
|
48
|
+
invarlock/cli/commands/doctor.py,sha256=F-q5CJ2qRgCDqbaZYBRApPUy7V6E_jkgSCqZgkxlOqA,56879
|
|
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
|
-
invarlock/core/api.py,sha256=
|
|
58
|
-
invarlock/core/auto_tuning.py,sha256=
|
|
59
|
-
invarlock/core/bootstrap.py,sha256=
|
|
57
|
+
invarlock/core/api.py,sha256=RTFswFBuUH38gary5X7qmccOD7vAYLtSN0ie8Y6p1ck,8480
|
|
58
|
+
invarlock/core/auto_tuning.py,sha256=Gj0AhpThoDYnzr9DyuXM9iCuieMKR4xv43tC7ZcjHzs,18543
|
|
59
|
+
invarlock/core/bootstrap.py,sha256=buamO9CNkfmPaK8zFy_GtQD9VnFiBiwxaTGQvEo3neA,10659
|
|
60
60
|
invarlock/core/checkpoint.py,sha256=a78L-mZd3j2kC1az2eTScRxTHjrULuYs-UPfWUcDgqM,6933
|
|
61
|
-
invarlock/core/contracts.py,sha256=
|
|
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=
|
|
82
|
-
invarlock/eval/primary_metric.py,sha256=
|
|
80
|
+
invarlock/eval/data.py,sha256=WcnH9nMaEpWqsGLnVfSFIps1a_16aVw0qtpQtm0-G2c,68326
|
|
81
|
+
invarlock/eval/metrics.py,sha256=PHfsIZQpCDesj7oL_vAIDdB3nH-10qVRl6kvfRU8-u4,80789
|
|
82
|
+
invarlock/eval/primary_metric.py,sha256=lGDWiXM1cyXqGH6XprLrxBl1hTwjrlSYbQCzF687zsA,29545
|
|
83
83
|
invarlock/eval/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
84
|
+
invarlock/eval/tail_stats.py,sha256=ueScFzPvBnBC4jVW5EElnB0c3LPK3cAITcOUdyPCsEk,7114
|
|
84
85
|
invarlock/eval/probes/__init__.py,sha256=KocOJmEWrD90c2HbDW3wDsdsibRyidskpI4rNNfLbZ0,593
|
|
85
86
|
invarlock/eval/probes/fft.py,sha256=iuZauzOaNPbXN4t74vMiNQAjg6ZmwPNPUuUBj4L1ick,4106
|
|
86
87
|
invarlock/eval/probes/mi.py,sha256=ew33dkc1tymDVek718m7ZU--BAFa1L35PZA2POwKx0g,7258
|
|
@@ -89,25 +90,30 @@ invarlock/eval/providers/base.py,sha256=27Cn7-TRtVRPrSHt7qBBqtLMnMEslO88zHiEsxQz
|
|
|
89
90
|
invarlock/eval/providers/seq2seq.py,sha256=lYxI6d1-YCyxjGyHVLi2ZbFFwxJVVUewH9luFBoDehM,3711
|
|
90
91
|
invarlock/eval/providers/text_lm.py,sha256=EpQWjQEkxSMhTiABsJzZqfYsgSYeMmUW-ZgePmdyj7U,4149
|
|
91
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
|
|
92
97
|
invarlock/guards/__init__.py,sha256=Kj7Jwb4qLyaY0ATRku34T628vom3QMjTiVrlpfJAWw8,443
|
|
93
98
|
invarlock/guards/_contracts.py,sha256=WPhg3iWpHGkKfPvlPPQ-umzOakpy3s289DKkYQ0e64I,263
|
|
94
|
-
invarlock/guards/
|
|
95
|
-
invarlock/guards/
|
|
99
|
+
invarlock/guards/_estimators.py,sha256=84nT5eF7uN-zr-RfYF2uOvdHlmE5c8_yvor4IqxvwWk,4642
|
|
100
|
+
invarlock/guards/invariants.py,sha256=pnzjB1_2e0yD7jjySLIm_McDail_HTWpbAsGuYD2I40,22747
|
|
101
|
+
invarlock/guards/policies.py,sha256=ggY0zZ3i39OAeFZJSG1FjwnR3-wjWntKLLvumBvG8pc,25933
|
|
96
102
|
invarlock/guards/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
97
|
-
invarlock/guards/rmt.py,sha256=
|
|
98
|
-
invarlock/guards/spectral.py,sha256=
|
|
99
|
-
invarlock/guards/tier_config.py,sha256=
|
|
100
|
-
invarlock/guards/variance.py,sha256=
|
|
103
|
+
invarlock/guards/rmt.py,sha256=aRMtRR7LfrjR-ZkeL_AsGb61bbBadYHhQx424WIRFVs,99878
|
|
104
|
+
invarlock/guards/spectral.py,sha256=TP_xmzL0iP3CSQjnkulNbuJegxCrp68MuMPWdLeE0Gg,69597
|
|
105
|
+
invarlock/guards/tier_config.py,sha256=6JzS1TOlhUVX2NdUodWhb4VOA_AnAFVOXvwY9aiopbA,10796
|
|
106
|
+
invarlock/guards/variance.py,sha256=iNursnzCHbc2fd3icZ3cYG-dk4WFYqn6CKxKcKn2MJI,136385
|
|
101
107
|
invarlock/guards_ref/__init__.py,sha256=jLnyFqdqQaheG1qQMlU4Gx7R118rkkQHPqFVF3_1ih0,366
|
|
102
|
-
invarlock/guards_ref/rmt_ref.py,sha256=
|
|
108
|
+
invarlock/guards_ref/rmt_ref.py,sha256=IfwN-l9cLExUQJhZmr-1uJv7qRSoYrGg2w2caCG53hs,1399
|
|
103
109
|
invarlock/guards_ref/spectral_ref.py,sha256=FdwFfrs5hxEEUIfBV3CvAJvTX78gAM00mKLEXyZ0zJo,4386
|
|
104
110
|
invarlock/guards_ref/variance_ref.py,sha256=BmTQL5nfxReJK5SqnuUi1SOcQftK7IUNwlcxqdtGPEU,2264
|
|
105
111
|
invarlock/observability/__init__.py,sha256=_fCH1H51M0PYOvpuNq9sVQLTiDAtdQMvtnhVt-z-VPk,345
|
|
106
112
|
invarlock/observability/alerting.py,sha256=y_mReOy5KHbHhglQIoChzTl-4BZz9aaGDreLGFzhl8M,17887
|
|
107
113
|
invarlock/observability/core.py,sha256=lMsXCp5HZj3YIdfrkxRYQWpu1ib6pm8TkPab_1aKjHM,19050
|
|
108
114
|
invarlock/observability/exporters.py,sha256=bNpuN7ulQ3KQSySozJZvNHythMw2ciF54aQzZ9t2hKE,18712
|
|
109
|
-
invarlock/observability/health.py,sha256=
|
|
110
|
-
invarlock/observability/metrics.py,sha256=
|
|
115
|
+
invarlock/observability/health.py,sha256=jKVfThhe985oY1koS8EhWm08VQaVhHgRcspkuNrvO9E,21573
|
|
116
|
+
invarlock/observability/metrics.py,sha256=RhEz4B5zvRHAgFHukyZHGhDJDSxR3szYwk7TTFzIZTQ,19016
|
|
111
117
|
invarlock/observability/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
112
118
|
invarlock/observability/utils.py,sha256=1AC3ZEzbrDzTOvSIFxAtWlITy1BHEPZ032HKKzqK_10,16492
|
|
113
119
|
invarlock/plugins/__init__.py,sha256=aZqkpuTT0K3y0SX4702k3YpHnM3kng9fz0qO3XE43hY,260
|
|
@@ -117,24 +123,25 @@ invarlock/plugins/hf_bnb_adapter.py,sha256=g0ysWEi8dQzLtJy8iCszfTsYCOACuZMFYnTLM
|
|
|
117
123
|
invarlock/plugins/hf_gptq_adapter.py,sha256=ysugAcnjLqF5sqpijSNiim1xUpRmoIgBrG053X3S2hE,3743
|
|
118
124
|
invarlock/plugins/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
119
125
|
invarlock/reporting/__init__.py,sha256=A0541EqxcdTpslNbZEWIO4q-LCqzCQcadev2IBKEBbM,232
|
|
120
|
-
invarlock/reporting/certificate.py,sha256=
|
|
121
|
-
invarlock/reporting/certificate_schema.py,sha256=
|
|
122
|
-
invarlock/reporting/dataset_hashing.py,sha256=
|
|
123
|
-
invarlock/reporting/guards_analysis.py,sha256=
|
|
124
|
-
invarlock/reporting/html.py,sha256
|
|
125
|
-
invarlock/reporting/normalizer.py,sha256=
|
|
126
|
-
invarlock/reporting/policy_utils.py,sha256=
|
|
127
|
-
invarlock/reporting/primary_metric_utils.py,sha256=
|
|
128
|
-
invarlock/reporting/render.py,sha256=
|
|
129
|
-
invarlock/reporting/report.py,sha256=
|
|
130
|
-
invarlock/reporting/report_types.py,sha256=
|
|
126
|
+
invarlock/reporting/certificate.py,sha256=bE7uCWJ5foZeblq_DgMoQ9wjW_tjEC7XXBvUOAy2fLA,159511
|
|
127
|
+
invarlock/reporting/certificate_schema.py,sha256=wCBjLsWu-y1hqedQYgAmdNeSh7FkcpuGCFHGK46Wlgk,8982
|
|
128
|
+
invarlock/reporting/dataset_hashing.py,sha256=igDq9iMB8sqed5CEWT2fXtx9z5QAxIZ9bbs5RndDDC4,9228
|
|
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
|
|
132
|
+
invarlock/reporting/policy_utils.py,sha256=540fw6cFvyvYL7avlvId9GUvY9-g6MkeDlcPt18uuE0,22934
|
|
133
|
+
invarlock/reporting/primary_metric_utils.py,sha256=7h6CzMQzu0A8xN10vbRgSNcQ0YTMxsT2JiNEgCVaXyM,14849
|
|
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
|
|
131
138
|
invarlock/reporting/utils.py,sha256=1aLYgSUR4XvgmhDvU9YK9ICd7W5sjft1qdsZC9JJSRY,5540
|
|
132
|
-
invarlock/reporting/validate.py,sha256=
|
|
139
|
+
invarlock/reporting/validate.py,sha256=aFcac5iaaNOLMYEf6g5xoF4-a-J5E430utFLnfu6fKc,21782
|
|
133
140
|
invarlock/utils/__init__.py,sha256=DR2pBrgddLH2PW-6ninOE8CM7DNvlvgyYsCkckozbPU,4276
|
|
134
141
|
invarlock/utils/digest.py,sha256=sfnqGFRiRf7l950MjSIrWO1XbUfXlcEfNLeWFbBUr8I,1290
|
|
135
|
-
invarlock-0.3.
|
|
136
|
-
invarlock-0.3.
|
|
137
|
-
invarlock-0.3.
|
|
138
|
-
invarlock-0.3.
|
|
139
|
-
invarlock-0.3.
|
|
140
|
-
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
|