ovedrive commited on
Commit
9612138
·
verified ·
1 Parent(s): dc18056

Upload WarMachine 4B weights (qwen3.5-4b)

Browse files
4B/README.md CHANGED
@@ -8,13 +8,15 @@ tags:
8
  - kali-linux
9
  - security
10
  - axolotl
 
 
11
  library_name: transformers
12
- pipeline_tag: text-generation
13
  ---
14
 
15
  # WarMachine — 4B Tool-Calling Model
16
 
17
- Fine-tuned for **automated penetration testing** using Kali Linux CLI tools.
18
 
19
  ## What This Model Does
20
 
@@ -23,23 +25,24 @@ WarMachine is trained to act as a pentesting automation agent that:
23
  2. **Selects** appropriate tools from the Kali Linux arsenal
24
  3. **Executes** CLI commands via structured tool calls
25
  4. **Parses** output to extract actionable intelligence
26
- 5. **Chains** tools together toward an objective
 
27
 
28
  ## Usage
29
 
30
  ```python
31
- from transformers import AutoModelForCausalLM, AutoTokenizer
32
 
33
- model = AutoModelForCausalLM.from_pretrained(
34
  "ovedrive/WarMachine",
35
  subfolder="4B",
36
- torch_dtype="auto",
37
- device_map="auto",
38
  trust_remote_code=True,
39
  )
40
- tokenizer = AutoTokenizer.from_pretrained(
41
  "ovedrive/WarMachine",
42
  subfolder="4B",
 
 
43
  trust_remote_code=True,
44
  )
45
 
@@ -47,12 +50,14 @@ messages = [
47
  {"role": "system", "content": "You are WarMachine, a penetration testing automation agent..."},
48
  {"role": "user", "content": "Enumerate the target 10.10.10.5"},
49
  ]
50
- text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
51
- inputs = tokenizer(text, return_tensors="pt").to(model.device)
52
  outputs = model.generate(**inputs, max_new_tokens=512)
53
- print(tokenizer.decode(outputs[0], skip_special_tokens=True))
54
  ```
55
 
 
 
56
  ## Training Details
57
 
58
  - **Base Model:** Qwen/Qwen3.5-4B
@@ -60,12 +65,7 @@ print(tokenizer.decode(outputs[0], skip_special_tokens=True))
60
  - **Config:** `qwen3.5-4b`
61
  - **Data:** Synthetic + curated pentesting tool-calling conversations
62
  - **Focus:** CEH / PNPT / HTB style engagements
63
-
64
- ## Disclaimer
65
-
66
- This model is intended for **authorized security testing and educational purposes only**.
67
- Always obtain proper authorization before testing systems you do not own.
68
-
69
 
70
  ## Attribution
71
 
@@ -83,4 +83,10 @@ If you use this model, please cite:
83
  year = {2026},
