--profile to export for Hugging Face TRL (Transformer
Reinforcement Learning), Fireworks, SWE-bench, or NeMo Gym. The
Consumer compatibility reference lists the
supported versions and checks. Without a profile, Sediment emits its canonical
rows. Diff-SFT and Recovery remain Sediment-native.
A profile changes representation at the consumer boundary. It preserves the
Evidence recipe, labels, Reward, and Provenance. Missing negative examples
remain missing. A permissive agent workflow can produce verified SFT rows while
producing no DPO pairs. Prompt steering alone isn’t a rejection label.
Prepare the source and select a profile
Before starting, choose an objective and prepare a reviewed bundle. Select the Evidence recipe in Export DPO pairs or Export SFT and diff-SFT rows, or the target in Export RLVR tasks and trajectories. A profile adapts that selection; it doesn’t choose training evidence for you. The examples use$HOME/sediment-derived/review. Follow the
private destination setup,
and use a nonexistent child directory for each export. Don’t create that child
in advance. Check the capacity limit before planning
a large export.
Install the matching optional environment
Keep optional consumer packages separate from the API environment. For the Hugging Face profiles, create an isolated Python 3.12 environment and install the published Sediment release with the versions listed in the compatibility reference:--profile, or an
independently qualified consumer environment that meets the reference contract.
Export SFT or DPO
Run only the command for your selected objective and recipe. This SFT example usessft_verified; if you selected curated imitation, pass
--recipe sft_curated instead:
dpo_human; if you selected CI labels, pass
--recipe dpo_outcome instead:
fireworks-sft-v1 or fireworks-dpo-v2 and another unused
destination. An invalid profile, incompatible
package version, invalid row, or incomplete configuration fails before
publication. A populated export contains data, aligned evidence sidecars, and
a compatibility manifest. An empty export reports zero rows and creates no
directory. Preserve the sidecars for auditing; send only data to the consumer.
DPO profiles v2 accept recipe-v2/schema-v4 rows. The retired DPO profile names
v1 fail explicitly. If you retained recipe-v1/schema-v3 rows, re-export canonical
evidence before selecting a successor; the adapter refuses historical rows.
See Migrate retained DPO exports.
Load Hugging Face data
After confirming that the reported training file exists, use Sediment’s loader to preserve heterogeneous nested message and tool values. Inferring Arrow structs from early rows can reject a later tool argument shape.List(Json()) features and verifies an exact value
round trip through datasets.Dataset. SFT retains separate prompt and
completion fields. DPO retains prompt, chosen, and rejected. The adapter
renames readable thinking to reasoning_content. It preserves structured tool
arguments and emits structured results as deterministic JSON strings.
Configure the trainer to respect the completion loss boundary. Confirm that
your model’s chat template supports reasoning and tool calls before training.
Qualification exercises TRL’s public conversation helper and the Qwen3-0.6B
tokenizer at revision c1899de289a04d12100db370d81485cdf75e47ca. It doesn’t
qualify every tokenizer or run an optimizer. See the upstream
Dataset formats.
Interpret Fireworks output
Both Fireworks profiles rejectdeveloper messages and require any system
message to appear first. Sediment doesn’t rewrite or reorder captured roles.
The SFT adapter sets earlier assistant messages to weight: 0 and target
assistant messages to weight: 1. These values mark the loss boundary. The
adapter doesn’t emit a root sample weight or derive one from Confidence.
Tool arguments become JSON strings. Readable reasoning uses
reasoning_content. Tool definitions remain absent because the Fact doesn’t
capture them. Configure any definitions required by your training model from
an authoritative source.
The DPO profile accepts the documented text-only message contract and one
final assistant message per preferred and non-preferred output. Unsupported
roles or structured DPO messages fail visibly. Fireworks requires at least
three examples per uploaded dataset; a smaller local export isn’t evidence
of hosted readiness. See the provider’s
SFT format and
DPO format.
Export NeMo Gym Rollouts
In the qualified NeMo environment, save a JSON configuration as$HOME/sediment-exports/nemo.json. Set these response parameters to your
consumer’s verified configuration:
summary_text; the adapter copies the
full text without summarizing it. The sidecar also retains native output
messages. Response timestamps cite the source Inference call. Missing status
and token usage stay absent.
Every admitted row passes the upstream BaseVerifyResponse parser without
silent field loss. The profile requires numeric Reward from resolved CI
evidence. It counts
missing Reward, missing Inference calls, identity mismatches, missing or mixed
models, and unsupported message mappings. The closed vocabulary lives in
consumer_rlvr.py::NEMO_PROFILE_SKIP_REASONS.
This is a native parser contract. A particular offline training recipe may
require a further dataset formatter and tokenizer. In particular, the
NeMo offline tutorial
shows a formatting snippet with top-level output; this profile retains the
native verification envelope’s response.output. Don’t pass that envelope to
the snippet unchanged.
Supply SWE-bench task and runtime inputs
The SWE-bench profile requires an explicit repair request and executable task configuration for each canonical instance ID. First inspect the canonical--target swe-bench projection and its repository/base-commit binding. Then
save tasks in $HOME/sediment-exports/swe.json. You also need
SEDIMENT_MIRROR_PATH for the Reference patches. Replace the illustrative
values with your verified task configuration before running the profile:
test_patch only when the required tests already exist at the
base commit. FAIL_TO_PASS must name at least one test; its names can’t overlap
PASS_TO_PASS. The runtime image must contain the checked-out repository and
its dependencies. Match the command, output markers, and registered parser to
the tests you run. Sediment validates the fields and parser registration but
doesn’t run the image or establish test transitions.
Check suitability before training
After the command succeeds, inspect the published directory:- Open
compatibility.json. Check the profile identity, file hashes, split counts, numeric Reward counts, and exclusions. - Confirm that each populated partition has aligned
dataandevidencefiles. With splitting enabled, the names include.trainor.eval; empty partitions produce no file. With splitting disabled, the files aredata.jsonlandevidence.jsonl. - Inspect representative data rows with their matching evidence sidecars. Keep the sidecars for audit and send only data to the consumer.
- Audit task overlap and the evaluation population
before training. An empty export creates no destination; don’t use output
from an earlier command as its result.
skippedrecords consumer-adapter exclusions. CLI exports also preservecanonical_skippedfrom the training projection. RLVR exports preservefragmentedfrom the source bundle. These fields count separate populations; don’t add them together. Low-level publication omits a source population when the caller doesn’t supply it. A supplied empty map means zero recorded counts.
Check consumer capacity
Profiles use the 64 MiB encoded materialization allowance fromBundleLimits.
SFT and DPO profiles check canonical training rows before collecting their
consumer view. RLVR profiles check complete Rollouts before hydration; the
NeMo check also includes the source Inference calls. A file-backed population
that exceeds the allowance fails before its first record is decoded.
The same allowance applies separately to projected native rows, adapted data
and evidence together, loader inputs, consumer settings, and prepared data and
evidence files together. Native projectors stage each admitted row before
collecting a consumer view. Python callers that supply iterators receive a
capacity error when their cumulative encoded rows exceed the allowance.
These limits bound encoded populations, not total process memory.
If a limit is exceeded, the complete export fails before publication. Sediment
preserves the destination and removes its private staging. Capacity failures
don’t become eligibility skips or smaller successful datasets. For a larger
export, use canonical rows without --profile and qualify downstream conversion
separately. The profiling procedure explains
resource measurement and qualification boundaries.