lhpku20010120/Omni-Edu
Omni-Edu — Core V6 SFT mixture 69,999 supervised instruction examples (~158M characters) covering K-12 subject competence, curriculum grounding, diagnostic reasoning, pedagogical action and general-purpose instruction. 12,146 rows (17.4%) are multimodal; every image referenced by the JSONL ships in this repository under images/. This is the system-prompted assembly of the v6 core mixture: every row carries an explicit system message, and the non-system turns are byte-identical… See the full description on the dataset page: https://huggingface.co/datasets/lhpku20010120/Omni-Edu.
Omni-Edu — Core V6 SFT mixture
69,999 supervised instruction examples (~158M characters) covering K-12 subject competence, curriculum grounding, diagnostic reasoning, pedagogical action and general-purpose instruction. 12,146 rows (17.4%) are multimodal; every image referenced by the JSONL ships in this repository under images/.
This is the system-prompted assembly of the v6 core mixture: every row carries an explicit system message, and the non-system turns are byte-identical to the unprompted v6 release. assembly_report.json records the audit that verified that property.
Composition
The system prompt is never free text: each row points at a named entry in system_prompt_registry.json via extra_info.system_prompt_id. 20 prompt variants are in use (e.g. solve_reasoned, multiturn_socratic, mathtutor_scaffolding, general_native). The 9,048 general-purpose rows keep their upstream system prompt, which is why the general_native id is not in the registry.
Format
JSON Lines, ShareGPT style, exactly three top-level keys per row:
{
"messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "Problem:\n<image> ..."},
{"role": "assistant", "content": "..."}
],
"images": ["images/0a/0af6e8ac....png"],
"extra_info": "{\"category\": \"subject_competence\", \"dataset\": \"geometry3k-answer-only\", ...}"
}messages—system, then alternatinguser/assistant. Multi-turn rows go up to 21 messages; 94.5% are single-turn.images— 0 to 16 entries, relative to the repository root; 82.6% of rows are text-only, 16.2% carry one image, and the rest carry between 2 and 16. The<image>marker inside the user turn shows where each image belongs, and 131 rows reference the same image more than once.extra_info— a JSON-encoded string (not an object);json.loadsit to reachcategory,dataset,uid,system_prompt_id,system_prompt_versionand, where present,kcenter/source_license/language.
dataset_info.json is the llama-factory registration file for this mixture.
Loading
from datasets import load_dataset
ds = load_dataset("lhpku20010120/Omni-Edu", "core_v6_full_system_prompted", split="train")
print(ds[0]["messages"], ds[0]["images"])Images resolve against the repository root, so either download the full snapshot or prefix images/... with the repository URL when serving rows.
Provenance and scope
Built from the training_core_v6/releases/v6_full_system_prompted assembly, tokenised against Qwen/Qwen3.5-9B-Base: max sequence length 12,786 tokens, p99 8,830, and zero rows above the 16,384 cutoff. Sources are public K-12 and general corpora; per-row extra_info.source_license is present where the upstream source declares one. Licences of the constituent corpora still apply — check extra_info.dataset before redistribution.
