CoolFace
Datasetpublic

eewer/mixed-sft-openai-tools-qwen3-areal-diverse

mixed-sft-openai-tools-qwen3-areal-diverse Private SFT dataset for the Qwen3 AReaL terminal-agent trainer. It is the normalized, shuffled "diverse" variant of the default terminal-agent SFT recipe. It is intended for: terminal_agent_demo/sft/config_terminus2_l40s_default_diverse.yaml Files File Rows Description mixed_sft_openai_tools_qwen3_areal.shuf_seed7.jsonl 127,270 Training JSONL, shuffled with seed 7 (post-filtering).… See the full description on the dataset page: https://huggingface.co/datasets/eewer/mixed-sft-openai-tools-qwen3-areal-diverse.

sourceHugging Faceotherupdated 3mo agoView on Hugging Face
0likes255downloads
Dataset Card

mixed-sft-openai-tools-qwen3-areal-diverse

Private SFT dataset for the Qwen3 AReaL terminal-agent trainer. It is the normalized, shuffled "diverse" variant of the default terminal-agent SFT recipe.

It is intended for:

yaml
terminal_agent_demo/sft/config_terminus2_l40s_default_diverse.yaml

Files

FileRowsDescription
mixed_sft_openai_tools_qwen3_areal.shuf_seed7.jsonl127,270Training JSONL, shuffled with seed 7 (post-filtering).
mixed_sft_openai_tools_qwen3_areal.shuf_seed7.order.jsonl127,270Training-order provenance manifest.
normalization.summary.json-Normalization and source-count summary (pre-filter).
source_mix.summary.json-Source mixture summary before OpenAI-tools normalization.
filter.summary.json-Post-normalization filtering counts (reasoning + v54 dedup).

Row Schema

Every training row has exactly two top-level columns:

json
{
  "messages": [
    {"role": "system", "content": "..."},
    {"role": "user", "content": "..."},
    {
      "role": "assistant",
      "content": "...",
      "reasoning_content": "...",
      "tool_calls": [
        {
          "id": "call_...",
          "type": "function",
          "function": {"name": "bash", "arguments": "{\"command\":\"...\"}"}
        }
      ]
    },
    {"role": "tool", "content": "...", "tool_call_id": "call_..."}
  ],
  "tools": []
}

Every assistant message has a non-empty reasoning_content (guaranteed by the filtering below). Rows with tools use OpenAI-style tool schemas in tools; Terminus-2-native rows have tools: [].

Filtering (post-normalization)

The thinking-preservation chat template always opens <think> at generation time, so an assistant turn with empty reasoning_content would be silently dropped (and duplicated) by the loss-mask tokenizer. To make the data consistent and the row→step mapping exact, the normalized dataset is filtered (terminal_agent_demo/sft/filter_normalized_diverse.py):

  1. 1.Reasoning filter (all subsets): drop any row where not every assistant message has a non-empty reasoning_content. — 22,534 rows removed.
  2. 2.v54 task dedup (only the `eewer/qwen3-4b-thinking-sft-v54-...` subset): two rows are the same task iff their source task_id is identical, falling back to first system + first user only if task_id is missing; within each duplicate group keep the shortest row that passes and has reasoning on every assistant turn. — 1,319 rows removed (max duplication of a single v54 task: 6).

Result: 151,123 → 127,270 rows. Counts are in filter.summary.json.

Source Mix

SourceRows
best additions: r2egym Kimi pass2,821
best additions: swesmith Kimi pass5,237
best additions: nemotron-junit MiniMax pass3,206
nvidia/Nemotron-Terminal-Corpus full medium89,343
eewer/qwen3-4b-thinking-sft-v54-raw2030-strictpassed-processed8,261
nvidia/Open-SWE-Traces passing, deduped against eewer36,556
allenai/tmax-sft success, stricter filtered5,699

Total before filtering: 151,123 rows (source-mix counts above). After the reasoning + v54-task_id-dedup filtering: 127,270 rows.

Normalization

Created with:

bash
python terminal_agent_demo/sft/normalize_mixed_sft_to_openai_tools.py \
  --input areal_runs/terminal-agent-demo/data/mixed_sft_v3_best_additions_nemotron_medium_eewer_v54_openswe_passed_tmax_success.jsonl \
  --unshuffled-output areal_runs/terminal-agent-demo/data/mixed_sft_openai_tools_qwen3_areal.jsonl \
  --output areal_runs/terminal-agent-demo/data/mixed_sft_openai_tools_qwen3_areal.shuf_seed7.jsonl \
  --manifest areal_runs/terminal-agent-demo/data/mixed_sft_openai_tools_qwen3_areal.shuf_seed7.order.jsonl \
  --summary-output areal_runs/terminal-agent-demo/data/mixed_sft_openai_tools_qwen3_areal.summary.json \
  --seed 7

The normalizer moved inline <think>...</think> / THOUGHT: reasoning into reasoning_content, normalized tool calls to OpenAI function-call shape, and filled missing tool_call_id values on tool messages from the preceding assistant calls.

Validation completed:

  • —151,123 JSONL rows
  • —top-level keys exactly messages and tools
  • —every assistant message has non-empty reasoning_content
  • —tool calls have ids, function names, and string arguments
  • —every tool message has tool_call_id