datagen-standard-launch
SkillDatabases & dataLaunch NON-AGENTIC (standard) data generation — plain vLLM/API completion generation with NO Harbor agent loop or Daytona sandboxes. Two paths: (1) Curator sharded datagen — the multi-node data-parallel run_curator_datagen_sharded.sbatch (one vLLM server per node, disjoint dataset slices, auto-resume, manual afterany restart chain, `curator` conda env, --account=reformo); (2) the declarative `generate.py` / class-based `generate_abstract.py` generators under data/ (data/generation BaseDataGenerator + InferenceEngine for OpenAI/Anthropic/vLLM). Use for bulk completion/synthetic-data generation. The AGENTIC trace-generation path (Harbor + Daytona rollouts, MiniMax/GLM trace sets) is the SEPARATE `datagen-launch` skill.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the datagen-standard-launch skill
What this skill tells your AI
The instructions your AI receives, as published by open-thoughts/openthoughts-agent in .agents/skills/datagen-standard-launch/SKILL.md and read by ahel’s review.
Generate completions or synthetic data directly from a model, without Harbor or Daytona. For agentic trace-gen,
use datagen-launch.
Path 1 — Curator sharded datagen (multi-node DP) — the primary path
data/sbatches/run_curator_datagen_sharded.sbatch runs one vLLM server per node over disjoint input slices and
merges the results. Default: 32 nodes (#SBATCH --nodes=32, 4 GPUs/node), --account=reformo on Jupiter,
and the curator environment (not otagent).
Auto-resume: stable shard output paths
data/sbatches/curator_runs/<model>__<dataset>__<N>shards/shard_<i>/checkpoint_*.parquet let an afterany
restart resume after a SLURM timeout.
Pre-req (login node, has internet): cache the input dataset first —
conda activate curator
python -c "from datasets import load_dataset; ds=load_dataset('<dataset>',split='train'); print(len(ds))"
Launch — positional args <model> <input_dataset> <output_repo> [limit] [save_every]:
# Simple (no restarts):
sbatch data/sbatches/run_curator_datagen_sharded.sbatch <model> <input_dataset> <output_repo> [limit] [save_every]
# With restart chain (recommended for long datasets) — build the afterany chain MANUALLY:
FIRST=$(sbatch data/sbatches/run_curator_datagen_sharded.sbatch \
<model> <input_dataset> <output_repo> [limit] [save_every] | awk '{print $4}')
PREV=$FIRST; for i in $(seq 1 6); do
PREV=$(sbatch --dependency=afterany:$PREV \
data/sbatches/run_curator_datagen_sharded.sbatch \
<model> <input_dataset> <output_repo> [limit] [save_every] | awk '{print $4}')
done
MAX_RESTARTSis not implemented; build the--dependency=afterany:chain by hand.save_every: pass700, not the default 200 (the fifth positional arg).limit(4th arg) caps rows for a smoke run; omit for the full set.
Path 2 — declarative / class-based generator scripts (data/)
data/ has named pipeline directories in two styles:
- Declarative
generate.py— self-contained scripts for local / one-off runs:python data/<dataset>/generate.py [--flags] - Class-based
generate_abstract.py— subclassBaseDataGeneratorfor HPC runs with launcher-managed vLLM endpoints, submitted through the unified launcher:python -m hpc.launch --job_type datagen \ --datagen_script data/<dataset>/generate_abstract.py \ --datagen_target_repo <org/repo> \ --datagen_extra_args "--stage both --limit 2000"
Core modules in data/generation/: base.py (BaseDataGenerator), schemas.py
(GenerationRequest/GenerationResult), engines.py (InferenceEngine for OpenAI / Anthropic / vLLM).
Cleanup / verification
Standard datagen pushes merged parquet shards to <output_repo>. Verify the row count and that the repo
self-populated; no Daytona/trace-export step applies. Cluster details: .agents/ops/jupiter/; launcher:
.agents/projects/ot-agent/ot-agent.md.
Signals
- GitHub stars
- 289
- Forks
- 40
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
datagen-standard-launch- Source
- github.com/open-thoughts/openthoughts-agent