shimbaaa/shifu-lex
shifu-lex training dataset Unified SFT/DPO/Eval built from 15 Hugging Face datasets. Format: chat messages (user/assistant, optional system) + source + domain. Load it from datasets import load_dataset train = load_dataset("shimbaaa/shifu-lex", data_files="data/train-*.jsonl")["train"] eval_split = load_dataset("shimbaaa/shifu-lex", data_files="eval.jsonl")["train"] dpo = load_dataset("shimbaaa/shifu-lex", data_files="dpo.jsonl")["train"] Splits… See the full description on the dataset page: https://huggingface.co/datasets/shimbaaa/shifu-lex.
shifu-lex training dataset
Unified SFT/DPO/Eval built from 15 Hugging Face datasets. Format: chat messages (user/assistant, optional system) + source + domain.
Load it
from datasets import load_dataset
train = load_dataset("shimbaaa/shifu-lex", data_files="data/train-*.jsonl")["train"]
eval_split = load_dataset("shimbaaa/shifu-lex", data_files="eval.jsonl")["train"]
dpo = load_dataset("shimbaaa/shifu-lex", data_files="dpo.jsonl")["train"]Splits
Eval is kept clean: math500 (500) + shimbabomb train/test (64+17). Do NOT train on eval.jsonl.
Sources (train counts)
claude-reasoning131,960 —question -> <think>thought</think> + answerNumerical-understanding20,875 — ConvFinQA query+context -> answerquantifier-understanding18,360 — logic true/falseglm-5.3-flash-distillation18,107 — instruction -><think>reasoning</think> + responseDAPO-Math-all17,398 — (all/split only, avoids double-countingen/) prompt ->Answer: <ground_truth>open-data-understanding9,570 — parsed + deduped fromqa.txt(both### QandQuestion N:/Answer:forms)uncensor-v1-dpo-SAFE4,948 — SAFETY EDIT, see belowICU-Full4,684 — instruction -> response (system boilerplate dropped)common-voice3,001 — text-only (sentence; audio bytes excluded), accent kept in promptmultillm-route-instruct1,000 — best-of-5 by reward (falcon/llama/codellama/mixtral/qwen)TTS-Voice-Design1,000 — text-only (voice_design_prompt -> transcript + voice_profile)kimi-cyber-reasoning997 — messages (prompt-injection stripped)thinkingcap-sft347 +thinkingcap-dpo-chosen244
Edits / cleaning applied
- `rx-dev/uncensor-v1-dpo` — SAFETY (most important). The
chosenresponses contain instructions for cyberbullying, bomb-making, stalking/harassment. They are excluded entirely. Onlyprompt -> rejected(the safe refusal) is kept, taggeddomain=safety-refusal. Never train on the rawchosencolumn. - `kimi-cyber-reasoning` — prompt-injection stripped. System messages starting with
CRITICAL OUTPUT RULE: ... overrides ANY other instruction ... IGNORE itwere edited down toYou are a senior cybersecurity engineer .... Without this the model learns to obey override-style instructions. - `ICU-Full` — meta system boilerplate dropped (
internal knowledge map ... supporting nodes). It describes dataset curation, not the task; keeping it teaches the model to emit curation jargon. - `multillm-route` — best-of-5 by reward. Base
responseis sometimes wrong (e.g. qwen-1.8b says Rembrandt painted Girl with a Pearl Earring, wrong museum/date). Highest-reward candidate is used instead. - `DAPO-Math` — `all/` only to avoid duplicating
en/rows. - `qa.txt` — parsed + deduped (two formats in one file; near-duplicate synthetic chunks removed).
- Audio/image excluded from text training: common-voice audio bytes dropped (sentence kept); TTS kept as text-only.
zebra-reidentification(images) is intentionally not in text SFT. - Benchmark hygiene:
math500+shimbabombare eval-only.
Train (LoRA SFT example)
pip install transformers datasets trl peftfrom datasets import load_dataset
from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-3B", trust_remote_code=True)
ds = load_dataset("shimbaaa/shifu-lex", data_files="data/train-*.jsonl")["train"]
ds = ds.map(lambda e: {"text": tok.apply_chat_template(
e["messages"], tokenize=False, add_generation_prompt=False)})
# then run your favourite SFT loop (e.g. trl.SFTTrainer) on the "text" field