ablate 0 0 0

hotdogs/cyber-sft-qa-qwen38

published by @hotdogs

Alignment dataset tracked in the /datasets sub-catalog.

Lifetime downloads
392
Last 30 days
86
Likes
1
Size
869.9 MB
Created on HF
2026-08-17
Age
2 months ago

Description

Cyber-SFT-QA (Qwen3.8-27B Native)

Cybersecurity SFT dataset for Qwen3.8-27B (abliterated or base).

Built from Trendyol/Cybersecurity-Instruction (42,807) + AlicanKiraz0/Cybersecurity-Dataset-Fenrir-v2.1 (29,711) —

merged, dedup'd, and converted to the exact thinking format Qwen3.8-27B expects.

Why this format (the important part)

Qwen3.8-27B's chat template wraps the assistant's reasoning in special tags.

Verified by rendering the real chat_template.jinja + the… See the full description on the dataset page: https://huggingface.co/datasets/hotdogs/cyber-sft-qa-qwen38.

Tags

language:enlicense:apache-2.0size_categories:10K<n<100Kformat:parquetmodality:textlibrary:datasetslibrary:pandaslibrary:polarslibrary:mlcroissantregion:uscybersecurityinstruction-tuningsftqwen3.8reasoningthinking-model

README current version from Hugging Face


language: en
license: apache-2.0
tags:

  • cybersecurity
  • instruction-tuning
  • sft
  • qwen3.8
  • reasoning
  • thinking-model
    size_categories: 10K<n<100K
    modalities: text
    library: datasets

Cyber-SFT-QA (Qwen3.8-27B Native)

Cybersecurity SFT dataset for Qwen3.8-27B (abliterated or base).
Built from Trendyol/Cybersecurity-Instruction (42,807) + AlicanKiraz0/Cybersecurity-Dataset-Fenrir-v2.1 (29,711) —
merged, dedup'd, and converted to the exact thinking format Qwen3.8-27B expects.

Why this format (the important part)

Qwen3.8-27B's chat template wraps the assistant's reasoning in special tags.
Verified by rendering the real chat_template.jinja + the real tokenizer
(Qwen2Tokenizer, vocab 248044) and reading the byte ordinals:

Tag Bytes (ordinals) Rendered Note
OPEN 60 116 104 105 110 107 62 <think> no slash, no colon, no space, then \n
CLOSE 60 47 116 104 105 110 107 62 </think> has slash (/), then \n\n
prime (generation prompt) <think> at inference the model is primed with the open tag

So the open and close tags are asymmetric — the close has a slash, the open does not.
Do NOT normalize them to match; keep them exactly as above.

Thinking lives in the reasoning_content field, not in content. The template places it
between the tags automatically, so there is exactly one clean block (no double-wrapping):

...
assistant
<think>
<the thinking text>
</think>

<the answer>

Row schema

Each row has two columns:

  • messages — the template-native list (use this if your trainer calls apply_chat_template)
  • text — the pre-rendered full template string (use this for packing / single-text SFT)
{
  "messages": [
    {"role": "system", "content": "You are a highly specialized cyber-defense expert ..."},
    {"role": "user", "content": "What are the benefits of saving log files as plain text ...?"},
    {"role": "assistant",
       "content": "Log files are often saved as plain text ...",
       "reasoning_content": "Comparing these approaches systematically by examining core principles, strengths and weaknesses, use cases, and recommending optimal scenarios for each."}
  ],
  "text": "system\n...<think>\n<thinking>\n</think>\n\n<answer>..."
}

Splits

Split Rows Median answer chars Avg thinking chars Answer >4096
train 58,014 2,522 160 6,148 (11%)
valid 7,252 2,530 160 819
test 7,252 2,536 160 765
total 72,518 ~2,530 ~160 7,732 (11%)

Quality pipeline

  1. system`,`user`,`assistant → ChatML messages[]
  2. Strip any stray think tags from the source answer
  3. Put thinking in reasoning_content, answer in content
  4. Exact-dedup (user question) 153,065 → 90,655
  5. Loop/repetition filter → 90,519
  6. Near-dedup (first 80 chars) → 73,256
  7. NaN/None/null garbage → 73,113
  8. Refusal boilerplate → 72,518
  9. Pre-render text with the real Qwen3.8-27B template → 100% balanced (1 open / 1 close)

Verified

  • reasoning_content coverage: 100%
  • stray tags leaking into answer: 0
  • text column balance (exactly 1 open + 1 close): 100%
  • rendered through the real tokenizer end-to-end: clean single block

