test_draft_tau.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """CPU check for adapter/draft_tau.py against a stand-in sampler with the engine's interface."""
  2. import os
  3. import types
  4. os.environ["DSV41_DRAFT_TAU"] = "0.8"
  5. import torch # noqa: E402
  6. import draft_tau # noqa: E402
  7. class FakeSampler:
  8. def __init__(self, folded=True):
  9. self.folded_sampling = folded
  10. self.temperatures = torch.ones(4) if folded else None
  11. def stage_sampling_params(self, *, bs, sampling_info):
  12. if sampling_info is None:
  13. self.temperatures[:bs].fill_(1.0)
  14. return
  15. self.temperatures[:bs].copy_(sampling_info.temperatures[:bs])
  16. def main():
  17. mod = types.SimpleNamespace(DsparkDraftSampler=FakeSampler)
  18. draft_tau.install(mod)
  19. s = FakeSampler()
  20. info = types.SimpleNamespace(temperatures=torch.tensor([1.0, 0.7, 1e-5, 1.0]))
  21. s.stage_sampling_params(bs=3, sampling_info=info)
  22. assert torch.allclose(s.temperatures, torch.tensor([0.8, 0.56, 0.8e-5, 1.0]))
  23. s.stage_sampling_params(bs=2, sampling_info=None) # all-greedy batch: untouched
  24. assert torch.equal(s.temperatures[:2], torch.ones(2))
  25. try:
  26. draft_tau.install(types.SimpleNamespace())
  27. except RuntimeError:
  28. print("test_draft_tau: ok")
  29. return
  30. raise AssertionError("missing sampler class was accepted")
  31. if __name__ == "__main__":
  32. main()