Edgeimpulse Feature Request, Version Control
The microcontroller industry as a whole faces the challenge of version control for machine learning (ML) and IoT applications, and EdgeImpulse is no exception. While we may not have control over the entire industry, we can explore ways to address this issue within our own platform. Specifically, I suggest implementing a type of ML version control similar to what is used in web development.
For instance, when I create an ML webpage in JavaScript, I always include a specific NPM (node package manager) version to ensure compatibility, instead of relying on the most modern version.
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"> </script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0"> </script>
This technique allows webpages written years ago to still run without issues. Maintainers can change the version to the newest version to see if the page still runs. It is a bit of a catch-22, since the old page will not have any of the new security updates, but the new version might break the page.
Over the past three years, EdgeImpulse has only deprecated my work once, when Arduino made a change to the Portenta Camera library. EdgeImpulse promptly responded with a change to the outputted Arduino export, which was commendable. However, as IoT and ML devices become more popular, the risk of devices becoming unsupported due to OTA (over the air) upgrades to newer versions increases.
It’s surprising that the industry hasn’t addressed this issue earlier, probably because their are so many players involved with production of one product. I believe that PlatformIO has a method of stating the library version to use for each build, which EdgeImpulse could explore. Unfortunately the Arduino IDE has a manual library upgrade system which I don’t think they will be changing anytime soon. By adopting a version control system for ML models, EdgeImpulse could protect itself from similar complaints in the future.
EdgeImpulse has done a good job in maintaining compatibility with updates so far, but it’s important to address the issue of version control as the industry evolves. By implementing a version control system for ML models, we can ensure that devices using EdgeImpulse technology continue to function as intended and avoid becoming obsolete due to updates.
Does anyone have any opinions or is this something that has already been solved by some other method?