84
  howpublished = {\url{https://huggingface.co/ovedrive/WarMachine/tree/main/4B}},
85
  note = {Author contact: ab@3computing.com}
86
- }
 
 
 
 
 
 
 
8
  - kali-linux
9
  - security
10
  - axolotl
11
+ - multimodal
12
+ - vision
13
  library_name: transformers
14
+ pipeline_tag: image-text-to-text
15
  ---
16
 
17
  # WarMachine — 4B Tool-Calling Model
18
 
19
+ Fine-tuned for **automated penetration testing** using Kali Linux CLI tools while preserving the Qwen3.5 multimodal wrapper and processor.
20
 
21
  ## What This Model Does
22
 
 
25
  2. **Selects** appropriate tools from the Kali Linux arsenal
26
  3. **Executes** CLI commands via structured tool calls
27
  4. **Parses** output to extract actionable intelligence
28
+ 5. **Can inspect visual inputs** such as screenshots through the base Qwen3.5 vision stack
29
+ 6. **Chains** tools together toward an objective
30
 
31
  ## Usage
32
 
33
  ```python
34
+ from transformers import AutoProcessor, Qwen3_5ForConditionalGeneration
35
 
36
+ processor = AutoProcessor.from_pretrained(
37
  "ovedrive/WarMachine",
38
  subfolder="4B",
 
 
39
  trust_remote_code=True,
40
  )
41
+ model = Qwen3_5ForConditionalGeneration.from_pretrained(
42
  "ovedrive/WarMachine",
43
  subfolder="4B",
44
+ torch_dtype="auto",
45
+ device_map="auto",
46
  trust_remote_code=True,
47
  )
48
 
 
50
  {"role": "system", "content": "You are WarMachine, a penetration testing automation agent..."},
51
  {"role": "user", "content": "Enumerate the target 10.10.10.5"},
52
  ]
53
+ text = processor.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
54
+ inputs = processor(text=text, return_tensors="pt").to(model.device)
55
  outputs = model.generate(**inputs, max_new_tokens=512)
56
+ print(processor.tokenizer.decode(outputs[0], skip_special_tokens=True))
57
  ```
58
 
59
+ If you want the model to inspect a screenshot at inference time, pass the image through the processor as an image input instead of converting the screenshot into plain text yourself.
60
+
61
  ## Training Details
62
 
63
  - **Base Model:** Qwen/Qwen3.5-4B
 
65
  - **Config:** `qwen3.5-4b`
66
  - **Data:** Synthetic + curated pentesting tool-calling conversations
67
  - **Focus:** CEH / PNPT / HTB style engagements
68
+ - **Wrapper Preservation:** trained and merged through the Qwen3.5 multimodal wrapper so the base vision stack remains available
 
 
 
 
 
69
 
70
  ## Attribution
71
 
 
83
  year = {2026},
84
  howpublished = {\url{https://huggingface.co/ovedrive/WarMachine/tree/main/4B}},
85
  note = {Author contact: ab@3computing.com}
86
+ }
87
+ ```
88
+
89
+ ## Disclaimer
90
+
91
+ This model is intended for **authorized security testing and educational purposes only**.
92
+ Always obtain proper authorization before testing systems you do not own.
4B/config.json CHANGED
@@ -1,83 +1,109 @@
1
  {
2
  "architectures": [
3
- "Qwen3_5ForCausalLM"
4
  ],
5
- "attention_bias": false,
6
- "attention_dropout": 0.0,
7
- "attn_output_gate": true,
8
- "bos_token_id": null,
9
  "dtype": "bfloat16",
10
- "eos_token_id": 248044,
11
- "full_attention_interval": 4,
12
- "head_dim": 256,
13
- "hidden_act": "silu",
14
- "hidden_size": 2560,
15
- "initializer_range": 0.02,
16
- "intermediate_size": 9216,
17
- "layer_types": [
18
- "linear_attention",
19
- "linear_attention",
20
- "linear_attention",
21
- "full_attention",
22
- "linear_attention",
23
- "linear_attention",
24
- "linear_attention",
25
- "full_attention",
26
- "linear_attention",
27
- "linear_attention",
28
- "linear_attention",
29
- "full_attention",
30
- "linear_attention",
31
- "linear_attention",
32
- "linear_attention",
33
- "full_attention",
34
- "linear_attention",
35
- "linear_attention",
36
- "linear_attention",
37
- "full_attention",
38
- "linear_attention",
39
- "linear_attention",
40
- "linear_attention",
41
- "full_attention",
42
- "linear_attention",
43
- "linear_attention",
44
- "linear_attention",
45
- "full_attention",
46
- "linear_attention",
47
- "linear_attention",
48
- "linear_attention",
49
- "full_attention"
50
- ],
51
- "linear_conv_kernel_dim": 4,
52
- "linear_key_head_dim": 128,
53
- "linear_num_key_heads": 16,
54
- "linear_num_value_heads": 32,
55
- "linear_value_head_dim": 128,
56
- "mamba_ssm_dtype": "float32",
57
- "max_position_embeddings": 262144,
58
- "mlp_only_layers": [],
59
- "model_type": "qwen3_5_text",
60
- "mtp_num_hidden_layers": 1,
61
- "mtp_use_dedicated_embeddings": false,
62
- "num_attention_heads": 16,
63
- "num_hidden_layers": 32,
64
- "num_key_value_heads": 4,
65
- "pad_token_id": null,
66
- "partial_rotary_factor": 0.25,
67
- "rms_norm_eps": 1e-06,
68
- "rope_parameters": {
69
- "mrope_interleaved": true,
70
- "mrope_section": [
71
- 11,
72
- 11,
73
- 10
74
  ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  "partial_rotary_factor": 0.25,
76
- "rope_theta": 10000000,
77
- "rope_type": "default"
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  },
79
  "tie_word_embeddings": true,
80
  "transformers_version": "5.3.0",
81
- "use_cache": true,
82
- "vocab_size": 248320
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
 
1
  {
2
  "architectures": [
3
+ "Qwen3_5ForConditionalGeneration"
4
  ],
 
 
 
 
5
  "dtype": "bfloat16",
6
+ "image_token_id": 248056,
7
+ "model_type": "qwen3_5",
8
+ "text_config": {
9
+ "attention_bias": false,
10
+ "attention_dropout": 0.0,
11
+ "attn_output_gate": true,
12
+ "bos_token_id": null,
13
+ "dtype": "bfloat16",
14
+ "eos_token_id": 248044,
15
+ "full_attention_interval": 4,
16
+ "head_dim": 256,
17
+ "hidden_act": "silu",
18
+ "hidden_size": 2560,
19
+ "initializer_range": 0.02,
20
+ "intermediate_size": 9216,
21
+ "layer_types": [
22
+ "linear_attention",
23
+ "linear_attention",
24
+ "linear_attention",
25
+ "full_attention",
26
+ "linear_attention",
27
+ "linear_attention",
28
+ "linear_attention",
29
+ "full_attention",
30
+ "linear_attention",
31
+ "linear_attention",
32
+ "linear_attention",
33
+ "full_attention",
34
+ "linear_attention",
35
+ "linear_attention",
36
+ "linear_attention",
37
+ "full_attention",
38
+ "linear_attention",
39
+ "linear_attention",
40
+ "linear_attention",
41
+ "full_attention",
42
+ "linear_attention",
43
+ "linear_attention",
44
+ "linear_attention",
45
+ "full_attention",
46
+ "linear_attention",
47
+ "linear_attention",
48
+ "linear_attention",
49
+ "full_attention",
50
+ "linear_attention",
51
+ "linear_attention",
52
+ "linear_attention",
53
+ "full_attention"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  ],
55
+ "linear_conv_kernel_dim": 4,
56
+ "linear_key_head_dim": 128,
57
+ "linear_num_key_heads": 16,
58
+ "linear_num_value_heads": 32,
59
+ "linear_value_head_dim": 128,
60
+ "mamba_ssm_dtype": "float32",
61
+ "max_position_embeddings": 262144,
62
+ "mlp_only_layers": [],
63
+ "model_type": "qwen3_5_text",
64
+ "mtp_num_hidden_layers": 1,
65
+ "mtp_use_dedicated_embeddings": false,
66
+ "num_attention_heads": 16,
67
+ "num_hidden_layers": 32,
68
+ "num_key_value_heads": 4,
69
+ "pad_token_id": null,
70
  "partial_rotary_factor": 0.25,
71
+ "rms_norm_eps": 1e-06,
72
+ "rope_parameters": {
73
+ "mrope_interleaved": true,
74
+ "mrope_section": [
75
+ 11,
76
+ 11,
77
+ 10
78
+ ],
79
+ "partial_rotary_factor": 0.25,
80
+ "rope_theta": 10000000,
81
+ "rope_type": "default"
82
+ },
83
+ "tie_word_embeddings": true,
84
+ "use_cache": true,
85
+ "vocab_size": 248320
86
  },
87
  "tie_word_embeddings": true,
88
  "transformers_version": "5.3.0",
89
+ "video_token_id": 248057,
90
+ "vision_config": {
91
+ "deepstack_visual_indexes": [],
92
+ "depth": 24,
93
+ "dtype": "bfloat16",
94
+ "hidden_act": "gelu_pytorch_tanh",
95
+ "hidden_size": 1024,
96
+ "in_channels": 3,
97
+ "initializer_range": 0.02,
98
+ "intermediate_size": 4096,
99
+ "model_type": "qwen3_5",
100
+ "num_heads": 16,
101
+ "num_position_embeddings": 2304,
102
+ "out_hidden_size": 2560,
103
+ "patch_size": 16,
104
+ "spatial_merge_size": 2,
105
+ "temporal_patch_size": 2
106
+ },
107
+ "vision_end_token_id": 248054,
108
+ "vision_start_token_id": 248053
109
  }
4B/model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a6d4236e793dee0377971c8c9e2cb656fd17b28e8539ee4b1a621012c82f3d83
3
- size 8411558400
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:82daca3563b75e7219ed03ccce86de2b19f3523e4c1f2311ad26018c535d3f20
3
+ size 9078620536
4B/processor_config.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "image_processor": {
3
+ "data_format": "channels_first",
4
+ "do_convert_rgb": true,
5
+ "do_normalize": true,
6
+ "do_rescale": true,
7
+ "do_resize": true,
8
+ "image_mean": [
9
+ 0.5,
10
+ 0.5,
11
+ 0.5
12
+ ],
13
+ "image_processor_type": "Qwen2VLImageProcessorFast",
14
+ "image_std": [
15
+ 0.5,
16
+ 0.5,
17
+ 0.5
18
+ ],
19
+ "merge_size": 2,
20
+ "patch_size": 16,
21
+ "resample": 3,
22
+ "rescale_factor": 0.00392156862745098,
23
+ "size": {
24
+ "longest_edge": 16777216,
25
+ "shortest_edge": 65536
26
+ },
27
+ "temporal_patch_size": 2
28
+ },
29
+ "processor_class": "Qwen3VLProcessor",
30
+ "video_processor": {
31
+ "data_format": "channels_first",
32
+ "default_to_square": true,
33
+ "do_convert_rgb": true,
34
+ "do_normalize": true,
35
+ "do_rescale": true,
36
+ "do_resize": true,
37
+ "do_sample_frames": true,
38
+ "fps": 2,
39
+ "image_mean": [
40
+ 0.5,
41
+ 0.5,
42
+ 0.5
43
+ ],
44
+ "image_std": [
45
+ 0.5,
46
+ 0.5,
47
+ 0.5
48
+ ],
49
+ "max_frames": 768,
50
+ "merge_size": 2,
51
+ "min_frames": 4,
52
+ "patch_size": 16,
53
+ "resample": 3,
54
+ "rescale_factor": 0.00392156862745098,
55
+ "return_metadata": false,
56
+ "size": {
57
+ "longest_edge": 25165824,
58
+ "shortest_edge": 4096
59
+ },
60
+ "temporal_patch_size": 2,
61
+ "video_processor_type": "Qwen3VLVideoProcessor"
62
+ }
63
+ }
4B/tokenizer_config.json CHANGED
@@ -22,6 +22,7 @@
22
  },
23
  "pad_token": "<|endoftext|>",
24
  "pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
 
25
  "split_special_tokens": false,
26
  "tokenizer_class": "TokenizersBackend",
27
  "unk_token": null,
 
22
  },
23
  "pad_token": "<|endoftext|>",
24
  "pretokenize_regex": "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?[\\p{L}\\p{M}]+|\\p{N}| ?[^\\s\\p{L}\\p{M}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+",
25
+ "processor_class": "Qwen3VLProcessor",
26
  "split_special_tokens": false,
27
  "tokenizer_class": "TokenizersBackend",
28
  "unk_token": null,