From 5317ba3ed0c01b6de012a84da6c97ea0ea1d56d1 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Fri, 19 Jun 2026 06:52:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: abhaybhargav/PWNISMS-Threat-Model-Structured Source: Original Platform --- .gitattributes | 38 ++ LICENSE | 208 ++++++++ PWNISMS-Threat-Model-Structured-F16.gguf | 3 + PWNISMS-Threat-Model-Structured-Q4_K_M.gguf | 3 + README.md | 132 +++++ chat_template.jinja | 54 +++ config.json | 30 ++ examples/sample_scenario.md | 23 + generation_config.json | 14 + model.safetensors | 3 + model.safetensors.index.json | 346 ++++++++++++++ threat_model_schema.json | 504 ++++++++++++++++++++ tokenizer.json | 3 + tokenizer_config.json | 31 ++ 14 files changed, 1392 insertions(+) create mode 100644 .gitattributes create mode 100644 LICENSE create mode 100644 PWNISMS-Threat-Model-Structured-F16.gguf create mode 100644 PWNISMS-Threat-Model-Structured-Q4_K_M.gguf create mode 100644 README.md create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 examples/sample_scenario.md create mode 100644 generation_config.json create mode 100644 model.safetensors create mode 100644 model.safetensors.index.json create mode 100644 threat_model_schema.json create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..e1fc86f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,38 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text +PWNISMS-Threat-Model-Structured-F16.gguf filter=lfs diff=lfs merge=lfs -text +PWNISMS-Threat-Model-Structured-Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b782060 --- /dev/null +++ b/LICENSE @@ -0,0 +1,208 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--- + +Derivative work notice: This model is a fine-tuned derivative of +Qwen/Qwen2.5-1.5B-Instruct (https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct), +released under the Apache License, Version 2.0. Modifications: LoRA +fine-tuning and weight fusion for structured PWNISMS threat-model JSON output. diff --git a/PWNISMS-Threat-Model-Structured-F16.gguf b/PWNISMS-Threat-Model-Structured-F16.gguf new file mode 100644 index 0000000..c221d9b --- /dev/null +++ b/PWNISMS-Threat-Model-Structured-F16.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc605efdd5d725e8f00c1c3fe4084f054d6090bb54f61ca4b12aad77f820269c +size 3093669376 diff --git a/PWNISMS-Threat-Model-Structured-Q4_K_M.gguf b/PWNISMS-Threat-Model-Structured-Q4_K_M.gguf new file mode 100644 index 0000000..4b6512e --- /dev/null +++ b/PWNISMS-Threat-Model-Structured-Q4_K_M.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:580a725bb5ffb8689490b9f0f6649cd519902d0177b083535a975cde6537666e +size 986048512 diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9598eb --- /dev/null +++ b/README.md @@ -0,0 +1,132 @@ +--- +license: apache-2.0 +license_link: https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct/blob/main/LICENSE +language: +- en +pipeline_tag: text-generation +base_model: Qwen/Qwen2.5-1.5B-Instruct +tags: +- chat +- mlx +- gguf +- llama.cpp +- ollama +- security +- threat-modeling +- structured-output +- json +library_name: mlx +--- + +# PWNISMS-Threat-Model-Structured + +Fused [MLX](https://github.com/ml-explore/mlx) and GGUF releases of **Qwen2.5-1.5B-Instruct** fine-tuned to emit **valid JSON** matching a **PWNISMS** structured threat model (seven domains: Product, Workload, Network, IAM, Secrets, Monitoring, SupplyChain), with optional STRIDE cross-tags and concrete mitigations. + +## Base Model And License + +- **Base:** [`Qwen/Qwen2.5-1.5B-Instruct`](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) (Apache-2.0). +- This release is a **derivative work** of the base model. The base license applies; retain notices and state modifications as required by Apache-2.0. See [`LICENSE`](LICENSE). + +## Training Summary + +- **Method:** LoRA fine-tuning on MLX (`mlx_lm`), then fused into a single checkpoint. +- **Base:** `Qwen/Qwen2.5-1.5B-Instruct` +- **LoRA:** rank 8, scale 20, 16 layers, max sequence length 10240, 1200 iterations. +- **GGUF conversion:** llama.cpp `convert_hf_to_gguf.py`, plus Q4_K_M quantization with `llama-quantize`. + +## Output Contract + +The model is trained to answer with **JSON only** for a chat shaped as: + +- **System:** PWNISMS architect instructions requiring all seven domains, concrete mitigations, and scenario-grounded components. +- **User:** Markdown system description. + +The expected object is defined by the included [`threat_model_schema.json`](threat_model_schema.json). + +**Minimum bar:** at least **5** threats, exactly **7** `pwnisms_coverage` entries, and each threat id must appear under its domain’s `threat_ids`. + +## Limitations And Evaluation + +Internal pulse check (n=20 held-out style samples, local script): **16/20** parse as JSON, **12/20** pass full Pydantic validation, and **12/20** cover all seven domains with the schema. Real deployments should validate outputs with Pydantic or JSON Schema and never treat this model as a substitute for expert review. + +Long scenarios can need **up to ~12k output tokens**; lower caps may truncate JSON. + +## Load And Generate (MLX) + +```python +from mlx_lm import load, generate + +model, tokenizer = load("abhaybhargav/PWNISMS-Threat-Model-Structured") + +system = """You are a senior security architect. Produce a PWNISMS threat model for the described system. +Address all seven PWNISMS domains: Product, Workload, Network, IAM, Secrets, Monitoring, SupplyChain. +Mitigations must reference concrete technologies, configurations, or processes. +Return only valid JSON matching the required schema.""" + +user = open("scenario.md").read() +messages = [{"role": "system", "content": system}, {"role": "user", "content": user}] +prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False) +text = generate(model, tokenizer, prompt=prompt, max_tokens=12000, verbose=False) +print(text) +``` + +## Load And Generate (GGUF / llama.cpp) + +Recommended default: + +- `PWNISMS-Threat-Model-Structured-Q4_K_M.gguf` (~940MB): broad local compatibility, much smaller than F16. + +Reference precision: + +- `PWNISMS-Threat-Model-Structured-F16.gguf` (~2.9GB): F16 GGUF export. + +Example with llama.cpp: + +```bash +llama-cli \ + -m PWNISMS-Threat-Model-Structured-Q4_K_M.gguf \ + --ctx-size 12000 \ + --temp 0.2 \ + -p '<|im_start|>system +You are a senior security architect. Produce a PWNISMS threat model for the described system. +Address all seven PWNISMS domains: Product, Workload, Network, IAM, Secrets, Monitoring, SupplyChain. +Mitigations must reference concrete technologies, configurations, or processes. +Return only valid JSON matching the required schema.<|im_end|> +<|im_start|>user +<|im_end|> +<|im_start|>assistant +' +``` + +## Ollama + +Create a `Modelfile` next to the downloaded GGUF: + +```text +FROM ./PWNISMS-Threat-Model-Structured-Q4_K_M.gguf +PARAMETER temperature 0.2 +PARAMETER num_ctx 12000 +TEMPLATE """{{ .Prompt }}""" +``` + +Then run: + +```bash +ollama create pwnisms-threat-model-structured -f Modelfile +ollama run pwnisms-threat-model-structured +``` + +## Files + +| File | Purpose | +|------|---------| +| `model.safetensors` | Fused MLX/HF-format weights | +| `PWNISMS-Threat-Model-Structured-Q4_K_M.gguf` | Quantized GGUF for llama.cpp/Ollama/local tools | +| `PWNISMS-Threat-Model-Structured-F16.gguf` | F16 GGUF reference export | +| `config.json`, `tokenizer.json`, `tokenizer_config.json`, `chat_template.jinja` | Model + tokenizer | +| `threat_model_schema.json` | JSON Schema for outputs | +| `examples/sample_scenario.md` | Tiny example input shape | + +## Intended Use + +This model is intended to assist application and security architects in drafting structured PWNISMS threat models from system descriptions. It is not a formal risk decision engine and should be reviewed by humans before use in production assurance, audit, or compliance workflows. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..bdf7919 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,54 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0]['role'] == 'system' %} + {{- messages[0]['content'] }} + {%- else %} + {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }} + {%- endif %} + {{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0]['role'] == 'system' %} + {{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }} + {%- else %} + {{- '<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {{- '<|im_start|>' + message.role }} + {%- if message.content %} + {{- '\n' + message.content }} + {%- endif %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {{- tool_call.arguments | tojson }} + {{- '}\n' }} + {%- endfor %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- message.content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} +{%- endif %} diff --git a/config.json b/config.json new file mode 100644 index 0000000..d8cc8ce --- /dev/null +++ b/config.json @@ -0,0 +1,30 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "eos_token_id": [ + 151645, + 151643 + ], + "hidden_act": "silu", + "hidden_size": 1536, + "initializer_range": 0.02, + "intermediate_size": 8960, + "max_position_embeddings": 32768, + "max_window_layers": 21, + "model_type": "qwen2", + "num_attention_heads": 12, + "num_hidden_layers": 28, + "num_key_value_heads": 2, + "rms_norm_eps": 1e-06, + "rope_theta": 1000000.0, + "sliding_window": 32768, + "tie_word_embeddings": true, + "torch_dtype": "bfloat16", + "transformers_version": "4.43.1", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 151936 +} \ No newline at end of file diff --git a/examples/sample_scenario.md b/examples/sample_scenario.md new file mode 100644 index 0000000..c4e8c0d --- /dev/null +++ b/examples/sample_scenario.md @@ -0,0 +1,23 @@ +# Example scenario (excerpt) + +Use a full system description in markdown: components, data flows, users, compliance, and trust boundaries. The model responds with a single JSON object (no code fences) matching `threat_model_schema.json`. + +This file is illustrative; replace with your own scenario text. + +## Sample title + +A minimal API service that issues OAuth tokens to internal services behind mTLS. + +## Application Information + +- REST API on AWS Lambda behind API Gateway +- Tokens signed with an AWS KMS key; rotation weekly +- Audit logs to CloudWatch + +## Users + +- Internal service principals only (no public internet clients) + +## Compliance + +- SOC 2 diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..dfc1107 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "bos_token_id": 151643, + "pad_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "repetition_penalty": 1.1, + "temperature": 0.7, + "top_p": 0.8, + "top_k": 20, + "transformers_version": "4.37.0" +} diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..88c8dee --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cc8b858e1065f695ebb537969b61dd416e9b438e1ad36a6a90340369ca61f2e +size 3087467005 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000..36ed6c9 --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,346 @@ +{ + "metadata": { + "total_size": 3087428608, + "total_parameters": 1543714304 + }, + "weight_map": { + "model.embed_tokens.weight": "model.safetensors", + "model.layers.0.input_layernorm.weight": "model.safetensors", + "model.layers.0.mlp.down_proj.weight": "model.safetensors", + "model.layers.0.mlp.gate_proj.weight": "model.safetensors", + "model.layers.0.mlp.up_proj.weight": "model.safetensors", + "model.layers.0.post_attention_layernorm.weight": "model.safetensors", + "model.layers.0.self_attn.k_proj.bias": "model.safetensors", + "model.layers.0.self_attn.k_proj.weight": "model.safetensors", + "model.layers.0.self_attn.o_proj.weight": "model.safetensors", + "model.layers.0.self_attn.q_proj.bias": "model.safetensors", + "model.layers.0.self_attn.q_proj.weight": "model.safetensors", + "model.layers.0.self_attn.v_proj.bias": "model.safetensors", + "model.layers.0.self_attn.v_proj.weight": "model.safetensors", + "model.layers.1.input_layernorm.weight": "model.safetensors", + "model.layers.1.mlp.down_proj.weight": "model.safetensors", + "model.layers.1.mlp.gate_proj.weight": "model.safetensors", + "model.layers.1.mlp.up_proj.weight": "model.safetensors", + "model.layers.1.post_attention_layernorm.weight": "model.safetensors", + "model.layers.1.self_attn.k_proj.bias": "model.safetensors", + "model.layers.1.self_attn.k_proj.weight": "model.safetensors", + "model.layers.1.self_attn.o_proj.weight": "model.safetensors", + "model.layers.1.self_attn.q_proj.bias": "model.safetensors", + "model.layers.1.self_attn.q_proj.weight": "model.safetensors", + "model.layers.1.self_attn.v_proj.bias": "model.safetensors", + "model.layers.1.self_attn.v_proj.weight": "model.safetensors", + "model.layers.10.input_layernorm.weight": "model.safetensors", + "model.layers.10.mlp.down_proj.weight": "model.safetensors", + "model.layers.10.mlp.gate_proj.weight": "model.safetensors", + "model.layers.10.mlp.up_proj.weight": "model.safetensors", + "model.layers.10.post_attention_layernorm.weight": "model.safetensors", + "model.layers.10.self_attn.k_proj.bias": "model.safetensors", + "model.layers.10.self_attn.k_proj.weight": "model.safetensors", + "model.layers.10.self_attn.o_proj.weight": "model.safetensors", + "model.layers.10.self_attn.q_proj.bias": "model.safetensors", + "model.layers.10.self_attn.q_proj.weight": "model.safetensors", + "model.layers.10.self_attn.v_proj.bias": "model.safetensors", + "model.layers.10.self_attn.v_proj.weight": "model.safetensors", + "model.layers.11.input_layernorm.weight": "model.safetensors", + "model.layers.11.mlp.down_proj.weight": "model.safetensors", + "model.layers.11.mlp.gate_proj.weight": "model.safetensors", + "model.layers.11.mlp.up_proj.weight": "model.safetensors", + "model.layers.11.post_attention_layernorm.weight": "model.safetensors", + "model.layers.11.self_attn.k_proj.bias": "model.safetensors", + "model.layers.11.self_attn.k_proj.weight": "model.safetensors", + "model.layers.11.self_attn.o_proj.weight": "model.safetensors", + "model.layers.11.self_attn.q_proj.bias": "model.safetensors", + "model.layers.11.self_attn.q_proj.weight": "model.safetensors", + "model.layers.11.self_attn.v_proj.bias": "model.safetensors", + "model.layers.11.self_attn.v_proj.weight": "model.safetensors", + "model.layers.12.input_layernorm.weight": "model.safetensors", + "model.layers.12.mlp.down_proj.weight": "model.safetensors", + "model.layers.12.mlp.gate_proj.weight": "model.safetensors", + "model.layers.12.mlp.up_proj.weight": "model.safetensors", + "model.layers.12.post_attention_layernorm.weight": "model.safetensors", + "model.layers.12.self_attn.k_proj.bias": "model.safetensors", + "model.layers.12.self_attn.k_proj.weight": "model.safetensors", + "model.layers.12.self_attn.o_proj.weight": "model.safetensors", + "model.layers.12.self_attn.q_proj.bias": "model.safetensors", + "model.layers.12.self_attn.q_proj.weight": "model.safetensors", + "model.layers.12.self_attn.v_proj.bias": "model.safetensors", + "model.layers.12.self_attn.v_proj.weight": "model.safetensors", + "model.layers.13.input_layernorm.weight": "model.safetensors", + "model.layers.13.mlp.down_proj.weight": "model.safetensors", + "model.layers.13.mlp.gate_proj.weight": "model.safetensors", + "model.layers.13.mlp.up_proj.weight": "model.safetensors", + "model.layers.13.post_attention_layernorm.weight": "model.safetensors", + "model.layers.13.self_attn.k_proj.bias": "model.safetensors", + "model.layers.13.self_attn.k_proj.weight": "model.safetensors", + "model.layers.13.self_attn.o_proj.weight": "model.safetensors", + "model.layers.13.self_attn.q_proj.bias": "model.safetensors", + "model.layers.13.self_attn.q_proj.weight": "model.safetensors", + "model.layers.13.self_attn.v_proj.bias": "model.safetensors", + "model.layers.13.self_attn.v_proj.weight": "model.safetensors", + "model.layers.14.input_layernorm.weight": "model.safetensors", + "model.layers.14.mlp.down_proj.weight": "model.safetensors", + "model.layers.14.mlp.gate_proj.weight": "model.safetensors", + "model.layers.14.mlp.up_proj.weight": "model.safetensors", + "model.layers.14.post_attention_layernorm.weight": "model.safetensors", + "model.layers.14.self_attn.k_proj.bias": "model.safetensors", + "model.layers.14.self_attn.k_proj.weight": "model.safetensors", + "model.layers.14.self_attn.o_proj.weight": "model.safetensors", + "model.layers.14.self_attn.q_proj.bias": "model.safetensors", + "model.layers.14.self_attn.q_proj.weight": "model.safetensors", + "model.layers.14.self_attn.v_proj.bias": "model.safetensors", + "model.layers.14.self_attn.v_proj.weight": "model.safetensors", + "model.layers.15.input_layernorm.weight": "model.safetensors", + "model.layers.15.mlp.down_proj.weight": "model.safetensors", + "model.layers.15.mlp.gate_proj.weight": "model.safetensors", + "model.layers.15.mlp.up_proj.weight": "model.safetensors", + "model.layers.15.post_attention_layernorm.weight": "model.safetensors", + "model.layers.15.self_attn.k_proj.bias": "model.safetensors", + "model.layers.15.self_attn.k_proj.weight": "model.safetensors", + "model.layers.15.self_attn.o_proj.weight": "model.safetensors", + "model.layers.15.self_attn.q_proj.bias": "model.safetensors", + "model.layers.15.self_attn.q_proj.weight": "model.safetensors", + "model.layers.15.self_attn.v_proj.bias": "model.safetensors", + "model.layers.15.self_attn.v_proj.weight": "model.safetensors", + "model.layers.16.input_layernorm.weight": "model.safetensors", + "model.layers.16.mlp.down_proj.weight": "model.safetensors", + "model.layers.16.mlp.gate_proj.weight": "model.safetensors", + "model.layers.16.mlp.up_proj.weight": "model.safetensors", + "model.layers.16.post_attention_layernorm.weight": "model.safetensors", + "model.layers.16.self_attn.k_proj.bias": "model.safetensors", + "model.layers.16.self_attn.k_proj.weight": "model.safetensors", + "model.layers.16.self_attn.o_proj.weight": "model.safetensors", + "model.layers.16.self_attn.q_proj.bias": "model.safetensors", + "model.layers.16.self_attn.q_proj.weight": "model.safetensors", + "model.layers.16.self_attn.v_proj.bias": "model.safetensors", + "model.layers.16.self_attn.v_proj.weight": "model.safetensors", + "model.layers.17.input_layernorm.weight": "model.safetensors", + "model.layers.17.mlp.down_proj.weight": "model.safetensors", + "model.layers.17.mlp.gate_proj.weight": "model.safetensors", + "model.layers.17.mlp.up_proj.weight": "model.safetensors", + "model.layers.17.post_attention_layernorm.weight": "model.safetensors", + "model.layers.17.self_attn.k_proj.bias": "model.safetensors", + "model.layers.17.self_attn.k_proj.weight": "model.safetensors", + "model.layers.17.self_attn.o_proj.weight": "model.safetensors", + "model.layers.17.self_attn.q_proj.bias": "model.safetensors", + "model.layers.17.self_attn.q_proj.weight": "model.safetensors", + "model.layers.17.self_attn.v_proj.bias": "model.safetensors", + "model.layers.17.self_attn.v_proj.weight": "model.safetensors", + "model.layers.18.input_layernorm.weight": "model.safetensors", + "model.layers.18.mlp.down_proj.weight": "model.safetensors", + "model.layers.18.mlp.gate_proj.weight": "model.safetensors", + "model.layers.18.mlp.up_proj.weight": "model.safetensors", + "model.layers.18.post_attention_layernorm.weight": "model.safetensors", + "model.layers.18.self_attn.k_proj.bias": "model.safetensors", + "model.layers.18.self_attn.k_proj.weight": "model.safetensors", + "model.layers.18.self_attn.o_proj.weight": "model.safetensors", + "model.layers.18.self_attn.q_proj.bias": "model.safetensors", + "model.layers.18.self_attn.q_proj.weight": "model.safetensors", + "model.layers.18.self_attn.v_proj.bias": "model.safetensors", + "model.layers.18.self_attn.v_proj.weight": "model.safetensors", + "model.layers.19.input_layernorm.weight": "model.safetensors", + "model.layers.19.mlp.down_proj.weight": "model.safetensors", + "model.layers.19.mlp.gate_proj.weight": "model.safetensors", + "model.layers.19.mlp.up_proj.weight": "model.safetensors", + "model.layers.19.post_attention_layernorm.weight": "model.safetensors", + "model.layers.19.self_attn.k_proj.bias": "model.safetensors", + "model.layers.19.self_attn.k_proj.weight": "model.safetensors", + "model.layers.19.self_attn.o_proj.weight": "model.safetensors", + "model.layers.19.self_attn.q_proj.bias": "model.safetensors", + "model.layers.19.self_attn.q_proj.weight": "model.safetensors", + "model.layers.19.self_attn.v_proj.bias": "model.safetensors", + "model.layers.19.self_attn.v_proj.weight": "model.safetensors", + "model.layers.2.input_layernorm.weight": "model.safetensors", + "model.layers.2.mlp.down_proj.weight": "model.safetensors", + "model.layers.2.mlp.gate_proj.weight": "model.safetensors", + "model.layers.2.mlp.up_proj.weight": "model.safetensors", + "model.layers.2.post_attention_layernorm.weight": "model.safetensors", + "model.layers.2.self_attn.k_proj.bias": "model.safetensors", + "model.layers.2.self_attn.k_proj.weight": "model.safetensors", + "model.layers.2.self_attn.o_proj.weight": "model.safetensors", + "model.layers.2.self_attn.q_proj.bias": "model.safetensors", + "model.layers.2.self_attn.q_proj.weight": "model.safetensors", + "model.layers.2.self_attn.v_proj.bias": "model.safetensors", + "model.layers.2.self_attn.v_proj.weight": "model.safetensors", + "model.layers.20.input_layernorm.weight": "model.safetensors", + "model.layers.20.mlp.down_proj.weight": "model.safetensors", + "model.layers.20.mlp.gate_proj.weight": "model.safetensors", + "model.layers.20.mlp.up_proj.weight": "model.safetensors", + "model.layers.20.post_attention_layernorm.weight": "model.safetensors", + "model.layers.20.self_attn.k_proj.bias": "model.safetensors", + "model.layers.20.self_attn.k_proj.weight": "model.safetensors", + "model.layers.20.self_attn.o_proj.weight": "model.safetensors", + "model.layers.20.self_attn.q_proj.bias": "model.safetensors", + "model.layers.20.self_attn.q_proj.weight": "model.safetensors", + "model.layers.20.self_attn.v_proj.bias": "model.safetensors", + "model.layers.20.self_attn.v_proj.weight": "model.safetensors", + "model.layers.21.input_layernorm.weight": "model.safetensors", + "model.layers.21.mlp.down_proj.weight": "model.safetensors", + "model.layers.21.mlp.gate_proj.weight": "model.safetensors", + "model.layers.21.mlp.up_proj.weight": "model.safetensors", + "model.layers.21.post_attention_layernorm.weight": "model.safetensors", + "model.layers.21.self_attn.k_proj.bias": "model.safetensors", + "model.layers.21.self_attn.k_proj.weight": "model.safetensors", + "model.layers.21.self_attn.o_proj.weight": "model.safetensors", + "model.layers.21.self_attn.q_proj.bias": "model.safetensors", + "model.layers.21.self_attn.q_proj.weight": "model.safetensors", + "model.layers.21.self_attn.v_proj.bias": "model.safetensors", + "model.layers.21.self_attn.v_proj.weight": "model.safetensors", + "model.layers.22.input_layernorm.weight": "model.safetensors", + "model.layers.22.mlp.down_proj.weight": "model.safetensors", + "model.layers.22.mlp.gate_proj.weight": "model.safetensors", + "model.layers.22.mlp.up_proj.weight": "model.safetensors", + "model.layers.22.post_attention_layernorm.weight": "model.safetensors", + "model.layers.22.self_attn.k_proj.bias": "model.safetensors", + "model.layers.22.self_attn.k_proj.weight": "model.safetensors", + "model.layers.22.self_attn.o_proj.weight": "model.safetensors", + "model.layers.22.self_attn.q_proj.bias": "model.safetensors", + "model.layers.22.self_attn.q_proj.weight": "model.safetensors", + "model.layers.22.self_attn.v_proj.bias": "model.safetensors", + "model.layers.22.self_attn.v_proj.weight": "model.safetensors", + "model.layers.23.input_layernorm.weight": "model.safetensors", + "model.layers.23.mlp.down_proj.weight": "model.safetensors", + "model.layers.23.mlp.gate_proj.weight": "model.safetensors", + "model.layers.23.mlp.up_proj.weight": "model.safetensors", + "model.layers.23.post_attention_layernorm.weight": "model.safetensors", + "model.layers.23.self_attn.k_proj.bias": "model.safetensors", + "model.layers.23.self_attn.k_proj.weight": "model.safetensors", + "model.layers.23.self_attn.o_proj.weight": "model.safetensors", + "model.layers.23.self_attn.q_proj.bias": "model.safetensors", + "model.layers.23.self_attn.q_proj.weight": "model.safetensors", + "model.layers.23.self_attn.v_proj.bias": "model.safetensors", + "model.layers.23.self_attn.v_proj.weight": "model.safetensors", + "model.layers.24.input_layernorm.weight": "model.safetensors", + "model.layers.24.mlp.down_proj.weight": "model.safetensors", + "model.layers.24.mlp.gate_proj.weight": "model.safetensors", + "model.layers.24.mlp.up_proj.weight": "model.safetensors", + "model.layers.24.post_attention_layernorm.weight": "model.safetensors", + "model.layers.24.self_attn.k_proj.bias": "model.safetensors", + "model.layers.24.self_attn.k_proj.weight": "model.safetensors", + "model.layers.24.self_attn.o_proj.weight": "model.safetensors", + "model.layers.24.self_attn.q_proj.bias": "model.safetensors", + "model.layers.24.self_attn.q_proj.weight": "model.safetensors", + "model.layers.24.self_attn.v_proj.bias": "model.safetensors", + "model.layers.24.self_attn.v_proj.weight": "model.safetensors", + "model.layers.25.input_layernorm.weight": "model.safetensors", + "model.layers.25.mlp.down_proj.weight": "model.safetensors", + "model.layers.25.mlp.gate_proj.weight": "model.safetensors", + "model.layers.25.mlp.up_proj.weight": "model.safetensors", + "model.layers.25.post_attention_layernorm.weight": "model.safetensors", + "model.layers.25.self_attn.k_proj.bias": "model.safetensors", + "model.layers.25.self_attn.k_proj.weight": "model.safetensors", + "model.layers.25.self_attn.o_proj.weight": "model.safetensors", + "model.layers.25.self_attn.q_proj.bias": "model.safetensors", + "model.layers.25.self_attn.q_proj.weight": "model.safetensors", + "model.layers.25.self_attn.v_proj.bias": "model.safetensors", + "model.layers.25.self_attn.v_proj.weight": "model.safetensors", + "model.layers.26.input_layernorm.weight": "model.safetensors", + "model.layers.26.mlp.down_proj.weight": "model.safetensors", + "model.layers.26.mlp.gate_proj.weight": "model.safetensors", + "model.layers.26.mlp.up_proj.weight": "model.safetensors", + "model.layers.26.post_attention_layernorm.weight": "model.safetensors", + "model.layers.26.self_attn.k_proj.bias": "model.safetensors", + "model.layers.26.self_attn.k_proj.weight": "model.safetensors", + "model.layers.26.self_attn.o_proj.weight": "model.safetensors", + "model.layers.26.self_attn.q_proj.bias": "model.safetensors", + "model.layers.26.self_attn.q_proj.weight": "model.safetensors", + "model.layers.26.self_attn.v_proj.bias": "model.safetensors", + "model.layers.26.self_attn.v_proj.weight": "model.safetensors", + "model.layers.27.input_layernorm.weight": "model.safetensors", + "model.layers.27.mlp.down_proj.weight": "model.safetensors", + "model.layers.27.mlp.gate_proj.weight": "model.safetensors", + "model.layers.27.mlp.up_proj.weight": "model.safetensors", + "model.layers.27.post_attention_layernorm.weight": "model.safetensors", + "model.layers.27.self_attn.k_proj.bias": "model.safetensors", + "model.layers.27.self_attn.k_proj.weight": "model.safetensors", + "model.layers.27.self_attn.o_proj.weight": "model.safetensors", + "model.layers.27.self_attn.q_proj.bias": "model.safetensors", + "model.layers.27.self_attn.q_proj.weight": "model.safetensors", + "model.layers.27.self_attn.v_proj.bias": "model.safetensors", + "model.layers.27.self_attn.v_proj.weight": "model.safetensors", + "model.layers.3.input_layernorm.weight": "model.safetensors", + "model.layers.3.mlp.down_proj.weight": "model.safetensors", + "model.layers.3.mlp.gate_proj.weight": "model.safetensors", + "model.layers.3.mlp.up_proj.weight": "model.safetensors", + "model.layers.3.post_attention_layernorm.weight": "model.safetensors", + "model.layers.3.self_attn.k_proj.bias": "model.safetensors", + "model.layers.3.self_attn.k_proj.weight": "model.safetensors", + "model.layers.3.self_attn.o_proj.weight": "model.safetensors", + "model.layers.3.self_attn.q_proj.bias": "model.safetensors", + "model.layers.3.self_attn.q_proj.weight": "model.safetensors", + "model.layers.3.self_attn.v_proj.bias": "model.safetensors", + "model.layers.3.self_attn.v_proj.weight": "model.safetensors", + "model.layers.4.input_layernorm.weight": "model.safetensors", + "model.layers.4.mlp.down_proj.weight": "model.safetensors", + "model.layers.4.mlp.gate_proj.weight": "model.safetensors", + "model.layers.4.mlp.up_proj.weight": "model.safetensors", + "model.layers.4.post_attention_layernorm.weight": "model.safetensors", + "model.layers.4.self_attn.k_proj.bias": "model.safetensors", + "model.layers.4.self_attn.k_proj.weight": "model.safetensors", + "model.layers.4.self_attn.o_proj.weight": "model.safetensors", + "model.layers.4.self_attn.q_proj.bias": "model.safetensors", + "model.layers.4.self_attn.q_proj.weight": "model.safetensors", + "model.layers.4.self_attn.v_proj.bias": "model.safetensors", + "model.layers.4.self_attn.v_proj.weight": "model.safetensors", + "model.layers.5.input_layernorm.weight": "model.safetensors", + "model.layers.5.mlp.down_proj.weight": "model.safetensors", + "model.layers.5.mlp.gate_proj.weight": "model.safetensors", + "model.layers.5.mlp.up_proj.weight": "model.safetensors", + "model.layers.5.post_attention_layernorm.weight": "model.safetensors", + "model.layers.5.self_attn.k_proj.bias": "model.safetensors", + "model.layers.5.self_attn.k_proj.weight": "model.safetensors", + "model.layers.5.self_attn.o_proj.weight": "model.safetensors", + "model.layers.5.self_attn.q_proj.bias": "model.safetensors", + "model.layers.5.self_attn.q_proj.weight": "model.safetensors", + "model.layers.5.self_attn.v_proj.bias": "model.safetensors", + "model.layers.5.self_attn.v_proj.weight": "model.safetensors", + "model.layers.6.input_layernorm.weight": "model.safetensors", + "model.layers.6.mlp.down_proj.weight": "model.safetensors", + "model.layers.6.mlp.gate_proj.weight": "model.safetensors", + "model.layers.6.mlp.up_proj.weight": "model.safetensors", + "model.layers.6.post_attention_layernorm.weight": "model.safetensors", + "model.layers.6.self_attn.k_proj.bias": "model.safetensors", + "model.layers.6.self_attn.k_proj.weight": "model.safetensors", + "model.layers.6.self_attn.o_proj.weight": "model.safetensors", + "model.layers.6.self_attn.q_proj.bias": "model.safetensors", + "model.layers.6.self_attn.q_proj.weight": "model.safetensors", + "model.layers.6.self_attn.v_proj.bias": "model.safetensors", + "model.layers.6.self_attn.v_proj.weight": "model.safetensors", + "model.layers.7.input_layernorm.weight": "model.safetensors", + "model.layers.7.mlp.down_proj.weight": "model.safetensors", + "model.layers.7.mlp.gate_proj.weight": "model.safetensors", + "model.layers.7.mlp.up_proj.weight": "model.safetensors", + "model.layers.7.post_attention_layernorm.weight": "model.safetensors", + "model.layers.7.self_attn.k_proj.bias": "model.safetensors", + "model.layers.7.self_attn.k_proj.weight": "model.safetensors", + "model.layers.7.self_attn.o_proj.weight": "model.safetensors", + "model.layers.7.self_attn.q_proj.bias": "model.safetensors", + "model.layers.7.self_attn.q_proj.weight": "model.safetensors", + "model.layers.7.self_attn.v_proj.bias": "model.safetensors", + "model.layers.7.self_attn.v_proj.weight": "model.safetensors", + "model.layers.8.input_layernorm.weight": "model.safetensors", + "model.layers.8.mlp.down_proj.weight": "model.safetensors", + "model.layers.8.mlp.gate_proj.weight": "model.safetensors", + "model.layers.8.mlp.up_proj.weight": "model.safetensors", + "model.layers.8.post_attention_layernorm.weight": "model.safetensors", + "model.layers.8.self_attn.k_proj.bias": "model.safetensors", + "model.layers.8.self_attn.k_proj.weight": "model.safetensors", + "model.layers.8.self_attn.o_proj.weight": "model.safetensors", + "model.layers.8.self_attn.q_proj.bias": "model.safetensors", + "model.layers.8.self_attn.q_proj.weight": "model.safetensors", + "model.layers.8.self_attn.v_proj.bias": "model.safetensors", + "model.layers.8.self_attn.v_proj.weight": "model.safetensors", + "model.layers.9.input_layernorm.weight": "model.safetensors", + "model.layers.9.mlp.down_proj.weight": "model.safetensors", + "model.layers.9.mlp.gate_proj.weight": "model.safetensors", + "model.layers.9.mlp.up_proj.weight": "model.safetensors", + "model.layers.9.post_attention_layernorm.weight": "model.safetensors", + "model.layers.9.self_attn.k_proj.bias": "model.safetensors", + "model.layers.9.self_attn.k_proj.weight": "model.safetensors", + "model.layers.9.self_attn.o_proj.weight": "model.safetensors", + "model.layers.9.self_attn.q_proj.bias": "model.safetensors", + "model.layers.9.self_attn.q_proj.weight": "model.safetensors", + "model.layers.9.self_attn.v_proj.bias": "model.safetensors", + "model.layers.9.self_attn.v_proj.weight": "model.safetensors", + "model.norm.weight": "model.safetensors" + } +} \ No newline at end of file diff --git a/threat_model_schema.json b/threat_model_schema.json new file mode 100644 index 0000000..014e44e --- /dev/null +++ b/threat_model_schema.json @@ -0,0 +1,504 @@ +{ + "$defs": { + "Asset": { + "properties": { + "id": { + "description": "Unique identifier, e.g. 'A-01'.", + "title": "Id", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "description": { + "title": "Description", + "type": "string" + }, + "classification": { + "$ref": "#/$defs/DataClassification" + }, + "location": { + "description": "Where stored/processed, e.g. 'RDS PostgreSQL', 'S3 bucket prod-lab-pdfs'.", + "title": "Location", + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "classification", + "location" + ], + "title": "Asset", + "type": "object" + }, + "DataClassification": { + "enum": [ + "Public", + "Internal", + "Confidential", + "Restricted" + ], + "title": "DataClassification", + "type": "string" + }, + "DataFlow": { + "properties": { + "id": { + "description": "Unique identifier, e.g. 'DF-01'.", + "title": "Id", + "type": "string" + }, + "source": { + "description": "Originating component.", + "title": "Source", + "type": "string" + }, + "destination": { + "description": "Receiving component.", + "title": "Destination", + "type": "string" + }, + "data_classification": { + "$ref": "#/$defs/DataClassification" + }, + "protocol": { + "description": "Concrete protocol, e.g. 'HTTPS', 'MQTT/TLS', 'gRPC', 'AMQP'.", + "title": "Protocol", + "type": "string" + }, + "crosses_boundary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ID of the TrustBoundary this flow crosses, if any.", + "title": "Crosses Boundary" + } + }, + "required": [ + "id", + "source", + "destination", + "data_classification", + "protocol" + ], + "title": "DataFlow", + "type": "object" + }, + "Mitigation": { + "properties": { + "description": { + "description": "Specific, actionable control. Must reference a concrete technology, configuration, or process \u2014 not a generic category. Bad: 'use encryption'. Good: 'enable TLS 1.3 with mutual auth on the MQTT broker using AWS IoT Core device certificates'.", + "minLength": 15, + "title": "Description", + "type": "string" + }, + "type": { + "$ref": "#/$defs/MitigationType" + }, + "priority": { + "$ref": "#/$defs/MitigationPriority" + }, + "references": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional references: OWASP/NIST/CIS control IDs or doc links.", + "title": "References" + } + }, + "required": [ + "description", + "type", + "priority" + ], + "title": "Mitigation", + "type": "object" + }, + "MitigationPriority": { + "enum": [ + "P0", + "P1", + "P2" + ], + "title": "MitigationPriority", + "type": "string" + }, + "MitigationType": { + "enum": [ + "Preventive", + "Detective", + "Corrective", + "Deterrent" + ], + "title": "MitigationType", + "type": "string" + }, + "PwnismsDomain": { + "description": "The seven PWNISMS domains. All seven must be addressed in every model.", + "enum": [ + "Product", + "Workload", + "Network", + "IAM", + "Secrets", + "Monitoring", + "SupplyChain" + ], + "title": "PwnismsDomain", + "type": "string" + }, + "PwnismsDomainCoverage": { + "properties": { + "domain": { + "$ref": "#/$defs/PwnismsDomain" + }, + "addressed": { + "description": "True if threats in this domain were identified; False if N/A.", + "title": "Addressed", + "type": "boolean" + }, + "threat_ids": { + "description": "IDs of threats belonging to this domain (if addressed=True).", + "items": { + "type": "string" + }, + "title": "Threat Ids", + "type": "array" + }, + "justification_if_not_applicable": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Required when addressed=False. Must explain why the domain is not relevant to this specific system. Never leave domains unaddressed without justification.", + "title": "Justification If Not Applicable" + } + }, + "required": [ + "domain", + "addressed" + ], + "title": "PwnismsDomainCoverage", + "type": "object" + }, + "RiskLevel": { + "enum": [ + "High", + "Medium", + "Low" + ], + "title": "RiskLevel", + "type": "string" + }, + "Scope": { + "properties": { + "in_scope": { + "description": "Components, flows, or features being threat-modeled.", + "items": { + "type": "string" + }, + "minItems": 1, + "title": "In Scope", + "type": "array" + }, + "out_of_scope": { + "description": "Explicitly excluded elements.", + "items": { + "type": "string" + }, + "title": "Out Of Scope", + "type": "array" + }, + "assumptions": { + "description": "Assumptions that, if invalidated, would change the model.", + "items": { + "type": "string" + }, + "title": "Assumptions", + "type": "array" + } + }, + "required": [ + "in_scope" + ], + "title": "Scope", + "type": "object" + }, + "SecurityObjective": { + "enum": [ + "Confidentiality", + "Integrity", + "Availability", + "Authenticity", + "NonRepudiation", + "Authorization", + "Privacy" + ], + "title": "SecurityObjective", + "type": "string" + }, + "StrideCategory": { + "description": "Optional STRIDE cross-categorization per threat.", + "enum": [ + "Spoofing", + "Tampering", + "Repudiation", + "InformationDisclosure", + "DenialOfService", + "ElevationOfPrivilege" + ], + "title": "StrideCategory", + "type": "string" + }, + "Threat": { + "properties": { + "id": { + "description": "Unique identifier, e.g. 'T-01'.", + "title": "Id", + "type": "string" + }, + "title": { + "description": "Short title of the threat.", + "maxLength": 120, + "title": "Title", + "type": "string" + }, + "pwnisms_domain": { + "$ref": "#/$defs/PwnismsDomain", + "description": "Primary PWNISMS domain this threat belongs to." + }, + "stride_category": { + "anyOf": [ + { + "$ref": "#/$defs/StrideCategory" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional STRIDE cross-categorization for this threat." + }, + "affected_component": { + "description": "The component under threat. Must be a component that appears in or is directly implied by the input system description \u2014 do not invent components not present in the scenario.", + "title": "Affected Component", + "type": "string" + }, + "affected_asset_ids": { + "description": "IDs of assets impacted (referencing Asset.id).", + "items": { + "type": "string" + }, + "title": "Affected Asset Ids", + "type": "array" + }, + "description": { + "description": "What could go wrong. 2\u20134 sentences, concrete and specific.", + "minLength": 50, + "title": "Description", + "type": "string" + }, + "attack_vector": { + "description": "How an attacker realistically exploits this threat.", + "minLength": 20, + "title": "Attack Vector", + "type": "string" + }, + "preconditions": { + "description": "What must be true for this threat to be exploitable.", + "items": { + "type": "string" + }, + "title": "Preconditions", + "type": "array" + }, + "security_objectives_violated": { + "items": { + "$ref": "#/$defs/SecurityObjective" + }, + "minItems": 1, + "title": "Security Objectives Violated", + "type": "array" + }, + "likelihood": { + "$ref": "#/$defs/RiskLevel" + }, + "likelihood_rationale": { + "minLength": 20, + "title": "Likelihood Rationale", + "type": "string" + }, + "impact": { + "$ref": "#/$defs/RiskLevel" + }, + "impact_rationale": { + "minLength": 20, + "title": "Impact Rationale", + "type": "string" + }, + "mitigations": { + "description": "At least one concrete mitigation per threat.", + "items": { + "$ref": "#/$defs/Mitigation" + }, + "minItems": 1, + "title": "Mitigations", + "type": "array" + }, + "residual_risk": { + "description": "Risk that remains after mitigations are applied.", + "title": "Residual Risk", + "type": "string" + } + }, + "required": [ + "id", + "title", + "pwnisms_domain", + "affected_component", + "description", + "attack_vector", + "security_objectives_violated", + "likelihood", + "likelihood_rationale", + "impact", + "impact_rationale", + "mitigations", + "residual_risk" + ], + "title": "Threat", + "type": "object" + }, + "TrustBoundary": { + "properties": { + "id": { + "description": "Unique identifier, e.g. 'TB-01'.", + "title": "Id", + "type": "string" + }, + "name": { + "description": "Short name, e.g. 'Internet to API Gateway'.", + "title": "Name", + "type": "string" + }, + "between": { + "description": "The two sides of the boundary: [outside, inside].", + "items": { + "type": "string" + }, + "maxItems": 2, + "minItems": 2, + "title": "Between", + "type": "array" + }, + "description": { + "title": "Description", + "type": "string" + } + }, + "required": [ + "id", + "name", + "between", + "description" + ], + "title": "TrustBoundary", + "type": "object" + } + }, + "description": "A PWNISMS threat model for the system described in the input scenario.\n\nFill every field. Every one of the seven PWNISMS domains must appear in\n`pwnisms_coverage` \u2014 either with threats, or with an explicit N/A\njustification. No silent omissions.", + "properties": { + "system_summary": { + "description": "2\u20134 sentence summary of the system being threat-modeled.", + "maxLength": 800, + "minLength": 50, + "title": "System Summary", + "type": "string" + }, + "scope": { + "$ref": "#/$defs/Scope" + }, + "assets": { + "description": "Named information/system assets worth protecting.", + "items": { + "$ref": "#/$defs/Asset" + }, + "title": "Assets", + "type": "array" + }, + "trust_boundaries": { + "description": "At least one trust boundary must be identified.", + "items": { + "$ref": "#/$defs/TrustBoundary" + }, + "minItems": 1, + "title": "Trust Boundaries", + "type": "array" + }, + "data_flows": { + "description": "Key data flows, especially those crossing trust boundaries.", + "items": { + "$ref": "#/$defs/DataFlow" + }, + "title": "Data Flows", + "type": "array" + }, + "threats": { + "description": "Identified threats. Typical count: 8\u201325 depending on system complexity. Each threat must be tagged with a PWNISMS domain.", + "items": { + "$ref": "#/$defs/Threat" + }, + "minItems": 5, + "title": "Threats", + "type": "array" + }, + "pwnisms_coverage": { + "description": "One entry per PWNISMS domain. All seven domains must be present. Domains without identified threats must carry an explicit justification for why they do not apply to this system.", + "items": { + "$ref": "#/$defs/PwnismsDomainCoverage" + }, + "title": "Pwnisms Coverage", + "type": "array" + }, + "open_questions": { + "description": "Ambiguities or missing information in the scenario that would materially affect the threat model if resolved.", + "items": { + "type": "string" + }, + "title": "Open Questions", + "type": "array" + } + }, + "required": [ + "system_summary", + "scope", + "trust_boundaries", + "threats", + "pwnisms_coverage" + ], + "title": "ThreatModel", + "type": "object" +} diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..34510ff --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8 +size 11421892 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..0cf1c38 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,31 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "is_local": true, + "local_files_only": false, + "model_max_length": 131072, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "tool_parser_type": "json_tools", + "unk_token": null +}