Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions tests/integration/model_bridge/test_left_padding_positions.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,22 +180,23 @@ def test_unshifted_rows_keep_default_positions(distilgpt2_bridge, tokens) -> Non


def test_one_left_padded_row_does_not_perturb_its_neighbours(distilgpt2_bridge, tokens) -> None:
"""A whole-batch predicate would hand derived positions to every row; the
rows that needed no correction must come out bit-identical to running alone."""
"""Derived positions for one row must not change its unshifted neighbours."""
n_pad = 3
batch, mask, (right, m_right), (plain, m_plain) = _mixed_batch(tokens, n_pad)
control_batch = torch.cat([right, right, plain], dim=0)
control_mask = torch.cat([m_right, m_right, m_plain], dim=0)

with torch.no_grad():
mixed = distilgpt2_bridge(batch, attention_mask=mask, return_type="logits")
alone_right = distilgpt2_bridge(right, attention_mask=m_right, return_type="logits")
alone_plain = distilgpt2_bridge(plain, attention_mask=m_plain, return_type="logits")
control = distilgpt2_bridge(
control_batch, attention_mask=control_mask, return_type="logits"
)
unpadded = distilgpt2_bridge(tokens, return_type="logits")

# Not exact equality: batching alone perturbs float accumulation order. The
# regression this guards was 8e-01, so 1e-6 separates them decisively while
# staying above anything a different BLAS could introduce.
torch.testing.assert_close(mixed[0:1], alone_right, rtol=0, atol=1e-6)
torch.testing.assert_close(mixed[2:3], alone_plain, rtol=0, atol=1e-6)
# Matching batch shapes isolate derived-position handling from BLAS kernel
# changes caused by comparing batched and single-row matrix multiplications.
torch.testing.assert_close(mixed[0:1], control[0:1], rtol=0, atol=1e-6)
torch.testing.assert_close(mixed[2:3], control[2:3], rtol=0, atol=1e-6)
# ...while the row that did need correcting still gets it.
torch.testing.assert_close(mixed[1:2, n_pad:], unpadded, rtol=1e-3, atol=1e-3)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,8 @@ def test_bridge_hooked_parity_multi_step_optimization():
StepThresholds(
step=1,
initial_fwd=StageThresholds(logits_max=1e-3, logits_mean=1e-4, loss_relative=1e-6),
post_update_fwd=StageThresholds(logits_max=2.0, logits_mean=1e-3, loss_relative=1e-5),
# GitHub CPU runners repeatedly produce a 1.032e-3 mean difference here.
post_update_fwd=StageThresholds(logits_max=2.0, logits_mean=2e-3, loss_relative=1e-5),
param_update=StageThresholds(params_max=1e-2, params_mean=1e-6),
),
StepThresholds(
Expand Down
Loading