171 lines
3.8 KiB
Markdown
171 lines
3.8 KiB
Markdown
---
|
||
library_name: transformers
|
||
license: apache-2.0
|
||
base_model: Qwen/Qwen3-8B
|
||
tags:
|
||
- generated_from_trainer
|
||
datasets:
|
||
- WNT3D/Ultimate-Offensive-Red-Team
|
||
model-index:
|
||
- name: workspace/output/killchain-8b
|
||
results: []
|
||
---
|
||
|
||
# Warning! For educational purposes only! Use responsibly!
|
||
|
||
# KillChain-8B
|
||
|
||
This model is a fully fine-tuned version of [Qwen/Qwen3-8B](https://huggingface.co/Qwen/Qwen3-8B) on the [WNT3D/Ultimate-Offensive-Red-Team](https://huggingface.co/datasets/WNT3D/Ultimate-Offensive-Red-Team) dataset.
|
||
|
||

|
||
vLLM deployment shown above + custom web gui (coming soon)
|
||
|
||
## Intended uses & limitations
|
||
|
||
KillChain-8B is intended for:
|
||
|
||
- Red-team simulation and research
|
||
- Security training and tabletop exercises
|
||
- Adversarial LLM evaluation
|
||
- Controlled internal testing environments
|
||
- Studying failure modes of aligned models
|
||
|
||
### Training hyperparameters
|
||
|
||
- learning_rate: 1.5e-05
|
||
- train_batch_size: 4
|
||
- eval_batch_size: 4
|
||
- seed: 42
|
||
- distributed_type: multi-GPU
|
||
- num_devices: 4
|
||
- gradient_accumulation_steps: 2
|
||
- total_train_batch_size: 32
|
||
- total_eval_batch_size: 16
|
||
- optimizer: Use OptimizerNames.ADAMW_TORCH with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
|
||
- lr_scheduler_type: cosine
|
||
- lr_scheduler_warmup_steps: 200
|
||
- training_steps: 2307
|
||
|
||
### Framework versions
|
||
|
||
- Transformers 4.57.0
|
||
- Pytorch 2.7.1+cu126
|
||
- Datasets 4.0.0
|
||
- Tokenizers 0.22.1
|
||
|
||
### Equipment used for training, ~1 hour real time
|
||
|
||
4x NVIDIA H200 SXM
|
||

|
||
|
||
|
||
### Axolotl Config
|
||
|
||
[<img src="https://raw.githubusercontent.com/axolotl-ai-cloud/axolotl/main/image/axolotl-badge-web.png" alt="Built with Axolotl" width="200" height="32"/>](https://github.com/axolotl-ai-cloud/axolotl)
|
||
<details><summary>See axolotl config</summary>
|
||
|
||
axolotl version: `0.13.0.dev0`
|
||
```yaml
|
||
base_model: Qwen/Qwen3-8B
|
||
model_type: Qwen3ForCausalLM
|
||
tokenizer_type: AutoTokenizer
|
||
trust_remote_code: true
|
||
|
||
datasets:
|
||
- path: WNT3D/Ultimate-Offensive-Red-Team
|
||
type: alpaca
|
||
|
||
output_dir: /workspace/output/killchain-8b
|
||
val_set_size: 0.02
|
||
|
||
sequence_len: 4096
|
||
|
||
special_tokens:
|
||
pad_token: "<|pad|>"
|
||
|
||
pad_to_max_length: true
|
||
|
||
bf16: true
|
||
fp16: false
|
||
dtype: bfloat16
|
||
torch_dtype: bfloat16
|
||
|
||
use_cache: false
|
||
attn_implementation: flash_attention_2
|
||
|
||
gradient_checkpointing: true
|
||
gradient_checkpointing_kwargs:
|
||
use_reentrant: false
|
||
|
||
micro_batch_size: 4
|
||
gradient_accumulation_steps: 2
|
||
num_epochs: 3
|
||
learning_rate: 1.5e-5
|
||
|
||
optimizer: adamw_torch
|
||
lr_scheduler: cosine
|
||
warmup_steps: 200
|
||
weight_decay: 0.1
|
||
|
||
logging_steps: 10
|
||
save_steps: 0
|
||
save_total_limit: 1
|
||
save_only_model: true
|
||
|
||
dataloader_num_workers: 4
|
||
dataloader_pin_memory: true
|
||
dataset_processes: 4
|
||
|
||
use_vllm: false
|
||
|
||
deepspeed: |
|
||
{
|
||
"train_micro_batch_size_per_gpu": 4,
|
||
"gradient_accumulation_steps": 2,
|
||
"zero_optimization": {
|
||
"stage": 2,
|
||
"overlap_comm": true,
|
||
"contiguous_gradients": true
|
||
},
|
||
"bf16": {
|
||
"enabled": true
|
||
}
|
||
}
|
||
|
||
wandb_mode: disabled
|
||
|
||
```
|
||
|
||
</details><br>
|
||
|
||
## Usage
|
||
|
||
### Transformers (Python)
|
||
|
||
```python
|
||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||
import torch
|
||
|
||
model_id = "MrPibb/KillChain-8B"
|
||
|
||
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
|
||
model = AutoModelForCausalLM.from_pretrained(
|
||
model_id,
|
||
torch_dtype=torch.bfloat16,
|
||
device_map="auto",
|
||
trust_remote_code=True,
|
||
)
|
||
|
||
prompt = "Provide a list of twenty XSS payloads."
|
||
|
||
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
||
|
||
outputs = model.generate(
|
||
**inputs,
|
||
max_new_tokens=512,
|
||
temperature=0.7,
|
||
top_p=0.9,
|
||
do_sample=True,
|
||
)
|
||
|
||
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |