divyanshx11 commited on
Commit
67c27e4
·
verified ·
1 Parent(s): 0121730

Restore prior JEVision files and card graphics

Browse files
README.md CHANGED
@@ -33,6 +33,10 @@ The release combines a trained text adapter, a separately trained visual sidecar
33
  | Request envelope | Configured for up to 80,000 processed input tokens |
34
  | Packaging | Adapters, heads, and a runnable local server; base weights download separately |
35
 
 
 
 
 
36
  The serving route processed 76,999 text tokens and 76,998 image-plus-text tokens in recorded acceptance checks. The text check used the included KEV-0.8B option; the image check used the visual sidecar. These checks establish request handling near 77K, while long-context answer quality remains to be evaluated.
37
 
38
  ## See the visual route
@@ -83,6 +87,8 @@ python run_jevvision.py --port 8009
83
 
84
  The server exposes `POST /v1/systemone` on localhost. To select the bundled KEV text checkpoint for requests without images, add `--text-adapter kev-0.8b`. Image-bearing requests automatically use the visual sidecar.
85
 
 
 
86
  ### Call from Python
87
 
88
  ```python
@@ -119,6 +125,8 @@ python examples/long-context/run_demo.py --endpoint http://127.0.0.1:8009
119
 
120
  The runner writes its generated state and saves the server's response only after checking that `usage.input_tokens` is at least 75,000. A [separate recorded text-route acceptance summary](examples/long-context/recorded-77k-text-response-summary.json) documents a 76,999-token request on the bundled KEV-0.8B option; it is a request-handling check, not a result for the default JEVision text adapter.
121
 
 
 
122
  ## Architecture and training
123
 
124
  | Included component | Purpose |
@@ -136,6 +144,10 @@ The default text adapter was fitted to public JevBench decision examples, starti
136
 
137
  JEVision currently has functional checks for typed responses, image routing, and long request acceptance, plus the recorded real-photo example above. Independent, broad image accuracy and long-context answer quality have not yet been measured. The 80,000-token value is a service limit, and requests beyond it are rejected instead of silently truncated. No comparative accuracy, latency, or cost claim is made here.
138
 
 
 
 
 
139
  The [manifest](jevvision_manifest.json) identifies the components, their source revisions, hashes, and serving limit. Users should assess the model on their own images and decision tasks before relying on its outputs.
140
 
141
  ## License
 
33
  | Request envelope | Configured for up to 80,000 processed input tokens |
34
  | Packaging | Adapters, heads, and a runnable local server; base weights download separately |
35
 
36
+ ![Jev, KEV-0.8B and JEVision capability comparison](assets/jevvision-capability-comparison.png)
37
+
38
+ This earlier comparison graphic shows the input routes and context limits alongside text-only development results. Its public-panel score uses examples seen during training.
39
+
40
  The serving route processed 76,999 text tokens and 76,998 image-plus-text tokens in recorded acceptance checks. The text check used the included KEV-0.8B option; the image check used the visual sidecar. These checks establish request handling near 77K, while long-context answer quality remains to be evaluated.
41
 
42
  ## See the visual route
 
87
 
88
  The server exposes `POST /v1/systemone` on localhost. To select the bundled KEV text checkpoint for requests without images, add `--text-adapter kev-0.8b`. Image-bearing requests automatically use the visual sidecar.
89
 
90
+ The earlier `--text-adapter jevbench-m3` selection is also available for existing scripts and points to the same text weights as the default route.
91
+
92
  ### Call from Python
93
 
94
  ```python
 
125
 
126
  The runner writes its generated state and saves the server's response only after checking that `usage.input_tokens` is at least 75,000. A [separate recorded text-route acceptance summary](examples/long-context/recorded-77k-text-response-summary.json) documents a 76,999-token request on the bundled KEV-0.8B option; it is a request-handling check, not a result for the default JEVision text adapter.
127
 
128
+ The original archived [request recipe](examples/long-context/m1-77k-text-input.json) and [response summary](examples/long-context/m1-77k-text-response-summary.json) are preserved at their earlier paths.
129
+
130
  ## Architecture and training
131
 
132
  | Included component | Purpose |
 
144
 
145
  JEVision currently has functional checks for typed responses, image routing, and long request acceptance, plus the recorded real-photo example above. Independent, broad image accuracy and long-context answer quality have not yet been measured. The 80,000-token value is a service limit, and requests beyond it are rejected instead of silently truncated. No comparative accuracy, latency, or cost claim is made here.
146
 
147
+ ![Text-only public and grouped test results from the earlier release](assets/jevbench-m3-results.png)
148
+
149
+ This preserved results graphic separates the in-sample public panel from a small grouped holdout. It does not evaluate the visual route.
150
+
151
  The [manifest](jevvision_manifest.json) identifies the components, their source revisions, hashes, and serving limit. Users should assess the model on their own images and decision tasks before relying on its outputs.
152
 
153
  ## License
