Being a software engineer working with AI for a while, I noticed that the engineering of AI systems is different. Well, maybe not building the actual system, but the way in which the knowledge about quality, testing and maintenance differ.
In this article, IEEE Software’s Editor in Chief presents her view on the topic. The main point is that this engineering is both similar and different. This quote from the paper summarizes it nicely: “I argue that our existing design techniques will not only help us make progress in understanding how to design, deploy, and sustain the structure and behavior of AI-enabled systems, but they are also essential starting points. I suggest that what is different in AI engineering is, in essence, the quality attributes for which we need to design and analyze, not necessarily the design and engineering techniques we rely on. “
One of the differences is the process of development. It is not aligned with the non-ML systems, e.g. in terms of training, testing, maintenance. ML systems are data-centric and this needs to be reflected in the AI engineering processes.
Ipek Ozkaya discusses the following misconceptions about the differences:
- We can specify systems – both AI and non-AI systems cannot really be fully specified,
- System correctness can be verified – we can never fully verify systems, neither AI-based on non-AI based (e.g. due to complexity),
- We can avoid hidden dependencies,
- We can manage system change propagation,
- Frameworks do it all,
- We can build reliable systems from unreliable and unpredictable subcomponents
I recommend this article to get a quick overview of the gist of the differences and misconceptions.