Add verified Verdict Core ML L128 FP16
Browse files- README.md +23 -0
- assets.lock.json +15 -0
- calibrator.json +41 -0
- native_reference.py +113 -0
- preprocessing.py +24 -0
- profile-L128.json +91 -0
- tokenizer.json +0 -0
- tokenizer_config.json +17 -0
- verdict_fp16_L128_candidates25.conversion.json +15 -0
- verdict_fp16_L128_candidates25.mlpackage/Data/com.apple.CoreML/model.mlmodel +3 -0
- verdict_fp16_L128_candidates25.mlpackage/Data/com.apple.CoreML/weights/weight.bin +3 -0
- verdict_fp16_L128_candidates25.mlpackage/Manifest.json +18 -0
- verification-L128.json +120 -0
README.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
library_name: coreml
|
| 4 |
+
pipeline_tag: text-classification
|
| 5 |
+
base_model: heman10x/rlcd-modernbert-151m
|
| 6 |
+
tags:
|
| 7 |
+
- coreml
|
| 8 |
+
- apple-silicon
|
| 9 |
+
- decision-model
|
| 10 |
+
- verdict
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# Verdict Core ML (L128 FP16)
|
| 14 |
+
|
| 15 |
+
This is a Core ML conversion of the **trained Verdict checkpoint** [`heman10x/rlcd-modernbert-151m`](https://huggingface.co/heman10x/rlcd-modernbert-151m), pinned at `8af2496eb63c7fa66d7d234e1f62629380030eb4`. It has 151,378,177 parameters and retains the full encoder plus trained decision head. The `verdict_fp16_L128_candidates25.mlpackage` file is 303,210,832 bytes and targets iOS 17 / macOS 14 or newer.
|
| 16 |
+
|
| 17 |
+
Inputs are `input_ids` and `attention_mask` of shape `[1,128]`, and `class_marker_map` of shape `[1,25,128]`. The graph returns raw logits and an uncalibrated softmax. For a native Verdict decision, render the request with `native_reference.py`, append the `__insufficient_evidence__` candidate, and apply `calibrator.json` to raw logits. This means at most **24 substantive candidates**. The released calibrator has a separate temperature for several candidate counts. Calling the graph with arbitrary labels or treating `probabilities` as calibrated changes the model's behavior.
|
| 18 |
+
|
| 19 |
+
Verified on Apple M5 Pro/macOS 27.0 against the pinned PyTorch model: 3/3 choice, noul and score smoke decisions agreed, with worst calibrated probability difference 0.00341. The 20-iteration `coreml-cli` median was 3.627 ms CPU+GPU, 3.710 ms CPU+ANE, 3.915 ms automatic, and 11.721 ms CPU only. These are model call times; rendering and tokenization add time. The `verification-L128.json` and `profile-L128.json` files include the details.
|
| 20 |
+
|
| 21 |
+
The public Decision Index tracker reports Verdict at 13.38. Its historical checkpoint and renderer have not been authenticated against this pinned release, so this artifact does **not** claim to reproduce that score. Only the L128 bucket has been verified; larger inputs require a separately exported and tested bucket. Unsupported requests must not be truncated to 128 tokens without stating that behavior.
|
| 22 |
+
|
| 23 |
+
The Hub repo includes the runtime renderer, calibration helper, tokenizer, verification report and SHA-256 asset lock. Conversion source is maintained in [FluidInference/mobius](https://github.com/FluidInference/mobius). Upstream model and code: [Verdict model](https://huggingface.co/heman10x/rlcd-modernbert-151m), [Verdict source](https://github.com/Heman10x-NGU/Verdict-open-jev), Apache-2.0. Base architecture: [`knowledgator/gliclass-modern-base-v2.0`](https://huggingface.co/knowledgator/gliclass-modern-base-v2.0).
|
assets.lock.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"source_repo": "heman10x/rlcd-modernbert-151m",
|
| 3 |
+
"source_revision": "8af2496eb63c7fa66d7d234e1f62629380030eb4",
|
| 4 |
+
"source_code": "Heman10x-NGU/Verdict-open-jev",
|
| 5 |
+
"source_code_revision_audited": "30f15564821626ca5c1ad5b2638c4eb7078787dd",
|
| 6 |
+
"license": "Apache-2.0",
|
| 7 |
+
"historical_tracker_checkpoint_verified": false,
|
| 8 |
+
"files": {
|
| 9 |
+
"model.safetensors": "d252823994d47a7933217fc86449493299643af6a0c0d83d6bd5a7666d3253ef",
|
| 10 |
+
"config.json": "303f8eef1009cfdcb0cfba3e653247e625f16a4501e2351bad1a633f1f644695",
|
| 11 |
+
"tokenizer.json": "8bb449eb0c037aae44115b65905bb339b8f3f74eb37067c19127feb3c0755723",
|
| 12 |
+
"tokenizer_config.json": "fb54f027372062b2ca52282efb04d178a8b57167a00cd8f4e816515823a2c016",
|
| 13 |
+
"calibrator.json": "af2a876993148efa0726b6ccf710fe2303897d20c0ce8c7c9036eb50f64d23de"
|
| 14 |
+
}
|
| 15 |
+
}
|
calibrator.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model_id": "openjev-modernbert-151.4m",
|
| 3 |
+
"temperature": 2.8039,
|
| 4 |
+
"log_temperature": 1.0309995577626943,
|
| 5 |
+
"scope": "open_domain_calibrated_v1",
|
| 6 |
+
"per_k": {
|
| 7 |
+
"2": 5.0069,
|
| 8 |
+
"3": 5.0069,
|
| 9 |
+
"4": 4.0314,
|
| 10 |
+
"5": 3.0560,
|
| 11 |
+
"6": 2.3898,
|
| 12 |
+
"7": 2.3898,
|
| 13 |
+
"9": 1.6668,
|
| 14 |
+
"11": 3.3919,
|
| 15 |
+
"17": 1.7200,
|
| 16 |
+
"25": 1.5144
|
| 17 |
+
},
|
| 18 |
+
"artifact_hash": "b4742a033bce3fb4707e78d910dc89d53c30656d028b1836a992ba87e0766324",
|
| 19 |
+
"format_version": "rlcd-calibrator-v1",
|
| 20 |
+
"provenance": {
|
| 21 |
+
"fitted_on": [
|
| 22 |
+
"data/real_banking_cal.jsonl",
|
| 23 |
+
"data/synthetic_calibration.jsonl",
|
| 24 |
+
"data/slice_cardinality_k3.jsonl",
|
| 25 |
+
"data/slice_cardinality_k5.jsonl",
|
| 26 |
+
"data/slice_cardinality_k9.jsonl",
|
| 27 |
+
"data/slice_cardinality_k17.jsonl",
|
| 28 |
+
"data/slice_cardinality_k25.jsonl",
|
| 29 |
+
"data/slice_distant_oos.jsonl",
|
| 30 |
+
"data/slice_missing_option.jsonl",
|
| 31 |
+
"data/gen/T01.jsonl",
|
| 32 |
+
"data/gen/T02.jsonl",
|
| 33 |
+
"data/gen/T03.jsonl",
|
| 34 |
+
"data/gen/T07.jsonl",
|
| 35 |
+
"data/gen/T12.jsonl"
|
| 36 |
+
],
|
| 37 |
+
"total_calibration_items": 1753,
|
| 38 |
+
"date": "2026-09-20T14:00:00Z",
|
| 39 |
+
"notes": "Honest stratified temperature scaling fitted strictly via NLL minimization on held-out calibration data. Zero fitting on JevBench evaluation tasks."
|
| 40 |
+
}
|
| 41 |
+
}
|
native_reference.py
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Verdict's pinned formatting, calibration and typed output contract.
|
| 2 |
+
|
| 3 |
+
The rendering and decoding match Verdict-open-jev/core/{formatting,engine_encoder}.py
|
| 4 |
+
at 30f15564821626ca5c1ad5b2638c4eb7078787dd. The encoder is loaded from
|
| 5 |
+
heman10x/rlcd-modernbert-151m at the revision in assets.lock.json.
|
| 6 |
+
"""
|
| 7 |
+
|
| 8 |
+
from __future__ import annotations
|
| 9 |
+
|
| 10 |
+
import json
|
| 11 |
+
import math
|
| 12 |
+
from dataclasses import dataclass
|
| 13 |
+
from pathlib import Path
|
| 14 |
+
from typing import Any
|
| 15 |
+
|
| 16 |
+
import numpy as np
|
| 17 |
+
|
| 18 |
+
ABSTAIN_ID = "__insufficient_evidence__"
|
| 19 |
+
ABSTAIN_DESCRIPTION = "insufficient evidence"
|
| 20 |
+
MAX_SUBSTANTIVE_OPTIONS = 24
|
| 21 |
+
MAX_CANDIDATES = 25
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
@dataclass(frozen=True)
|
| 25 |
+
class Request:
|
| 26 |
+
kind: str
|
| 27 |
+
text: str
|
| 28 |
+
labels: tuple[str, ...]
|
| 29 |
+
ids: tuple[str, ...]
|
| 30 |
+
values: tuple[float, ...] = ()
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def build_request(context: str, question: dict[str, Any]) -> Request:
|
| 34 |
+
"""Render one native typed query without dropping trained abstention."""
|
| 35 |
+
kind = question["type"]
|
| 36 |
+
if kind == "choice":
|
| 37 |
+
options = question["options"]
|
| 38 |
+
if not 1 <= len(options) <= MAX_SUBSTANTIVE_OPTIONS:
|
| 39 |
+
raise ValueError("Verdict supports 1 to 24 substantive choice options")
|
| 40 |
+
labels = tuple(f"It is {option['description']}" for option in options)
|
| 41 |
+
ids = tuple(option["id"] for option in options)
|
| 42 |
+
query = question["question"]
|
| 43 |
+
text = f"Question: {query}\n\nContext:\n{context}"
|
| 44 |
+
values: tuple[float, ...] = ()
|
| 45 |
+
elif kind == "score":
|
| 46 |
+
levels = question["levels"]
|
| 47 |
+
if not 1 <= len(levels) <= MAX_SUBSTANTIVE_OPTIONS:
|
| 48 |
+
raise ValueError("Verdict supports 1 to 24 substantive score levels")
|
| 49 |
+
labels = tuple(f"{level['description']} (Value: {level['value']})" for level in levels)
|
| 50 |
+
ids = tuple(level["id"] for level in levels)
|
| 51 |
+
values = tuple(float(level["value"]) for level in levels)
|
| 52 |
+
query = question["question"]
|
| 53 |
+
text = f"Question: {query}\n\nContext:\n{context}"
|
| 54 |
+
elif kind == "noul":
|
| 55 |
+
proposition = question["proposition"]
|
| 56 |
+
labels = (f"true: {proposition}", f"false: not {proposition}")
|
| 57 |
+
ids = ("true", "false")
|
| 58 |
+
values = ()
|
| 59 |
+
text = f"Context:\n{context}\n\nEvaluate proposition: {proposition}"
|
| 60 |
+
query = ""
|
| 61 |
+
else:
|
| 62 |
+
raise ValueError(f"unknown Verdict question type: {kind}")
|
| 63 |
+
labels += (ABSTAIN_DESCRIPTION,)
|
| 64 |
+
ids += (ABSTAIN_ID,)
|
| 65 |
+
prefix = "".join(f"<<LABEL>>{label}" for label in labels)
|
| 66 |
+
return Request(kind, f"{prefix}<<SEP>>{text}", labels, ids, values)
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
def temperature(calibrator: dict[str, Any], count: int) -> float:
|
| 70 |
+
per_k = calibrator.get("per_k", {})
|
| 71 |
+
value = float(per_k.get(str(count), calibrator["temperature"]))
|
| 72 |
+
if not math.isfinite(value) or value <= 0:
|
| 73 |
+
raise ValueError("invalid trained temperature")
|
| 74 |
+
return value
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
def decode(logits: np.ndarray, request: Request, calibrator: dict[str, Any]) -> dict[str, Any]:
|
| 78 |
+
"""Apply the released per-K calibration and preserve native abstention."""
|
| 79 |
+
k = len(request.ids)
|
| 80 |
+
z = np.asarray(logits, dtype=np.float64).reshape(-1)[:k]
|
| 81 |
+
if len(z) != k or not np.isfinite(z).all():
|
| 82 |
+
raise ValueError("invalid Verdict logits")
|
| 83 |
+
z = z / temperature(calibrator, k)
|
| 84 |
+
p = np.exp(z - z.max())
|
| 85 |
+
p /= p.sum()
|
| 86 |
+
distribution = dict(zip(request.ids, map(float, p)))
|
| 87 |
+
selected_id = request.ids[int(p.argmax())]
|
| 88 |
+
abstained = selected_id == ABSTAIN_ID
|
| 89 |
+
result: dict[str, Any] = {
|
| 90 |
+
"type": request.kind,
|
| 91 |
+
"selected_id": selected_id,
|
| 92 |
+
"probabilities": distribution,
|
| 93 |
+
"is_abstention": abstained,
|
| 94 |
+
"p_abstain": distribution[ABSTAIN_ID],
|
| 95 |
+
"calibration_status": "calibrated_for_scope",
|
| 96 |
+
}
|
| 97 |
+
if request.kind == "choice":
|
| 98 |
+
result["choice"] = selected_id
|
| 99 |
+
elif request.kind == "noul":
|
| 100 |
+
substantive = distribution["true"] + distribution["false"]
|
| 101 |
+
result["noul"] = distribution["true"] / substantive if substantive and not abstained else None
|
| 102 |
+
else:
|
| 103 |
+
substantive = sum(distribution[key] for key in request.ids[:-1])
|
| 104 |
+
result["score"] = (
|
| 105 |
+
sum(value * distribution[key] / substantive for key, value in zip(request.ids[:-1], request.values))
|
| 106 |
+
if substantive and not abstained
|
| 107 |
+
else None
|
| 108 |
+
)
|
| 109 |
+
return result
|
| 110 |
+
|
| 111 |
+
|
| 112 |
+
def load_calibrator(source: Path) -> dict[str, Any]:
|
| 113 |
+
return json.loads((source / "calibrator.json").read_text())
|
preprocessing.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Tensorize Verdict's native rendered text for one fixed Core ML bucket."""
|
| 2 |
+
|
| 3 |
+
from __future__ import annotations
|
| 4 |
+
|
| 5 |
+
import numpy as np
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def prepare(tokenizer, model, rendered: str, length: int, max_candidates: int) -> dict[str, np.ndarray]:
|
| 9 |
+
full = tokenizer(rendered, truncation=False)
|
| 10 |
+
if len(full["input_ids"]) > length:
|
| 11 |
+
raise ValueError(f"Verdict prompt needs {len(full['input_ids'])} tokens; L{length} has no room")
|
| 12 |
+
encoded = tokenizer(rendered, truncation=False, padding="max_length", max_length=length, return_tensors="np")
|
| 13 |
+
ids = encoded["input_ids"].astype(np.int32)
|
| 14 |
+
positions = np.flatnonzero(ids[0] == model.config.class_token_index)
|
| 15 |
+
if len(positions) > max_candidates:
|
| 16 |
+
raise ValueError("candidate markers exceed exported head capacity")
|
| 17 |
+
markers = np.zeros((1, max_candidates, length), dtype=np.float32)
|
| 18 |
+
for row, position in enumerate(positions):
|
| 19 |
+
markers[0, row, position] = 1.0
|
| 20 |
+
return {
|
| 21 |
+
"input_ids": ids,
|
| 22 |
+
"attention_mask": encoded["attention_mask"].astype(np.int32),
|
| 23 |
+
"class_marker_map": markers,
|
| 24 |
+
}
|
profile-L128.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"hardware": {
|
| 3 |
+
"device": "arm64",
|
| 4 |
+
"chip": "Apple M5 Pro",
|
| 5 |
+
"ram": "24GB",
|
| 6 |
+
"os_version": "macOS 27.0",
|
| 7 |
+
"timestamp": "2026-09-22T20:35:07.289343+00:00"
|
| 8 |
+
},
|
| 9 |
+
"models": [
|
| 10 |
+
{
|
| 11 |
+
"model_path": "/var/folders/hg/l0263vy543b3r7rfwgxkt_680000gn/T/verdict_fp16_L128_candidates25.mlmodelc",
|
| 12 |
+
"model_name": "verdict_fp16_L128_candidates25",
|
| 13 |
+
"metadata": {
|
| 14 |
+
"description": "Verdict decision logits; use abstention and per-K calibration in host",
|
| 15 |
+
"author": "Heman10x-NGU (Verdict weights); Fluid Inference (Core ML conversion)",
|
| 16 |
+
"license": "Apache-2.0"
|
| 17 |
+
},
|
| 18 |
+
"cold_compile_ms": 4181.106,
|
| 19 |
+
"results": [
|
| 20 |
+
{
|
| 21 |
+
"compute_units": "all",
|
| 22 |
+
"summary": {
|
| 23 |
+
"cpu_percent": 31.73,
|
| 24 |
+
"gpu_percent": 0.0,
|
| 25 |
+
"ane_percent": 68.27
|
| 26 |
+
},
|
| 27 |
+
"latency": {
|
| 28 |
+
"compile_ms": 28.336,
|
| 29 |
+
"median_ms": 3.915,
|
| 30 |
+
"mean_ms": 4.016,
|
| 31 |
+
"min_ms": 3.701,
|
| 32 |
+
"max_ms": 5.103,
|
| 33 |
+
"std_ms": 0.331,
|
| 34 |
+
"iterations": 20
|
| 35 |
+
}
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"compute_units": "cpu_only",
|
| 39 |
+
"summary": {
|
| 40 |
+
"cpu_percent": 100.0,
|
| 41 |
+
"gpu_percent": 0.0,
|
| 42 |
+
"ane_percent": 0.0
|
| 43 |
+
},
|
| 44 |
+
"latency": {
|
| 45 |
+
"compile_ms": 0.414,
|
| 46 |
+
"median_ms": 11.721,
|
| 47 |
+
"mean_ms": 11.715,
|
| 48 |
+
"min_ms": 11.541,
|
| 49 |
+
"max_ms": 11.985,
|
| 50 |
+
"std_ms": 0.104,
|
| 51 |
+
"iterations": 20
|
| 52 |
+
}
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"compute_units": "cpu_and_gpu",
|
| 56 |
+
"summary": {
|
| 57 |
+
"cpu_percent": 0.0,
|
| 58 |
+
"gpu_percent": 100.0,
|
| 59 |
+
"ane_percent": 0.0
|
| 60 |
+
},
|
| 61 |
+
"latency": {
|
| 62 |
+
"compile_ms": 1.007,
|
| 63 |
+
"median_ms": 3.627,
|
| 64 |
+
"mean_ms": 3.651,
|
| 65 |
+
"min_ms": 3.502,
|
| 66 |
+
"max_ms": 3.896,
|
| 67 |
+
"std_ms": 0.116,
|
| 68 |
+
"iterations": 20
|
| 69 |
+
}
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"compute_units": "cpu_and_neural_engine",
|
| 73 |
+
"summary": {
|
| 74 |
+
"cpu_percent": 31.73,
|
| 75 |
+
"gpu_percent": 0.0,
|
| 76 |
+
"ane_percent": 68.27
|
| 77 |
+
},
|
| 78 |
+
"latency": {
|
| 79 |
+
"compile_ms": 23.874,
|
| 80 |
+
"median_ms": 3.71,
|
| 81 |
+
"mean_ms": 3.739,
|
| 82 |
+
"min_ms": 3.574,
|
| 83 |
+
"max_ms": 4.226,
|
| 84 |
+
"std_ms": 0.153,
|
| 85 |
+
"iterations": 20
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
]
|
| 89 |
+
}
|
| 90 |
+
]
|
| 91 |
+
}
|
tokenizer.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"backend": "tokenizers",
|
| 3 |
+
"clean_up_tokenization_spaces": true,
|
| 4 |
+
"cls_token": "[CLS]",
|
| 5 |
+
"is_local": false,
|
| 6 |
+
"local_files_only": false,
|
| 7 |
+
"mask_token": "[MASK]",
|
| 8 |
+
"model_input_names": [
|
| 9 |
+
"input_ids",
|
| 10 |
+
"attention_mask"
|
| 11 |
+
],
|
| 12 |
+
"model_max_length": 8192,
|
| 13 |
+
"pad_token": "[PAD]",
|
| 14 |
+
"sep_token": "[SEP]",
|
| 15 |
+
"tokenizer_class": "TokenizersBackend",
|
| 16 |
+
"unk_token": "[UNK]"
|
| 17 |
+
}
|
verdict_fp16_L128_candidates25.conversion.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"package": "verdict_fp16_L128_candidates25.mlpackage",
|
| 3 |
+
"source_repo": "heman10x/rlcd-modernbert-151m",
|
| 4 |
+
"source_revision": "8af2496eb63c7fa66d7d234e1f62629380030eb4",
|
| 5 |
+
"source_weight_sha256": "d252823994d47a7933217fc86449493299643af6a0c0d83d6bd5a7666d3253ef",
|
| 6 |
+
"parameters": 151378177,
|
| 7 |
+
"wrapper_max_logit_error": 1.9073486328125e-06,
|
| 8 |
+
"conversion_seconds": 5.913961540965829,
|
| 9 |
+
"package_bytes": 303210832,
|
| 10 |
+
"package_files_sha256": {
|
| 11 |
+
"Manifest.json": "fc5d31df174a9f450bfb9ba406307c379c30fabba5cad38fcaf8717b806c69a8",
|
| 12 |
+
"Data/com.apple.CoreML/model.mlmodel": "6cc079930a63c1069a7a2c259f4c086879981021047767f2bb4d68b6d1f02b00",
|
| 13 |
+
"Data/com.apple.CoreML/weights/weight.bin": "a982e14147982df9abb99a3637075a0193835c6b99edc396a52c1a43c2a4854a"
|
| 14 |
+
}
|
| 15 |
+
}
|
verdict_fp16_L128_candidates25.mlpackage/Data/com.apple.CoreML/model.mlmodel
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6cc079930a63c1069a7a2c259f4c086879981021047767f2bb4d68b6d1f02b00
|
| 3 |
+
size 306983
|
verdict_fp16_L128_candidates25.mlpackage/Data/com.apple.CoreML/weights/weight.bin
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a982e14147982df9abb99a3637075a0193835c6b99edc396a52c1a43c2a4854a
|
| 3 |
+
size 302903232
|
verdict_fp16_L128_candidates25.mlpackage/Manifest.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"fileFormatVersion": "1.0.0",
|
| 3 |
+
"itemInfoEntries": {
|
| 4 |
+
"82619DAC-DE6A-49C3-BFE9-4510CA1EB9B1": {
|
| 5 |
+
"author": "com.apple.CoreML",
|
| 6 |
+
"description": "CoreML Model Weights",
|
| 7 |
+
"name": "weights",
|
| 8 |
+
"path": "com.apple.CoreML/weights"
|
| 9 |
+
},
|
| 10 |
+
"D522AC1C-3AF7-4ADE-936E-9D7D8A090D98": {
|
| 11 |
+
"author": "com.apple.CoreML",
|
| 12 |
+
"description": "CoreML Model Specification",
|
| 13 |
+
"name": "model.mlmodel",
|
| 14 |
+
"path": "com.apple.CoreML/model.mlmodel"
|
| 15 |
+
}
|
| 16 |
+
},
|
| 17 |
+
"rootModelIdentifier": "D522AC1C-3AF7-4ADE-936E-9D7D8A090D98"
|
| 18 |
+
}
|
verification-L128.json
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"source_repo": "heman10x/rlcd-modernbert-151m",
|
| 3 |
+
"source_revision": "8af2496eb63c7fa66d7d234e1f62629380030eb4",
|
| 4 |
+
"package": "/Users/hanweng/Documents/mobius-verdict-laya/models/computer-use/verdict/coreml/build/verdict_fp16_L128_candidates25.mlpackage",
|
| 5 |
+
"chip": "arm",
|
| 6 |
+
"macos": "27.0",
|
| 7 |
+
"max_calibrated_probability_error": 0.003407791923494219,
|
| 8 |
+
"selected_id_agreements": 3,
|
| 9 |
+
"questions": 3,
|
| 10 |
+
"rows": [
|
| 11 |
+
{
|
| 12 |
+
"name": "lost card",
|
| 13 |
+
"type": "choice",
|
| 14 |
+
"tokens": 53,
|
| 15 |
+
"candidates_including_abstention": 3,
|
| 16 |
+
"native": {
|
| 17 |
+
"type": "choice",
|
| 18 |
+
"selected_id": "card_lost",
|
| 19 |
+
"probabilities": {
|
| 20 |
+
"card_lost": 0.627995456676331,
|
| 21 |
+
"pin_reset": 0.12699368118294335,
|
| 22 |
+
"__insufficient_evidence__": 0.2450108621407256
|
| 23 |
+
},
|
| 24 |
+
"is_abstention": false,
|
| 25 |
+
"p_abstain": 0.2450108621407256,
|
| 26 |
+
"calibration_status": "calibrated_for_scope",
|
| 27 |
+
"choice": "card_lost"
|
| 28 |
+
},
|
| 29 |
+
"coreml": {
|
| 30 |
+
"type": "choice",
|
| 31 |
+
"selected_id": "card_lost",
|
| 32 |
+
"probabilities": {
|
| 33 |
+
"card_lost": 0.6283802556009165,
|
| 34 |
+
"pin_reset": 0.1261597182435837,
|
| 35 |
+
"__insufficient_evidence__": 0.24546002615549983
|
| 36 |
+
},
|
| 37 |
+
"is_abstention": false,
|
| 38 |
+
"p_abstain": 0.24546002615549983,
|
| 39 |
+
"calibration_status": "calibrated_for_scope",
|
| 40 |
+
"choice": "card_lost"
|
| 41 |
+
},
|
| 42 |
+
"max_calibrated_probability_error": 0.0008339629393596393,
|
| 43 |
+
"selected_id_agrees": true,
|
| 44 |
+
"median_model_call_ms": 3.475604491541162
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
"name": "binary inquiry",
|
| 48 |
+
"type": "noul",
|
| 49 |
+
"tokens": 50,
|
| 50 |
+
"candidates_including_abstention": 3,
|
| 51 |
+
"native": {
|
| 52 |
+
"type": "noul",
|
| 53 |
+
"selected_id": "true",
|
| 54 |
+
"probabilities": {
|
| 55 |
+
"true": 0.46928461522757403,
|
| 56 |
+
"false": 0.24040802067067693,
|
| 57 |
+
"__insufficient_evidence__": 0.29030736410174907
|
| 58 |
+
},
|
| 59 |
+
"is_abstention": false,
|
| 60 |
+
"p_abstain": 0.29030736410174907,
|
| 61 |
+
"calibration_status": "calibrated_for_scope",
|
| 62 |
+
"noul": 0.6612505068952915
|
| 63 |
+
},
|
| 64 |
+
"coreml": {
|
| 65 |
+
"type": "noul",
|
| 66 |
+
"selected_id": "true",
|
| 67 |
+
"probabilities": {
|
| 68 |
+
"true": 0.4658768233040798,
|
| 69 |
+
"false": 0.2409705632084786,
|
| 70 |
+
"__insufficient_evidence__": 0.29315261348744165
|
| 71 |
+
},
|
| 72 |
+
"is_abstention": false,
|
| 73 |
+
"p_abstain": 0.29315261348744165,
|
| 74 |
+
"calibration_status": "calibrated_for_scope",
|
| 75 |
+
"noul": 0.6590911025400003
|
| 76 |
+
},
|
| 77 |
+
"max_calibrated_probability_error": 0.003407791923494219,
|
| 78 |
+
"selected_id_agrees": true,
|
| 79 |
+
"median_model_call_ms": 3.5811454872600734
|
| 80 |
+
},
|
| 81 |
+
{
|
| 82 |
+
"name": "urgency score",
|
| 83 |
+
"type": "score",
|
| 84 |
+
"tokens": 55,
|
| 85 |
+
"candidates_including_abstention": 4,
|
| 86 |
+
"native": {
|
| 87 |
+
"type": "score",
|
| 88 |
+
"selected_id": "__insufficient_evidence__",
|
| 89 |
+
"probabilities": {
|
| 90 |
+
"low": 0.1979320574725608,
|
| 91 |
+
"medium": 0.289823573347529,
|
| 92 |
+
"high": 0.18632966270420953,
|
| 93 |
+
"__insufficient_evidence__": 0.3259147064757007
|
| 94 |
+
},
|
| 95 |
+
"is_abstention": true,
|
| 96 |
+
"p_abstain": 0.3259147064757007,
|
| 97 |
+
"calibration_status": "calibrated_for_scope",
|
| 98 |
+
"score": null
|
| 99 |
+
},
|
| 100 |
+
"coreml": {
|
| 101 |
+
"type": "score",
|
| 102 |
+
"selected_id": "__insufficient_evidence__",
|
| 103 |
+
"probabilities": {
|
| 104 |
+
"low": 0.19782407464261623,
|
| 105 |
+
"medium": 0.2888377991986832,
|
| 106 |
+
"high": 0.18659805748489713,
|
| 107 |
+
"__insufficient_evidence__": 0.32674006867380345
|
| 108 |
+
},
|
| 109 |
+
"is_abstention": true,
|
| 110 |
+
"p_abstain": 0.32674006867380345,
|
| 111 |
+
"calibration_status": "calibrated_for_scope",
|
| 112 |
+
"score": null
|
| 113 |
+
},
|
| 114 |
+
"max_calibrated_probability_error": 0.0009857741488458194,
|
| 115 |
+
"selected_id_agrees": true,
|
| 116 |
+
"median_model_call_ms": 3.4559165069367737
|
| 117 |
+
}
|
| 118 |
+
],
|
| 119 |
+
"passed": true
|
| 120 |
+
}
|