awslabs / sockeye

Sequence-to-sequence framework with a focus on Neural Machine Translation based on PyTorch
https://awslabs.github.io/sockeye/
Apache License 2.0
1.21k stars 323 forks source link

beam_search fix for running with torch.use_deterministic_algorithms(True) #1096

Closed Jehovan closed 1 year ago

Jehovan commented 1 year ago

Context: Pytorch has some bugs related to setting values for tensors to scalars when using torch.use_deterministic_algorithms(True) that were only addressed in most recent Pytorch versions. See:

The scalar attribution in beam_search.forward would throw:

    RuntimeError: linearIndex.numel()*sliceSize*nElemBefore == value.numel()INTERNAL ASSERT FAILED at "/pytorch/aten/src/ATen/native/cuda/Indexing.cu":250, please report a bug to PyTorch. number of flattened indices did not match number of elements in the value tensor31

when running with torch.use_deterministic_algorithms(True).

The change in the PR did not have any changes in performance, but works around the 2 bugs mentioned above.

Testing done:

Pull Request Checklist

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.