Babajaan commited on
Commit
dc0b8ee
·
verified ·
1 Parent(s): 3b0f947

Upload KAUBioMED-LLM LoRA adapter and manuscript evidence package

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ adapter/tokenizer.json filter=lfs diff=lfs merge=lfs -text
INFERENCE.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Inference example
2
+
3
+ ```python
4
+ from transformers import AutoModelForCausalLM, AutoTokenizer
5
+ from peft import PeftModel
6
+
7
+ base = 'meta-llama/Llama-3.1-8B-Instruct'
8
+ adapter = './adapter'
9
+ tok = AutoTokenizer.from_pretrained(base)
10
+ model = AutoModelForCausalLM.from_pretrained(base, device_map='auto')
11
+ model = PeftModel.from_pretrained(model, adapter)
12
+ ```
README.md ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: llama3.1
3
+ base_model:
4
+ - meta-llama/Llama-3.1-8B-Instruct
5
+ - Qwen/Qwen2.5-1.5B-Instruct
6
+ tags:
7
+ - biomedical
8
+ - genomics
9
+ - variant-interpretation
10
+ - lora
11
+ - research
12
+ library_name: transformers
13
+ pipeline_tag: text-generation
14
+ ---
15
+
16
+ # KAUBioMED-LLM
17
+
18
+ KAUBioMED-LLM is a research prototype for guarded biomedical variant interpretation plus leakage-aware temporal variant scoring.
19
+
20
+ ## Components
21
+
22
+ - Qwen2.5-1.5B-Instruct v0.1: lightweight prototype report generator.
23
+ - Llama-3.1-8B-Instruct v0.2: stronger guarded report-generation baseline.
24
+ - score_model: scikit-learn HistGradientBoostingClassifier with isotonic calibration, using label-free broad variant features.
25
+
26
+ ## Intended Use
27
+
28
+ Research use only. Not for clinical diagnosis, treatment decisions, or patient management.
29
+
30
+ ## Data and Provenance
31
+
32
+ See `reports/DATA_PROVENANCE.md`.
33
+
34
+ ## Key Results
35
+
36
+ First-appearance temporal broad score_model test:
37
+
38
+ - AUROC: 0.99125
39
+ - AUPRC: 0.96938
40
+ - Brier: 0.02903
41
+ - ECE 10-bin: 0.03428
42
+
43
+ Missense-only limitation:
44
+
45
+ - score_model v0 missense AUROC: 0.78497
46
+ - missense v1 protein-feature AUROC: 0.83644
47
+ - AlphaMissense same-row AUROC: 0.97214
48
+ - REVEL same-row AUROC: 0.97832
49
+
50
+ ## Known Limitations
51
+
52
+ - Broad AUROC is driven partly by easy consequence classes; see `reports/score_model/per_consequence_breakdown.md`.
53
+ - Missense performance remains below REVEL and AlphaMissense.
54
+ - Evidence panel is limited to 20 genes and is not genome-wide.
55
+ - Calibration is measured on a first-appearance ClinVar temporal split, not prospective clinical data.
56
+ - Not validated for clinical deployment.
57
+
58
+ ## Base Model Attribution and License Notes
59
+
60
+ Llama-derived artifacts are subject to the Meta Llama 3.1 Community License and Acceptable Use Policy. Qwen-derived prototype artifacts are subject to Qwen2.5 license terms. Verify license terms before public release.
61
+
62
+ ## Reproducibility Commands
63
+
64
+ ```bash
65
+ cd /ddn/data/generic/bbabajan/KAUBioMED_LLM
66
+ /ddn/data/generic/bbabajan/envs/kaubiomed-llm/bin/python pipeline/build_label_free_features.py
67
+ /ddn/data/generic/bbabajan/envs/kaubiomed-llm/bin/python pipeline/train_label_free_score_model.py
68
+ /ddn/data/generic/bbabajan/envs/kaubiomed-llm/bin/python pipeline/evaluate_first_appearance_temporal.py
69
+ /ddn/data/generic/bbabajan/envs/kaubiomed-llm/bin/python pipeline/compare_external_predictors_first_appearance.py
70
+ /ddn/data/generic/bbabajan/envs/kaubiomed-llm/bin/python pipeline/kaubiomed_full_report.py
71
+ /ddn/data/generic/bbabajan/envs/kaubiomed-llm/bin/python pipeline/apply_report_guards.py
72
+ ```
UPLOAD_READINESS.md ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "status": "prepared_not_pushed",
3
+ "file_count": 11,
4
+ "files": [
5
+ {
6
+ "path": "README.md",
7
+ "size": 2526
8
+ },
9
+ {
10
+ "path": "INFERENCE.md",
11
+ "size": 350
12
+ },
13
+ {
14
+ "path": "UPLOAD_READINESS.md",
15
+ "size": 3562
16
+ },
17
+ {
18
+ "path": "reports/DATA_PROVENANCE.md",
19
+ "size": 3512
20
+ },
21
+ {
22
+ "path": "reports/manuscript/TABLES.md",
23
+ "size": 5325
24
+ },
25
+ {
26
+ "path": "adapter/README.md",
27
+ "size": 5342
28
+ },
29
+ {
30
+ "path": "adapter/adapter_model.safetensors",
31
+ "size": 167832240
32
+ },
33
+ {
34
+ "path": "adapter/tokenizer_config.json",
35
+ "size": 352
36
+ },
37
+ {
38
+ "path": "adapter/chat_template.jinja",
39
+ "size": 4614
40
+ },
41
+ {
42
+ "path": "adapter/tokenizer.json",
43
+ "size": 17210019
44
+ },
45
+ {
46
+ "path": "adapter/adapter_config.json",
47
+ "size": 1173
48
+ }
49
+ ],
50
+ "base_weights_excluded": true,
51
+ "base_weight_hits": [],
52
+ "secret_token_hits": [],
53
+ "checkpoint_optimizer_files_excluded": true,
54
+ "human_push_commands": [
55
+ "cd /ddn/data/generic/bbabajan/KAUBioMED_LLM/release/hf_upload_kaubiomed",
56
+ "huggingface-cli login",
57
+ "huggingface-cli upload <YOUR_REPO_ID> . . --repo-type model"
58
+ ],
59
+ "human_checklist": [
60
+ "Review README.md disclaimer/license/base attribution",
61
+ "Confirm adapter-only upload",
62
+ "Confirm repository visibility",
63
+ "Do not upload base Llama/Qwen weights"
64
+ ]
65
+ }
adapter/README.md ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ base_model: /ddn/data/generic/bbabajan/KAUBioMED_LLM/models/hf_snapshots/meta-llama__Llama-3.1-8B-Instruct
3
+ library_name: peft
4
+ pipeline_tag: text-generation
5
+ tags:
6
+ - base_model:adapter:/ddn/data/generic/bbabajan/KAUBioMED_LLM/models/hf_snapshots/meta-llama__Llama-3.1-8B-Instruct
7
+ - lora
8
+ - transformers
9
+ ---
10
+
11
+ # Model Card for Model ID
12
+
13
+ <!-- Provide a quick summary of what the model is/does. -->
14
+
15
+
16
+
17
+ ## Model Details
18
+
19
+ ### Model Description
20
+
21
+ <!-- Provide a longer summary of what this model is. -->
22
+
23
+
24
+
25
+ - **Developed by:** [More Information Needed]
26
+ - **Funded by [optional]:** [More Information Needed]
27
+ - **Shared by [optional]:** [More Information Needed]
28
+ - **Model type:** [More Information Needed]
29
+ - **Language(s) (NLP):** [More Information Needed]
30
+ - **License:** [More Information Needed]
31
+ - **Finetuned from model [optional]:** [More Information Needed]
32
+
33
+ ### Model Sources [optional]
34
+
35
+ <!-- Provide the basic links for the model. -->
36
+
37
+ - **Repository:** [More Information Needed]
38
+ - **Paper [optional]:** [More Information Needed]
39
+ - **Demo [optional]:** [More Information Needed]
40
+
41
+ ## Uses
42
+
43
+ <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
44
+
45
+ ### Direct Use
46
+
47
+ <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
48
+
49
+ [More Information Needed]
50
+
51
+ ### Downstream Use [optional]
52
+
53
+ <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
54
+
55
+ [More Information Needed]
56
+
57
+ ### Out-of-Scope Use
58
+
59
+ <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
60
+
61
+ [More Information Needed]
62
+
63
+ ## Bias, Risks, and Limitations
64
+
65
+ <!-- This section is meant to convey both technical and sociotechnical limitations. -->
66
+
67
+ [More Information Needed]
68
+
69
+ ### Recommendations
70
+
71
+ <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
72
+
73
+ Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
74
+
75
+ ## How to Get Started with the Model
76
+
77
+ Use the code below to get started with the model.
78
+
79
+ [More Information Needed]
80
+
81
+ ## Training Details
82
+
83
+ ### Training Data
84
+
85
+ <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
86
+
87
+ [More Information Needed]
88
+
89
+ ### Training Procedure
90
+
91
+ <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
92
+
93
+ #### Preprocessing [optional]
94
+
95
+ [More Information Needed]
96
+
97
+
98
+ #### Training Hyperparameters
99
+
100
+ - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
101
+
102
+ #### Speeds, Sizes, Times [optional]
103
+
104
+ <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
105
+
106
+ [More Information Needed]
107
+
108
+ ## Evaluation
109
+
110
+ <!-- This section describes the evaluation protocols and provides the results. -->
111
+
112
+ ### Testing Data, Factors & Metrics
113
+
114
+ #### Testing Data
115
+
116
+ <!-- This should link to a Dataset Card if possible. -->
117
+
118
+ [More Information Needed]
119
+
120
+ #### Factors
121
+
122
+ <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
123
+
124
+ [More Information Needed]
125
+
126
+ #### Metrics
127
+
128
+ <!-- These are the evaluation metrics being used, ideally with a description of why. -->
129
+
130
+ [More Information Needed]
131
+
132
+ ### Results
133
+
134
+ [More Information Needed]
135
+
136
+ #### Summary
137
+
138
+
139
+
140
+ ## Model Examination [optional]
141
+
142
+ <!-- Relevant interpretability work for the model goes here -->
143
+
144
+ [More Information Needed]
145
+
146
+ ## Environmental Impact
147
+
148
+ <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
149
+
150
+ Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
151
+
152
+ - **Hardware Type:** [More Information Needed]
153
+ - **Hours used:** [More Information Needed]
154
+ - **Cloud Provider:** [More Information Needed]
155
+ - **Compute Region:** [More Information Needed]
156
+ - **Carbon Emitted:** [More Information Needed]
157
+
158
+ ## Technical Specifications [optional]
159
+
160
+ ### Model Architecture and Objective
161
+
162
+ [More Information Needed]
163
+
164
+ ### Compute Infrastructure
165
+
166
+ [More Information Needed]
167
+
168
+ #### Hardware
169
+
170
+ [More Information Needed]
171
+
172
+ #### Software
173
+
174
+ [More Information Needed]
175
+
176
+ ## Citation [optional]
177
+
178
+ <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
179
+
180
+ **BibTeX:**
181
+
182
+ [More Information Needed]
183
+
184
+ **APA:**
185
+
186
+ [More Information Needed]
187
+
188
+ ## Glossary [optional]
189
+
190
+ <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
191
+
192
+ [More Information Needed]
193
+
194
+ ## More Information [optional]
195
+
196
+ [More Information Needed]
197
+
198
+ ## Model Card Authors [optional]
199
+
200
+ [More Information Needed]
201
+
202
+ ## Model Card Contact
203
+
204
+ [More Information Needed]
205
+ ### Framework versions
206
+
207
+ - PEFT 0.19.1
adapter/adapter_config.json ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alora_invocation_tokens": null,
3
+ "alpha_pattern": {},
4
+ "arrow_config": null,
5
+ "auto_mapping": null,
6
+ "base_model_name_or_path": "/ddn/data/generic/bbabajan/KAUBioMED_LLM/models/hf_snapshots/meta-llama__Llama-3.1-8B-Instruct",
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
+ "layer_replication": null,
16
+ "layers_pattern": null,
17
+ "layers_to_transform": null,
18
+ "loftq_config": {},
19
+ "lora_alpha": 32,
20
+ "lora_bias": false,
21
+ "lora_dropout": 0.05,
22
+ "lora_ga_config": null,
23
+ "megatron_config": null,
24
+ "megatron_core": "megatron.core",
25
+ "modules_to_save": null,
26
+ "peft_type": "LORA",
27
+ "peft_version": "0.19.1",
28
+ "qalora_group_size": 16,
29
+ "r": 16,
30
+ "rank_pattern": {},
31
+ "revision": null,
32
+ "target_modules": [
33
+ "v_proj",
34
+ "up_proj",
35
+ "gate_proj",
36
+ "q_proj",
37
+ "o_proj",
38
+ "down_proj",
39
+ "k_proj"
40
+ ],
41
+ "target_parameters": null,
42
+ "task_type": "CAUSAL_LM",
43
+ "trainable_token_indices": null,
44
+ "use_bdlora": null,
45
+ "use_dora": false,
46
+ "use_qalora": false,
47
+ "use_rslora": false
48
+ }
adapter/adapter_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:70227608a9a614d565207345f63d362cf6c6959e56fe542741f6f6fbd8005c2e
3
+ size 167832240
adapter/chat_template.jinja ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {{- bos_token }}
2
+ {%- if custom_tools is defined %}
3
+ {%- set tools = custom_tools %}
4
+ {%- endif %}
5
+ {%- if not tools_in_user_message is defined %}
6
+ {%- set tools_in_user_message = true %}
7
+ {%- endif %}
8
+ {%- if not date_string is defined %}
9
+ {%- set date_string = "26 Jul 2024" %}
10
+ {%- endif %}
11
+ {%- if not tools is defined %}
12
+ {%- set tools = none %}
13
+ {%- endif %}
14
+
15
+ {#- This block extracts the system message, so we can slot it into the right place. #}
16
+ {%- if messages[0]['role'] == 'system' %}
17
+ {%- set system_message = messages[0]['content']|trim %}
18
+ {%- set messages = messages[1:] %}
19
+ {%- else %}
20
+ {%- set system_message = "" %}
21
+ {%- endif %}
22
+
23
+ {#- System message + builtin tools #}
24
+ {{- "<|start_header_id|>system<|end_header_id|>\n\n" }}
25
+ {%- if builtin_tools is defined or tools is not none %}
26
+ {{- "Environment: ipython\n" }}
27
+ {%- endif %}
28
+ {%- if builtin_tools is defined %}
29
+ {{- "Tools: " + builtin_tools | reject('equalto', 'code_interpreter') | join(", ") + "\n\n"}}
30
+ {%- endif %}
31
+ {{- "Cutting Knowledge Date: December 2023\n" }}
32
+ {{- "Today Date: " + date_string + "\n\n" }}
33
+ {%- if tools is not none and not tools_in_user_message %}
34
+ {{- "You have access to the following functions. To call a function, please respond with JSON for a function call." }}
35
+ {{- 'Respond in the format {"name": function name, "parameters": dictionary of argument name and its value}.' }}
36
+ {{- "Do not use variables.\n\n" }}
37
+ {%- for t in tools %}
38
+ {{- t | tojson(indent=4) }}
39
+ {{- "\n\n" }}
40
+ {%- endfor %}
41
+ {%- endif %}
42
+ {{- system_message }}
43
+ {{- "<|eot_id|>" }}
44
+
45
+ {#- Custom tools are passed in a user message with some extra guidance #}
46
+ {%- if tools_in_user_message and not tools is none %}
47
+ {#- Extract the first user message so we can plug it in here #}
48
+ {%- if messages | length != 0 %}
49
+ {%- set first_user_message = messages[0]['content']|trim %}
50
+ {%- set messages = messages[1:] %}
51
+ {%- else %}
52
+ {{- raise_exception("Cannot put tools in the first user message when there's no first user message!") }}
53
+ {%- endif %}
54
+ {{- '<|start_header_id|>user<|end_header_id|>\n\n' -}}
55
+ {{- "Given the following functions, please respond with a JSON for a function call " }}
56
+ {{- "with its proper arguments that best answers the given prompt.\n\n" }}
57
+ {{- 'Respond in the format {"name": function name, "parameters": dictionary of argument name and its value}.' }}
58
+ {{- "Do not use variables.\n\n" }}
59
+ {%- for t in tools %}
60
+ {{- t | tojson(indent=4) }}
61
+ {{- "\n\n" }}
62
+ {%- endfor %}
63
+ {{- first_user_message + "<|eot_id|>"}}
64
+ {%- endif %}
65
+
66
+ {%- for message in messages %}
67
+ {%- if not (message.role == 'ipython' or message.role == 'tool' or 'tool_calls' in message) %}
68
+ {{- '<|start_header_id|>' + message['role'] + '<|end_header_id|>\n\n'+ message['content'] | trim + '<|eot_id|>' }}
69
+ {%- elif 'tool_calls' in message %}
70
+ {%- if not message.tool_calls|length == 1 %}
71
+ {{- raise_exception("This model only supports single tool-calls at once!") }}
72
+ {%- endif %}
73
+ {%- set tool_call = message.tool_calls[0].function %}
74
+ {%- if builtin_tools is defined and tool_call.name in builtin_tools %}
75
+ {{- '<|start_header_id|>assistant<|end_header_id|>\n\n' -}}
76
+ {{- "<|python_tag|>" + tool_call.name + ".call(" }}
77
+ {%- for arg_name, arg_val in tool_call.arguments | items %}
78
+ {{- arg_name + '="' + arg_val + '"' }}
79
+ {%- if not loop.last %}
80
+ {{- ", " }}
81
+ {%- endif %}
82
+ {%- endfor %}
83
+ {{- ")" }}
84
+ {%- else %}
85
+ {{- '<|start_header_id|>assistant<|end_header_id|>\n\n' -}}
86
+ {{- '{"name": "' + tool_call.name + '", ' }}
87
+ {{- '"parameters": ' }}
88
+ {{- tool_call.arguments | tojson }}
89
+ {{- "}" }}
90
+ {%- endif %}
91
+ {%- if builtin_tools is defined %}
92
+ {#- This means we're in ipython mode #}
93
+ {{- "<|eom_id|>" }}
94
+ {%- else %}
95
+ {{- "<|eot_id|>" }}
96
+ {%- endif %}
97
+ {%- elif message.role == "tool" or message.role == "ipython" %}
98
+ {{- "<|start_header_id|>ipython<|end_header_id|>\n\n" }}
99
+ {%- if message.content is mapping or message.content is iterable %}
100
+ {{- message.content | tojson }}
101
+ {%- else %}
102
+ {{- message.content }}
103
+ {%- endif %}
104
+ {{- "<|eot_id|>" }}
105
+ {%- endif %}
106
+ {%- endfor %}
107
+ {%- if add_generation_prompt %}
108
+ {{- '<|start_header_id|>assistant<|end_header_id|>\n\n' }}
109
+ {%- endif %}
adapter/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c6766e36c60cb5740c4f16f2d3b75e19c5ea783b6bb682f6346e524ecd34d79d
3
+ size 17210019
adapter/tokenizer_config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "bos_token": "<|begin_of_text|>",
4
+ "clean_up_tokenization_spaces": true,
5
+ "eos_token": "<|eot_id|>",
6
+ "is_local": true,
7
+ "local_files_only": true,
8
+ "model_input_names": [
9
+ "input_ids",
10
+ "attention_mask"
11
+ ],
12
+ "model_max_length": 131072,
13
+ "pad_token": "<|eot_id|>",
14
+ "tokenizer_class": "TokenizersBackend"
15
+ }
reports/DATA_PROVENANCE.md ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # KAUBioMED-LLM Data Provenance
2
+
3
+ Date prepared: 2026-06-15
4
+
5
+ This file records sources actually present or used in the HPC project. Unknown versions are explicitly marked as not recorded rather than guessed.
6
+
7
+ ## ClinVar Snapshots
8
+
9
+ ### ClinVar train snapshot
10
+
11
+ - Path: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/data/raw/clinvar/archive_2.0/2023/clinvar_20231226.vcf.gz`
12
+ - Exists: `True`
13
+ - Size bytes: `90917025`
14
+ - MD5: `c1c17cb968c413c1809cb445347f051f`
15
+ - URL: https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/archive_2.0/2023/clinvar_20231226.vcf.gz
16
+
17
+ ### ClinVar future/test snapshot
18
+
19
+ - Path: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/data/raw/clinvar/archive_2.0/2025/clinvar_20251221.vcf.gz`
20
+ - Exists: `True`
21
+ - Size bytes: `181881189`
22
+ - MD5: `0e9b0df5bc2f82334df20a3c61dd2494`
23
+ - URL: https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/archive_2.0/2025/clinvar_20251221.vcf.gz
24
+
25
+ ## ClinVar Tab-Delimited Metadata
26
+
27
+ ### variant_summary.txt.gz
28
+
29
+ - Path: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/data/raw/clinvar/variant_summary.txt.gz`
30
+ - Exists: `True`
31
+ - Size bytes: `439336125`
32
+ - MD5: `0b1abcb00498745b05236fa7f7612b8c`
33
+ - URL: https://ftp.ncbi.nlm.nih.gov/pub/clinvar/tab_delimited/variant_summary.txt.gz
34
+
35
+ ### submission_summary.txt.gz
36
+
37
+ - Path: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/data/raw/clinvar/submission_summary.txt.gz`
38
+ - Exists: `True`
39
+ - Size bytes: `381965640`
40
+ - MD5: `8926e17b9911c6388b2363c268d8de8e`
41
+ - URL: https://ftp.ncbi.nlm.nih.gov/pub/clinvar/tab_delimited/submission_summary.txt.gz
42
+
43
+ ## Allele Frequency Sources
44
+
45
+ - gnomAD: not used in the current score_model feature table.
46
+ - Current model uses ClinVar VCF INFO fields `AF_ESP`, `AF_EXAC`, and `AF_TGP` when present.
47
+ - gnomAD version: not applicable for current results.
48
+
49
+ ## UniProt / PubMed Evidence
50
+
51
+ - Evidence file: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/knowledge/kaubiomed_gene_evidence.jsonl`
52
+ - Exists: `True`
53
+ - Size bytes: `253848`
54
+ - Access date/version: version not recorded — verify before submission.
55
+ - Scope: 20-gene evidence panel, not genome-wide.
56
+
57
+ ## AlphaFold DB
58
+
59
+ - Manifest: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/knowledge/alphafold/alphafold_manifest.jsonl`
60
+ - Exists: `True`
61
+ - Size bytes: `12754`
62
+ - Access date/model version: version not recorded — verify before submission.
63
+
64
+ ## Ensembl VEP REST
65
+
66
+ - Mapper script: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/pipeline/vep_residue_mapper.py`
67
+ - Exists: `True`
68
+ - REST service/version/date: version not recorded — verify before submission.
69
+ - Mapping policy: MANE-preferred, HGVS protein required, UniProt reconciliation required, abstain on mismatch.
70
+
71
+ ## Base LLM Snapshots
72
+
73
+ ### Qwen2.5-1.5B-Instruct
74
+
75
+ - Snapshot path: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/models/hf_snapshots/Qwen__Qwen2.5-1.5B-Instruct`
76
+ - Exists: `True`
77
+ - Recorded revision: revision not recorded
78
+ - Base model ID: Qwen/Qwen2.5-1.5B-Instruct
79
+ - License: verify before public release.
80
+
81
+ ### Llama-3.1-8B-Instruct
82
+
83
+ - Snapshot path: `/ddn/data/generic/bbabajan/KAUBioMED_LLM/models/hf_snapshots/meta-llama__Llama-3.1-8B-Instruct`
84
+ - Exists: `True`
85
+ - Recorded revision: revision not recorded
86
+ - Base model ID: meta-llama/Llama-3.1-8B-Instruct
87
+ - License: Meta Llama 3.1 Community License applies to Llama-derived adapter/merged artifacts; verify current license text before public release.
88
+
89
+ ## Score Model Feature Boundaries
90
+
91
+ Manuscript-facing score_model features exclude AlphaMissense, REVEL, CADD, UVPS, KAUBioMED LLM scores, ClinVar clinical-significance text, and ClinVar review-status/review_stars.
reports/manuscript/TABLES.md ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Manuscript Tables
2
+
3
+ ## Table 1. Broad Model First-Appearance Temporal Metrics
4
+
5
+ Caption: No-review-status broad score_model evaluated on variants first appearing between ClinVar 2023-12-26 and 2025-12-21.
6
+
7
+ | Split | N | AUROC | AUPRC | Brier | ECE |
8
+ |---|---:|---:|---:|---:|---:|
9
+ | first-appearance temporal | 509974 | 0.99125 | 0.96938 | 0.02903 | 0.03428 |
10
+
11
+ ## Table 2. Per-Consequence Breakdown
12
+
13
+ Caption: Same first-appearance split; low-N classes are aggregated.
14
+
15
+ | Consequence | N | Pos | Neg | AUROC | AUPRC | Brier | ECE |
16
+ |---|---:|---:|---:|---:|---:|---:|---:|
17
+ | non-coding_transcript_variant | 34607 | 257 | 34350 | 0.91551 | 0.61517 | 0.00398 | 0.00219 |
18
+ | 3_prime_UTR_variant | 3861 | 24 | 3837 | 0.89588 | 0.13295 | 0.00623 | 0.00464 |
19
+ | other (low-N) | 534 | 336 | 198 | 0.87042 | 0.90320 | 0.13473 | 0.05293 |
20
+ | unknown | 1503 | 542 | 961 | 0.86056 | 0.75580 | 0.14478 | 0.05336 |
21
+ | missense_variant | 67847 | 12943 | 54904 | 0.81292 | 0.55438 | 0.18069 | 0.23174 |
22
+ | splice_donor_variant | 8438 | 8238 | 200 | 0.81240 | 0.99205 | 0.01565 | 0.00245 |
23
+ | 5_prime_UTR_variant | 6609 | 68 | 6541 | 0.77156 | 0.23015 | 0.00891 | 0.00739 |
24
+ | inframe_deletion | 386 | 219 | 167 | 0.76963 | 0.80047 | 0.20247 | 0.08748 |
25
+ | initiator_codon_variant | 713 | 615 | 98 | 0.74360 | 0.93131 | 0.09672 | 0.04770 |
26
+ | intron_variant | 153601 | 951 | 152650 | 0.73241 | 0.03627 | 0.00619 | 0.00863 |
27
+ | frameshift_variant | 38296 | 37947 | 349 | 0.72617 | 0.99567 | 0.00786 | 0.00094 |
28
+ | nonsense | 22375 | 22034 | 341 | 0.70115 | 0.99182 | 0.01238 | 0.00779 |
29
+ | splice_acceptor_variant | 7209 | 7081 | 128 | 0.70025 | 0.98999 | 0.01468 | 0.00421 |
30
+ | synonymous_variant | 163995 | 121 | 163874 | 0.64395 | 0.00175 | 0.00074 | 0.00078 |
31
+
32
+ ## Table 3. External Comparator, All-Variant Overlap
33
+
34
+ Caption: First-appearance temporal overlap where Project 1 external annotations exist; AlphaMissense/REVEL coverage is limited by design.
35
+
36
+ | Model | N | AUROC | AUPRC | Brier |
37
+ |---|---:|---:|---:|---:|
38
+ | score_model v0 | 27850 | 0.98520 | 0.98167 | 0.04545 |
39
+ | CADD PHRED | 27850 | 0.99209 | 0.99086 | 0.18824 |
40
+ | AlphaMissense | 4988 | 0.97183 | 0.98189 | 0.07705 |
41
+ | REVEL | 6275 | 0.95642 | 0.97127 | 0.09579 |
42
+
43
+ ## Table 4. External Comparator, Missense-Only
44
+
45
+ Caption: First-appearance temporal missense-only comparison; AlphaMissense and REVEL are missense-oriented predictors.
46
+
47
+ | Model | N | AUROC | AUPRC | Brier |
48
+ |---|---:|---:|---:|---:|
49
+ | score_model v0 | 5220 | 0.78497 | 0.83876 | 0.18825 |
50
+ | missense v1 | 5018 | 0.83644 | 0.87361 | 0.20575 |
51
+ | CADD PHRED | 5220 | 0.94829 | 0.95653 | 0.15822 |
52
+ | AlphaMissense | 4965 | 0.97209 | 0.98214 | 0.07687 |
53
+ | REVEL | 5140 | 0.97769 | 0.98612 | 0.06937 |
54
+
55
+ ## Table 5. Qwen v0.1 vs Llama v0.2 Report Generation
56
+
57
+ Caption: Structured report-generation comparison; see source comparison report for full details.
58
+
59
+ # KAUBioMED-LLM Qwen v0.1 vs Llama v0.2 Comparison
60
+
61
+ Date: 2026-06-15
62
+
63
+ ## Scientific Position
64
+
65
+ This comparison evaluates two KAUBioMED-LLM report-generation models under the same score-schema and guarded-report framework. The current kaubiomed_score remains an evidence-label score for report organization, not a leakage-free calibrated pathogenicity probability.
66
+
67
+ ## Summary Table
68
+
69
+ | Metric | Qwen v0.1 | Llama v0.2 |
70
+ |---|---:|---:|
71
+ | Base model | Qwen2.5-1.5B-Instruct | Llama-3.1-8B-Instruct |
72
+ | Base/snapshot size | 2.89 GB | 29.93 GB |
73
+ | Adapter path | models/kaubiomed_qwen2p5_1p5b_lora_calibrated | models/kaubiomed_llama31_8b_lora_score_schema |
74
+ | Adapter size | 304.0 MB | 1.14 GB |
75
+ | Training records | 910 | 910 |
76
+ | Validation records | 101 | 101 |
77
+ | Epochs | 1 | 2 |
78
+ | Train loss | 0.0475554999552275 | 0.22699994018726183 |
79
+ | Eval loss | 0.04750876873731613 | 0.0603446401655674 |
80
+ | 50-example raw strict JSON | not separately measured for calibrated Qwen | 50/50 (1.0) |
81
+ | Fresh strict valid | 5/5 | 5/5 |
82
+ | Fresh repaired records | NA | 0 |
83
+ | Citation guard pass | 5/5 | 5/5 |
84
+ | Structure mapping OK | 1/5 | 1/5 |
85
+ | Structure abstained | 4 | 4 |
86
+ | Fresh inference runtime | not consistently recorded in final Qwen summary | 114.12 sec |
87
+
88
+ ## Interpretation
89
+
90
+ - Qwen v0.1 remains the lightweight reproducible prototype baseline.
91
+ - Llama v0.2 is the stronger structured-output candidate: it achieved 50/50 raw strict JSON on validation and 5/5 raw strict JSON on fresh variants without repair.
92
+ - Both models pass citation and abstention guards on the 5 fresh reports.
93
+ - Structure behavior is identical because structure mapping is evidence-layer dependent, not base-model dependent: 1/5 fresh variants map to a reconciled missense residue; 4/5 correctly abstain.
94
+ - Llama is larger and more expensive, so it should be positioned as a stronger v0.2 candidate rather than simply replacing Qwen without cost discussion.
95
+
96
+ ## Recommendation
97
+
98
+ Use Qwen v0.1 as the lightweight baseline and Llama v0.2 as the preferred high-capability report-generation model. The next scientific step is not another base-model swap; it is the leakage-free score_model and temporal validation benchmark.
99
+
100
+ ## Required Next Work
101
+
102
+ 1. Build label-free feature tables without ClinVar-derived prompt labels.
103
+ 2. Train a separate score model on clean features.
104
+ 3. Run temporal ClinVar validation with AUROC, AUPRC, Brier, and ECE.
105
+ 4. Add the benchmark results to the manuscript and model card.
106
+