Files
alpamayo-qwen05b-validation/tests/test_trajectory_tokens.py
T
2026-07-11 13:08:42 +08:00

40 lines
1.4 KiB
Python

import torch
from alpamayo_lite.trajectory_tokens import (
DiscreteTrajectoryMask,
TrajectoryVocabulary,
dequantize_action,
extract_trajectory_values,
quantize_action,
)
def test_quantized_action_round_trip_is_bounded() -> None:
action = torch.tensor([[-4.0, -1.25], [0.0, 1.5], [3.9, 4.0]])
tokens = quantize_action(action, size=128, minimum=-4.0, maximum=4.0)
reconstructed = dequantize_action(tokens, size=128, minimum=-4.0, maximum=4.0)
assert float((reconstructed - action).abs().max()) <= 8.0 / 127.0
def test_extract_trajectory_values_between_markers() -> None:
vocabulary = TrajectoryVocabulary(
size=8,
start_id=100,
end_id=107,
special_token_ids={"<|traj_future_start|>": 200, "<|traj_future_end|>": 201},
)
sequence = torch.tensor([1, 200, 103, 107, 100, 201, 2])
torch.testing.assert_close(
extract_trajectory_values(sequence, vocabulary), torch.tensor([3, 7, 0])
)
def test_discrete_trajectory_mask_changes_only_trajectory_range() -> None:
input_ids = torch.tensor([[1, 2]])
scores = torch.randn(1, 16)
original = scores.clone()
masked = DiscreteTrajectoryMask(start_id=5, size=4)(input_ids, scores)
assert torch.isneginf(masked[:, 5:9]).all()
torch.testing.assert_close(masked[:, :5], original[:, :5])
torch.testing.assert_close(masked[:, 9:], original[:, 9:])