examples/long-context/m1-77k-text-input.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "source": "M1 context acceptance, private version 3",
3
+ "model": "kev-latest",
4
+ "text_adapter": {
5
+ "repo_id": "jaredpalmer/kev-0.8b",
6
+ "revision": "54f4f8777356cd5bbbb6c6919c657f26e6f2f6d8"
7
+ },
8
+ "base_model": {
9
+ "repo_id": "Qwen/Qwen3.5-0.8B-Base",
10
+ "revision": "dc7cdfe2ee4154fa7e30f5b51ca41bfa40174e68"
11
+ },
12
+ "text_only": true,
13
+ "reported_input_tokens": 76999,
14
+ "state_recipe": {
15
+ "prefix": "M1 context acceptance. ",
16
+ "repeated_text": "The stored memo remained unchanged. ",
17
+ "repeat_count": 12827,
18
+ "suffix": " END-OF-CONTEXT marker."
19
+ },
20
+ "questions": {
21
+ "m1": {
22
+ "type": "choice",
23
+ "instructions": "Which note is being referred to?",
24
+ "criteria": {
25
+ "memo": "The stored memo",
26
+ "other": "A different item"
27
+ }
28
+ }
29
+ }
30
+ }
examples/long-context/m1-77k-text-response-summary.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "summary_type": "recorded response summary; not the raw API body",
3
+ "experiment": "M1 context acceptance, private version 3",
4
+ "source_report": {
5
+ "filename": "report.json",
6
+ "sha256": "f0fde673452b0d4a1329fc328e045afeb5223023e7ea3f2d16c53d3ce8d716b9"
7
+ },
8
+ "request": {
9
+ "model": "kev-latest",
10
+ "question_id": "m1",
11
+ "text_adapter": "jaredpalmer/kev-0.8b@54f4f8777356cd5bbbb6c6919c657f26e6f2f6d8",
12
+ "base_model_revision": "dc7cdfe2ee4154fa7e30f5b51ca41bfa40174e68",
13
+ "text_only": true
14
+ },
15
+ "observed": {
16
+ "http_status": 200,
17
+ "answer_type": "choice",
18
+ "choice": "memo",
19
+ "input_tokens": 76999,
20
+ "output_tokens": 44,
21
+ "prefill_chunks": 602,
22
+ "latency_ms": 313746.3,
23
+ "verified_response_fields": [
24
+ "type",
25
+ "choice",
26
+ "confidence",
27
+ "probabilities"
28
+ ]
29
+ },
30
+ "not_retained": [
31
+ "numeric confidence value",
32
+ "per-option probability values",
33
+ "original raw API response body"
34
+ ],
35
+ "scope": "Long-context request acceptance and response-schema smoke; not a general long-context accuracy evaluation."
36
+ }
jevvision_manifest.json CHANGED
@@ -13,6 +13,10 @@
13
  "path": "text/jevvision-text",
14
  "role": "default typed-decision text branch"
15
  },
 
 
 
 
16
  "kev-0.8b": {
17
  "path": "text/kev-0.8b",
18
  "role": "pinned KEV text baseline",
@@ -37,6 +41,9 @@
37
  "text/jevvision-text/adapter_model.safetensors": "0f71c01d01cc9a82648417f3b036e329e0fe27dd44cd6847fa141b85518e1022",
38
  "text/jevvision-text/adapter_config.json": "917dbb4e84a81737b187d98633afe8139eded84eabe83cfcf8c9e210a3001615",
39
  "text/jevvision-text/head.pt": "b3ac9f2e10a903bfec76020ee4a730921c22531267de7493aff57b80c741e906",
 
 
 
40
  "text/kev-0.8b/adapter_model.safetensors": "c81d5716f0af7622d8d2b97013c333d48263ca01113f9a7cf4526e96f6ac0b26",
41
  "text/kev-0.8b/adapter_config.json": "748acb2cda88454cb1ba69d745ba336f3fcb5486eac349e90960c8b8d8d3e854",
42
  "text/kev-0.8b/head.pt": "39f4343ccccc65e583bbfff0de0e11bfedb849fcfaaf94b50ac4f2b73bc79c65",
 
13
  "path": "text/jevvision-text",
14
  "role": "default typed-decision text branch"
15
  },
