bridge.data.datasets.preference#

Module Contents#

Classes#

ScoringFingerprint

Scoring-run inputs a training run must reproduce; written to and checked against scoring_metadata.json.

Functions#

_open_path

ref_logprobs_from_rows

Validate offline-scorer output rows and key them by pair_id.

_artifact_path

write_ref_logprobs

Write the ref-logprob rows as JSONL to artifact_dir (local or msc://).

load_ref_logprobs

Load and validate a ref-scorer artifact from path (local or msc://).

write_scoring_metadata

Write scoring_metadata.json to artifact_dir (local or msc://).

read_scoring_metadata

Load the artifact’s scoring_metadata.json (local or msc://).

validate_scoring_metadata

Raise if the artifact was scored under different inputs than expected; return its metadata.

pair_token_lengths

Per-pair padded row length (max of the two sides), one full pass over dataset.

pack_pairs_by_token_budget

Deterministic longest-first batches under budget_tokens; an over-budget pair gets a singleton.

preference_collate_fn

Collate pair records into an interleaved row batch (chosen@even, rejected@odd).

build_preference_data_loader

Build a DPO loader from row-denominated sizes (one pair == two rows), halved here for the stock loader.

Data#

API#

bridge.data.datasets.preference.SCORING_METADATA_FILENAME#

‘scoring_metadata.json’

bridge.data.datasets.preference.REF_LOGPROBS_FILENAME#

‘ref_logprobs.jsonl’

bridge.data.datasets.preference.PAIR_TOKENIZATION_VERSION#

2

class bridge.data.datasets.preference.ScoringFingerprint#

Scoring-run inputs a training run must reproduce; written to and checked against scoring_metadata.json.

dataset: str#

None

split: str | None#

None

tokenizer: str#

None

max_seq_length: int#

None

prompt_key: str | None#

None

tools_key: str | None#

None

tensor_model_parallel_size: int#

None

sequence_parallel: bool#

None

chat_template_kwargs: dict[str, Any] | None#

None

tokenization_version: int#

None

Bumped whenever the pair token streams change for the same inputs, so older artifacts fail the check.

bridge.data.datasets.preference._open_path(path: str, mode: str)#
bridge.data.datasets.preference.REF_LOGPROB_COLUMNS: tuple[str, ...]#

(‘ref_chosen_logprob_sum’, ‘ref_chosen_num_tokens’, ‘ref_rejected_logprob_sum’, ‘ref_rejected_num_to…

bridge.data.datasets.preference.ref_logprobs_from_rows(
rows: collections.abc.Iterable[collections.abc.Mapping[str, Any]],
expected_num_pairs: int,
) → dict[int, dict[str, Any]]#

Validate offline-scorer output rows and key them by pair_id.

bridge.data.datasets.preference._artifact_path(artifact_dir: str, filename: str) → str#
bridge.data.datasets.preference.write_ref_logprobs(
records: collections.abc.Sequence[collections.abc.Mapping[str, Any]],
artifact_dir: str,
) → None#

Write the ref-logprob rows as JSONL to artifact_dir (local or msc://).

bridge.data.datasets.preference.load_ref_logprobs(
path: str,
expected_num_pairs: int,
) → dict[int, dict[str, Any]]#

Load and validate a ref-scorer artifact from path (local or msc://).

bridge.data.datasets.preference.write_scoring_metadata(
metadata: collections.abc.Mapping[str, Any],
artifact_dir: str,
) → None#

Write scoring_metadata.json to artifact_dir (local or msc://).

bridge.data.datasets.preference.read_scoring_metadata(artifact_dir: str) → dict[str, Any]#

Load the artifact’s scoring_metadata.json (local or msc://).

bridge.data.datasets.preference.validate_scoring_metadata(
artifact_dir: str,
expected: bridge.data.datasets.preference.ScoringFingerprint,
) → dict[str, Any]#

Raise if the artifact was scored under different inputs than expected; return its metadata.

bridge.data.datasets.preference.pair_token_lengths(dataset: torch.utils.data.Dataset) → list[int]#

Per-pair padded row length (max of the two sides), one full pass over dataset.

bridge.data.datasets.preference.pack_pairs_by_token_budget(
lengths: collections.abc.Sequence[int],
*,
budget_tokens: int,
max_pairs_per_batch: int = 64,
) → list[list[int]]#

Deterministic longest-first batches under budget_tokens; an over-budget pair gets a singleton.

bridge.data.datasets.preference.preference_collate_fn(
batch: list[collections.abc.Mapping[str, Any]],
pad_token_id: int,
pad_seq_length_to_mult: int = 1,
require_ref_logprobs: bool = True,
) → dict[str, Any]#

Collate pair records into an interleaved row batch (chosen@even, rejected@odd).

bridge.data.datasets.preference.build_preference_data_loader(
dataset: torch.utils.data.Dataset,
micro_batch_size: int,
global_batch_size: int,
data_parallel_rank: int,
data_parallel_size: int,
consumed_samples: int,
num_workers: int = 0,
pin_memory: bool = True,
worker_init_fn: collections.abc.Callable[[int], None] | None = None,
shuffle: bool = True,
seed: int | None = None,
) → torch.utils.data.DataLoader#

Build a DPO loader from row-denominated sizes (one pair == two rows), halved here for the stock loader.