commit d2d5e26add10dce7758f6e2c1470a8cdb51dfce5 Author: ModelHub XC Date: Mon Jul 20 15:38:10 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: sabari2005/cyberslm-33m-instruct Source: Original Platform diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..a6344aa --- /dev/null +++ b/.gitattributes @@ -0,0 +1,35 @@ +*.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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..24c93c4 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +--- +license: apache-2.0 +language: +- en +pipeline_tag: text-generation +library_name: transformers +base_model: sabari2005/cyberslm-33m-base +tags: +- cybersecurity +- small-language-model +- instruct +- sft +- llama +--- + +# CyberSLM-33M-Instruct + +Instruction-tuned version of +[`cyberslm-33m-base`](https://huggingface.co/sabari2005/cyberslm-33m-base) — +a **33.5M-parameter cybersecurity-focused small language model** trained from +scratch, then supervised-finetuned on **24,980 cybersecurity Q&A +conversations** with loss masking on assistant tokens only. + +## Architecture + +Decoder-only transformer (Llama-style, loadable with `LlamaForCausalLM`): +384 hidden / 12 layers / 6 heads / SwiGLU 1024 / RMSNorm / RoPE θ=10,000 / +4096 context / 32k SentencePiece vocab / tied embeddings. +Total: 33,531,264 parameters. + +## Chat format + +The model was finetuned with this template (built into `tokenizer.chat_template`): + +``` +### User: +{question} + +### Assistant: +{answer} +``` + +## Usage + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer + +tok = AutoTokenizer.from_pretrained("sabari2005/cyberslm-33m-instruct") +model = AutoModelForCausalLM.from_pretrained("sabari2005/cyberslm-33m-instruct") + +messages = [{"role": "user", "content": "Explain what a SQL injection attack is and how to prevent it."}] +ids = tok.apply_chat_template(messages, add_generation_prompt=True, + return_tensors="pt", add_special_tokens=False) +out = model.generate(ids, max_new_tokens=256, do_sample=True, + temperature=0.7, top_p=0.9, eos_token_id=3, pad_token_id=0) +print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)) +``` + +> Note: the ``/`` markers in the template are literal text (the +> SentencePiece vocab uses ``/`` pieces), matching exactly how the +> model was trained. Use `apply_chat_template` and you don't need to think +> about it. + +## Training + +- SFT on 24,980 cyber Q&A samples (multi-turn conversation format) +- 3 epochs, LR 2e-5 cosine, AdamW β=(0.9, 0.95), wd 0.01, loss on assistant tokens only +- Final val loss: **2.66** + +## Limitations + +33M parameters: strong at short cybersecurity explanations and Q&A; not +suited for long-horizon reasoning, code generation, or general assistant +duties. May hallucinate specifics (CVE numbers, tool flags) — verify facts. +English only. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..5a1c16d --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1 @@ +{{ '' }}{% if messages[0]['role'] == 'system' %}{{ 'System: ' + messages[0]['content'] | trim + '\n\n' }}{% set messages = messages[1:] %}{% endif %}{% for message in messages %}{% if message['role'] == 'user' %}{{ '### User:\n' + message['content'] | trim + '\n\n' }}{% elif message['role'] == 'assistant' %}{{ '### Assistant:\n' + message['content'] | trim + '' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '### Assistant:\n' }}{% endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..069734b --- /dev/null +++ b/config.json @@ -0,0 +1,30 @@ +{ + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 2, + "dtype": "float32", + "eos_token_id": 3, + "head_dim": 64, + "hidden_act": "silu", + "hidden_size": 384, + "initializer_range": 0.02, + "intermediate_size": 1024, + "max_position_embeddings": 4096, + "mlp_bias": false, + "model_type": "llama", + "num_attention_heads": 6, + "num_hidden_layers": 12, + "num_key_value_heads": 6, + "pad_token_id": 0, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": null, + "rope_theta": 10000.0, + "tie_word_embeddings": true, + "transformers_version": "4.57.6", + "use_cache": true, + "vocab_size": 32000 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..93b0f68 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,9 @@ +{ + "bos_token_id": 2, + "eos_token_id": 3, + "pad_token_id": 0, + "max_new_tokens": 256, + "do_sample": true, + "temperature": 0.7, + "top_p": 0.9 +} \ No newline at end of file diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..0643ea7 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:352505c67c586d313634475cf103570a3f7795401ff416985aba99f0ef71cfcb +size 134137152 diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000..a43bae8 --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,30 @@ +{ + "bos_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "unk_token": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } +} diff --git a/tokenizer.model b/tokenizer.model new file mode 100644 index 0000000..2529644 --- /dev/null +++ b/tokenizer.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c1a2ad32fd7d576e42bad69c99312896a077913a543a25af73831e3266a68e6 +size 735456 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..8fbdd32 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,51 @@ +{ + "add_bos_token": true, + "add_eos_token": false, + "add_prefix_space": true, + "added_tokens_decoder": { + "0": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "1": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "2": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "3": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "bos_token": "", + "clean_up_tokenization_spaces": false, + "eos_token": "", + "extra_special_tokens": {}, + "legacy": false, + "model_max_length": 1000000000000000019884624838656, + "pad_token": "", + "sp_model_kwargs": {}, + "spaces_between_special_tokens": false, + "tokenizer_class": "LlamaTokenizer", + "unk_token": "", + "use_default_system_prompt": false +}