Hacker News new | ask | show | jobs
by aga_ml 1973 days ago
Thanks for your comments. Regarding determinism, potentially a fair point. Here are a few comments: (1) A driver which randomly produces different output when running the network would be valid according to these restrictions. (2) It is conceivable that a driver would produce non-deterministic input with the same hardware. One commonly known example is that tensorflow will run multiple different convolution kernels and then choose the fastest one. In that case, you can run the same network on the same hardware and get slightly different results. Its not that hard to imagine that a mobile driver could do something similar. (3) It's not true that specific hardware will produce consistent results on the same input. You can run a model today, the driver gets updated, and tomorrow you get different output. This happens frequently.
1 comments

All good points! "Non-deterministic" behavior within the same program/process is still a bridge I would not want to cross. This could result in subtle glitches, e.g., when a user hits "refresh" with the same inputs, and could make reproducing bugs impossible.

I am a strong believer in always using a seed for random number generation for exactly these sorts of reasons. (Side note: deterministic RNGs is one of my favorite features about JAX.)

You are paying with performance for the determinism. Any DL framework can be made deterministic (just add few lines of configuration), not just JAX.