From your first dataset
to a training-ready bundle.
Start with a browser preview, then move to a workspace you control. This guide connects the pieces without hiding where the work runs.
Choose your starting point
Explore in your browser
Load an example or your own JSONL/CSV file. See screening decisions, a byte-bigram training run, and actual demo metrics.
Up to 1,000 rows / 2 MiB. Data stays in this tab.YOUR ENVIRONMENTSelf-host the workspace
Use streamed ingestion, connect a JEV provider, run local LoRA, or export data for an external training environment.
Real model training uses your compute and dependencies.It lets you inspect the workflow. Its local rules are not JEV model judgments, and its byte-bigram model is not an LLM. Demo losses cannot be compared with LLM token losses.
Run the workspace
Clone the repository and install it in a Python virtual environment. The default demo path does not need a GPU or an API key.
git clone https://github.com/RenaGao/jev-dataops.git
cd jev-dataops
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
jev-dataops serveOpen http://127.0.0.1:8000. Select Use example to run a small synthetic dataset through the workspace before connecting real services.
Configure provider keys and model paths on your server. If you expose the workspace beyond loopback, configure its access token. See the repository setup instructions for environment variables and training dependencies.
Prepare your data
Upload UTF-8 JSONL or CSV. The screening workflow accepts text, instruction–response pairs, prompt–response pairs, and conversations. A simple instruction example looks like this:
{"instruction":"Explain operating cash flow.","output":"Cash generated by a company's core operations."}
{"instruction":"What does a Python list store?","output":"An ordered, mutable collection of objects."}These two lines illustrate the format; they are not a sufficient training dataset. Use enough independent examples to populate train, validation, and test splits. Preserve relevant group or conversation identifiers to reduce leakage.
For RL, every record needs a prompt, final assistant response, and an explicit nonempty string such as ground_truth containing an independently checked answer. The included reward uses exact matching; it does not grade open-ended prose or execute code.
Screen and evaluate
- Select a screening engine. Demo uses local rules. A configured JEV provider performs model-based screening.
- Choose your domain rubric. General, finance, and code provide starting points for domain-aware screening.
- Set the request budget. Review concurrency and request limits before calling a provider.
- Review the decisions. Inspect keep, review, and reject outputs plus the data report. Only retained records should enter the next stage.
The self-hosted workspace sends record content to the selected JEV provider when online screening is enabled. Use records you have permission to share.
Use the screening/keep.jsonl artifact from a completed run. The commands below use runs/example/screening/keep.jsonl as a placeholder; replace it with your actual artifact path.
Export a training bundle
Choose the training objective and export the screened data. A bundle gives you files and configuration to inspect before a job is launched. SFT export accepts text or conversation data; RL export additionally requires verified answer targets.
pip install -e '.[export]'For a complete closed-answer example, screen the bundled synthetic arithmetic dataset, which includes independently specified ground_truth strings. A JEV score or an arbitrary response is not a reward target.
Upload once. Train across your GPUs.
Screen one dataset and export one training bundle. All GPU workers use that bundle from the same local directory on your Linux/NVIDIA host. You do not upload a separate dataset for each GPU.
Choose the GPUs you provide. This updates the export commands below.
1 GPU · global batch 4. SFT: 4 records per GPU. verl: 4 prompts per global batch, before rollout expansion.
Use enough independent records for train, validation, and test splits, with at least one complete global training batch after splitting. These examples use four records per GPU for SFT; adjust the batch to your model and available memory. For verl, this is the global prompt batch, not the number of generated responses.
Supervised fine-tuning
Use curated prompts and target responses to prepare an SFT run. More than one GPU launches data-parallel workers on the same host; each GPU holds a model replica and processes its share of the global batch.
jev-dataops export-training \
--input runs/example/screening/keep.jsonl \
--output runs/training-bundle \
--target sft \
--base-model Qwen/Qwen2.5-0.5B-Instruct \
--n-gpus 1 \
--batch-size 4Group-relative policy optimization
Prepare a verl GRPO bundle with prompts and reward targets. Supply verified closed-answer targets for the included exact-match reward, plus compatible rollout/training dependencies.
jev-dataops export-training \
--input runs/example/screening/keep.jsonl \
--output runs/training-bundle \
--target verl-grpo \
--base-model Qwen/Qwen2.5-0.5B-Instruct \
--reward-field ground_truth \
--n-gpus 1 \
--batch-size 4Proximal policy optimization
Prepare a verl PPO bundle. Review the actor, critic, rollout, reference, and reward configuration against your model and available GPUs.
jev-dataops export-training \
--input runs/example/screening/keep.jsonl \
--output runs/training-bundle \
--target verl-ppo \
--base-model Qwen/Qwen2.5-0.5B-Instruct \
--reward-field ground_truth \
--n-gpus 1 \
--batch-size 4Use a different output directory for each target or experiment, not for each GPU. One bundle is shared across all workers in that run. These examples are single-node training; the public browser demo does not allocate GPUs or execute them. See the multi-GPU setup guide for device selection, batch sizing, and memory requirements.
Inspect before launching
Copy the bundle once to your Linux/NVIDIA training host if it was exported elsewhere, preserving its directory structure. Run the launcher once from that host: the selected GPU count is already stored in the bundle. Dry-run the launch and confirm the command, paths, reward configuration, and available GPUs before execution.
jev-dataops launch-training \
--bundle runs/training-bundle \
--dry-runSFT execution needs the train extra. The supplied verl recipes target a separate Linux/NVIDIA environment with Python 3.12 and verl 0.9.1. A static website deployment does not provision GPUs or execute these jobs. Review the training environment guide before using the explicit --execute flag. You can select that environment with --python.
Evaluate the result
The local LoRA workflow measures baseline and trained-model loss on the same held-out test set. Use the ready-to-use domain metric packs to evaluate supplied model outputs, references, imported test results, and reviewed labels offline. Choose general, finance, code, enterprise, legal, or medical definitions. Keep each metric’s coverage alongside its result; the packs do not generate predictions or expert judgments.
Keep related examples out of the test set used to judge training.
Use the same data and metric definition for baseline and trained models.
Loss and reward are signals. Add factual, functional, and human checks.