← Back to post

Edit history

Most recent

The function is deterministic, agreed. The implementation is almost always not. Hardware floating point addition is not associative. So a GPU kernel that splits a reduction differently (ie interleaving it with anything else, like running your graphics, or sharing your work with other users on the same hardware) will produce different results over different runs even at temperature 0.0.

Determinism is almost always impossible when dealing with floating point on a multi-process/multi-user system.

There are attempts to create batch invariant language models (github.com/…/batch_invariant_ops) but all the major ones are not.

Edited

The function is deterministic, agreed. The implementation is almost always not. Hardware floating point addition is not associative. So a GPU kernel that splits a reduction differently (ie interleaving it with anything else, like running your graphics, or sharing your work with other users on the same hardware) will produce different results over different runs even at temperature 0.0.

There are attempts to create batch invariant language models (github.com/…/batch_invariant_ops) but all the major ones are not.

Original

The function is deterministic, agreed. The implementation is almost always not. Hardware floating point addition is not associative. So a GPU kernel that splits a reduction differently (ie interleaving it with anything else, like running your graphics, or sharing your work with other users on the same hardware) will produce different results over different results even at temperature 0.0.

There are attempts to create batch invariant language models (github.com/…/batch_invariant_ops) but all the major ones are not.