Non-deterministic AI
Last week I was at ING TechFest, an internal conference. Really enjoyed two days full with learning about new things (I have some reading up to do related to post quantum encryption....), the insights, and the discussions that I had with people I already knew, and with people who I met for the first time.
One statement that I heard before, was discussed (at least) twice. Both during a session about the internal AI platform, and during the keynote of Gergely Orosz. "What about the fact that AI is non-deterministic?"
That implies that in the current world things are deterministic. I would argue: they are not. So, currently we should already cope (and, in a lot of situations, we already do that) with non-deterministic behaviour.
In the first example, the scope was about using AI to create user stories, and there was a question from the audience about the non-deterministic responses from an AI model. Well, if you ask the same question to two colleagues, don't be surprised if you get back two different answers. And if you ask me something today, and the same question some time in the future, I might also respond differently (either because I am just a human, or maybe, I changed my mind for some reason). The question is not whether the response is the same, but whether the responses are good and consistent enough for the context you're in.
The second discussion is one that I see all the time on the Internet as well: code generated by an AI is non-deterministic. That is entirely true. But 'current' code that is written is also non-deterministic; and on many layers:
The application that I am mostly involved with, has a codebase of 1M+ lines of code, 100+ people working on it, exists for 10+ years, and has 1000+ (internal) consuming applications.
In such an environment, the system as a whole does not behave deterministic: things change that are not under your control, that will definitely change the behaviour over time. Sometimes, due to 'reasons' different instances might behave differently every call; and things might or might not fully follow specifications.
Also within the application itself: parts that should work in a certain way, might not always work in that way (and sometimes they will); things will happen.
Even on Java method level: due to things like JIT, the same 10 lines of Java code might behave differently over time. The JIT deciding to optimize a certain method, might result in a faster (hopefully) execution. Maybe (hopefully) the same functional behaviour, but certainly not the same non-functional behaviour. Have you seen incidents occur when your application suddenly became faster? I have...
But guess what, we are already able to cope with this non-deterministic behaviour (to a certain degree), by building our system in a resilient way, compensation for shifting behaviour, and not trusting fully the specifications. AI is changing a lot of things, and we're probably at the start of the change, but the non-deterministic nature of the LLM is probably one of the smallest changes.