16
+ "jevbench-m3": {
17
+ "path": "text/jevbench-m3",
18
+ "role": "compatibility path for the default text branch"
19
+ },
20
  "kev-0.8b": {
21
  "path": "text/kev-0.8b",
22
  "role": "pinned KEV text baseline",
 
41
  "text/jevvision-text/adapter_model.safetensors": "0f71c01d01cc9a82648417f3b036e329e0fe27dd44cd6847fa141b85518e1022",
42
  "text/jevvision-text/adapter_config.json": "917dbb4e84a81737b187d98633afe8139eded84eabe83cfcf8c9e210a3001615",
43
  "text/jevvision-text/head.pt": "b3ac9f2e10a903bfec76020ee4a730921c22531267de7493aff57b80c741e906",
44
+ "text/jevbench-m3/adapter_model.safetensors": "0f71c01d01cc9a82648417f3b036e329e0fe27dd44cd6847fa141b85518e1022",
45
+ "text/jevbench-m3/adapter_config.json": "917dbb4e84a81737b187d98633afe8139eded84eabe83cfcf8c9e210a3001615",
46
+ "text/jevbench-m3/head.pt": "b3ac9f2e10a903bfec76020ee4a730921c22531267de7493aff57b80c741e906",
47
  "text/kev-0.8b/adapter_model.safetensors": "c81d5716f0af7622d8d2b97013c333d48263ca01113f9a7cf4526e96f6ac0b26",
48
  "text/kev-0.8b/adapter_config.json": "748acb2cda88454cb1ba69d745ba336f3fcb5486eac349e90960c8b8d8d3e854",
49
  "text/kev-0.8b/head.pt": "39f4343ccccc65e583bbfff0de0e11bfedb849fcfaaf94b50ac4f2b73bc79c65",
run_jevvision.py CHANGED
@@ -10,7 +10,7 @@ from pathlib import Path
10
  def main() -> None:
11
  root = Path(__file__).resolve().parent
12
  parser = argparse.ArgumentParser()
13
- parser.add_argument("--text-adapter", choices=("jevvision-text", "kev-0.8b"), default="jevvision-text")
14
  parser.add_argument("--port", type=int, default=8009)
15
  args = parser.parse_args()
16
 
 
10
  def main() -> None:
11
  root = Path(__file__).resolve().parent
12
  parser = argparse.ArgumentParser()
13
+ parser.add_argument("--text-adapter", choices=("jevvision-text", "jevbench-m3", "kev-0.8b"), default="jevvision-text")
14
  parser.add_argument("--port", type=int, default=8009)
15
  args = parser.parse_args()
16
 
runtime/kev/jevvision.py CHANGED
@@ -22,6 +22,7 @@ from .serve import SERVE_CONTEXT_TOKENS, Server
22
 
23
  TEXT_ADAPTERS = {
24
  "jevvision-text": "text/jevvision-text",
 
25
  "kev-0.8b": "text/kev-0.8b",
26
  }
27
  MAX_IMAGE_BYTES = 10 * 1024 * 1024
 
22
 
23
  TEXT_ADAPTERS = {
24
  "jevvision-text": "text/jevvision-text",
25
+ "jevbench-m3": "text/jevbench-m3",
26
  "kev-0.8b": "text/kev-0.8b",
27
  }
28
  MAX_IMAGE_BYTES = 10 * 1024 * 1024
text/jevbench-m3/adapter_config.json ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alora_invocation_tokens": null,
3
+ "alpha_pattern": {},
4
+ "arrow_config": null,
5
+ "auto_mapping": null,
6
+ "base_model_name_or_path": "Qwen/Qwen3.5-0.8B-Base",
7
+ "bias": "none",
8
+ "corda_config": null,
9
+ "ensure_weight_tying": false,
10
+ "eva_config": null,
11
+ "exclude_modules": null,
12
+ "fan_in_fan_out": false,
13
+ "inference_mode": true,
14
+ "init_lora_weights": true,
15
+ "kasa_config": null,
16
+ "layer_replication": null,
17
+ "layers_pattern": null,
18
+ "layers_to_transform": null,
19
+ "loftq_config": {},
20
+ "lora_alpha": 32,
21
+ "lora_bias": false,
22
+ "lora_dropout": 0.05,
23
+ "lora_ga_config": null,
24
+ "megatron_config": null,
25
+ "megatron_core": "megatron.core",
26
+ "modules_to_save": null,
27
+ "monteclora_config": null,
28
+ "peft_type": "LORA",
29
+ "peft_version": "0.21.0",
30
+ "qalora_group_size": 16,
31
+ "r": 16,
32
+ "rank_pattern": {},
33
+ "revision": null,
34
+ "target_modules": [
35
+ "q_proj",
36
+ "v_proj",
37
+ "gate_proj",
38
+ "in_proj_a",
39
+ "k_proj",
40
+ "up_proj",
41
+ "out_proj",
42
+ "down_proj",
43
+ "in_proj_b",
44
+ "in_proj_z",
45
+ "o_proj",
46
+ "in_proj_qkv"
47
+ ],
48
+ "target_parameters": null,
49
+ "task_type": "FEATURE_EXTRACTION",
50
+ "trainable_token_indices": null,
51
+ "use_bdlora": null,
52
+ "use_dora": false,
53
+ "use_qalora": false,
54
+ "use_rslora": false,
55
+ "velora_config": null
56
+ }
text/jevbench-m3/adapter_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0f71c01d01cc9a82648417f3b036e329e0fe27dd44cd6847fa141b85518e1022
3
+ size 43338624
text/jevbench-m3/head.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3ac9f2e10a903bfec76020ee4a730921c22531267de7493aff57b80c741e906
3
+ size 2103039