Usage

A. messages[] (trainer calls apply_chat_template)

from datasets import load_dataset
ds = load_dataset("hotdogs/cyber-sft-qa-qwen38", split="train")
# trainer must use the Qwen3.8-27B chat template with:
#   enable_thinking=True, preserve_thinking=True
#   and pass reasoning_content through to the template

B. text (packing / single-text SFT, no template needed)

ds = load_dataset("hotdogs/cyber-sft-qa-qwen38", split="train")
# tokenise ds["text"] directly; mask loss on the prompt prefix

Recommended training config (Qwen3.8-27B, 4x RTX 3060 12GB)

lora: { r: 64, alpha: 128,
  target_modules: [q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj] }
training:
  seqlen: 4096        # covers 89% of answers; use 8192 to keep the long 11%
  batch_size: 4
  gradient_accumulation: 2
  learning_rate: 2e-4
  epochs: 3

Sources

  • Trendyol/Cybersecurity-Instruction-Tuning-Dataset (Apache-2.0)
  • AlicanKiraz0/Cybersecurity-Dataset-Fenrir-v2.1 (Apache-2.0)

README history 15 revisions

Every night we snapshot the README of every dataset in the catalog. When the SHA changes we archive the new version and diff it against the last. This is the evolving thought record of the alignment-data field: what the author decided to say about the corpus, and how that framing shifted over time.

  1. 2026-08-17v2 native-struct: test.parquet51abdff4.4 KB
    Loading...
  2. 2026-08-17v2 native-struct: valid.parquet09f54dc4.4 KB
    Loading...
  3. 2026-08-17v2 native-struct: train.parquetacaddc24.4 KB
    Loading...
  4. 2026-08-17v2 native-struct: test.jsonl0bddeb14.4 KB
    Loading...
  5. 2026-08-17v2 native-struct: valid.jsonlffcd44b4.4 KB
    Loading...
  6. 2026-08-17v2 native-struct: train.jsonl734bcb94.4 KB
    Loading...
  7. 2026-08-17cyber-sft-qa: test.parquetc7e633d4.4 KB
    Loading...
  8. 2026-08-17cyber-sft-qa: valid.parquetc6b7d6c4.4 KB
    Loading...
  9. 2026-08-17cyber-sft-qa: train.parquetefd501a4.4 KB
    Loading...
  10. 2026-08-17cyber-sft-qa: test.jsonl45bc5a44.4 KB
    Loading...
  11. 2026-08-17cyber-sft-qa: valid.jsonl52644884.4 KB
    Loading...
  12. 2026-08-17cyber-sft-qa: train.jsonl641b4b64.4 KB
    Loading...
  13. 2026-08-17cyber-sft-qa: QC_REPORT.jsonda62f194.4 KB
    Loading...
  14. 2026-08-17cyber-sft-qa: README.md3f8f5b14.4 KB
    Loading...
  15. 2026-08-17initial commit2644c3f0 B
    Loading...

Used by abliterated models none yet

No abliterated models in our catalog have declared this dataset in their YAML metadata yet. This can mean the dataset is used but not declared, is used outside abliteration workflows, or is new. The link will populate automatically as models are indexed.

Community discussions 1 thread · 1 comments

Threads posted by the community on Hugging Face: bug reports, questions about usage, pull requests on the README, license clarifications. Click any thread to expand and read the full conversation inline. Newest first.

  1. 2026-08-18[bot] Conversion to Parquetclosed1 💬#1
    Loading...

Related datasets same stage · ablate

Read further

Metadata

License
apache-2.0

Repository

Download the dataset

0

Copy any of these snippets into your notebook or terminal. All three fetch directly from Hugging Face using your own credentials.

Recommended: datasets library (Python)
from datasets import load_dataset
ds = load_dataset("hotdogs/cyber-sft-qa-qwen38")
Raw snapshot (Python)
from huggingface_hub import snapshot_download
snapshot_download(repo_id="hotdogs/cyber-sft-qa-qwen38", repo_type="dataset")
git clone (requires git-lfs)
git clone https://huggingface.co/datasets/hotdogs/cyber-sft-qa-qwen38
Catalog is the map. Apps are the tools.

Run models on your own machine, not in the cloud.

Every model page has an "Open in Abliteration" button that hands the model directly to the first-party desktop client, at the quantization your rig can actually run. No API keys, no subscription, no prompt leakage.

Open in Abliteration